Contracting vs Employee vs Freelance?!

July 31, 2015

I’ve always been adamant about the fact that I have only so many working years in me. Maybe another good 30 years? Maybe only 20? Maybe 40? It’s hard to say without a crystal ball to tell me my future.

In the development world there are definitely no shortage of opportunities, and with so many different directions that you can go in, it can often times leave people not knowing what they’re missing or they get comfortable doing one thing and don’t broaden their horizons. I’m talking about Contracting vs Employee vs Freelance. With having a finite number of working years, it would be best to try and see if there’s one type of employment you prefer earlier rather than later. Happiness and all, you know.

Having personally done 2 of the 3, I can say so far, they all have their pros and cons.

Employees get (usually) treated with more respect at the organizational level, but tend to make less money than say Contracting. This obviously can change if you’re able to land a decent high base salary development gig, but I’ve only encountered maybe 2-3 in the hundreds of opportunities that have been in front of me where the compensation is comparable. Most often, people don’t average their actual hours worked vs compensation and so there’s an even bigger financial loss than realized. Employees will however, usually be given different bonuses and/or perks, possible training or ownership options with a company and be able to buy possibly stock at a discount. Then you also have the ability to move up in the ranks of the company. So you end up playing more of the long game depending on your goals and ambitions.

Freelancing can be good, if you have the knack for it. I sort of did. However, I found it to be a bit stressful when clients were very late in payments or would delay projects. Not only would my scheduling get all messed up, my finances would start taking a hit too. Not too fun when you have a family to support. Freelancing on the side however, can be a great way to make some extra cash while learning some new technology or creating a new platform.

Contracting (Staff Aug. specifically) has been what I found to be the almost like a combination of both worlds. I get paid hourly while still having the flexibility to work on cutting edge stuff and having the ability to work both remote or in-office. I 99% of the time run things as Corp to Corp. so that I can at least get the tax advantages that come with having a business. You aren’t treated the same as employees, and nor should you be, but I found that if you have a good personality and ability to connect with people, as I feel I do, this can really be the best of both being almost and Employee but getting paid for every hour worked. I really enjoy when companies allow me to work more than 40 hours, just because hard hourly stops don’t make sense to me and there’s always more work to do than a simple 40 hours. I tend to prefer going between 50-70 hours per week with times of doing just 40 to doing a few months of extra hours. But when you’re passionate about development, the hours melt away like nothing. How many times have you looked up at the clock and said, “Crap! It’s already 4pm!”.

I recently saw this one web site called TopTal and decided to apply to see what it’s all about. It’s a Web Engineers Network, or at least that’s the area that I’m submitting to. It looks like an interesting approach, rather than the typical “Hey, I’m a recruiter, here’s job XYZ followed by a list of Do you know this and that.” It looks like TopTal actually technically screens candidates properly, with people who actually understand and/or are actual programmers. If anything this should make connecting with better companies much easier, as they know technically you’ve already been screened. I look forward to seeing what opportunities something like TopTal opens up should I move forward and be accepted in their system.

The take away from this, is regardless of what route you choose to go with, at least understand the pros and cons of the different employment options in this field. If you can try doing a few of the different employment options, I highly suggest it. You’ll meet new people, learn new things and most of all, you’ll get to experience some different parts of life that you may not even realize how much more you like it.

My Preferred AngularJS System Structure (Repo Inside)

March 5, 2014

Having used AngularJS for some time now, I must admit that I really prefer a combination of different folder schemas for the project. I’ve created a github project for my schema at https://github.com/SBero/angularjs-start-repo

After stumbling upon John Papa’s Hot Towel Angular (and not really being a big .NET guy myself) I preferred to change things up. I took his layout and some of his front end enhancements, and combined them with the angular-seed-repo on github, changed up the theme to more of my liking for a build to start with on my projects.

In general, this allows me to start my projects with an excellent starting point and get right into building the core application. I’ll get around to pushing out an IE8+ compatible seed as well. You can go follow the angular-seed-repo guidelines for starting up the node.js server and to serve up a local server to the front end. There is also all of the testing integration from the angular-seed-repo so that you can have your end-to-end tests.

I would eventually like to integrate the following:

  • BreezeJS – dynamic updating with a server. brilliant.
  • Chart.js – amazing charting library. very cool.
  • Animate.css – some pre-defined library of animations.
  • Formula.js – do formulas in the browser 🙂
  • Bootbox.js – makes bootstraps modal windows easier to use.
  • Chardin.js – simple, yet beautiful overlays with instructions.
  • SimplePagination.js – great javascript pagination library.
  • Echo.js – lazy loading of images. a must.

Having all of this working in a base app will make doing nearly any online web application project feasible without having to put this all together and lose 2-3 days of time in the process. Just determine which libraries you actually need, remove the ones you don’t need from the index.html file, as well as any associated files, and your good to go. Obviously some of them are required, however, those will be marked.

 

Travels with AngularJS

January 21, 2014

Speed of development is essential with web application development. Not to mention, if you aren’t careful your code will end up in a big mess in no time. Abstracting out highly identifiable layers in the front end development process can be not only tricky, but very cumbersome and difficult to maintain. Having recently tried developing a personal project I’ve been working on, only to stop and realize that the front end of it was becoming so complex, I could barely follow it while developing (damn you JavaScript!!). I had made my flowcharts ahead of time, reviewed them, re-reviewed them, only to hit this stopping point and realizing that there must be something better out there.

I thought I’d start by looking at a few of the MV* frameworks, such as Knockout.js, Backbone.js and AngularJS. I had used Knockout.js at the office somewhat, but found that it wasn’t what I was looking for. After developing my Ruby and Ruby on Rails skills over the last few years, I wanted something that was very fast for development all while allowing maximum control. Something that wasn’t overly verbose, and could accomplish everything I needed to develop on the front end.

Next up, I tried Backbone.js. Just a simple multi-field forms code was quite long, and I was still looking for something more concise. Hello, AngularJS.

I had once looked at AngularJS at the recommendation of a colleague, however, I didn’t initially grasp the API concepts documentation, didn’t want to waste development time on it at that moment and didn’t come back to it until I hit this project road block, as the entire back end of my project is now completed in Rails. This time however, without any distractions I dove right in. I found the exact resources on YouTube to explain the basics, followed by signing up for some video training on it. Within a week and a half, I was ready to go.

It was a slower start initially, making sure things were setup correctly, cross-checking my code with the API documentation that I now understood, first utilizing it on a work project which could only be completed in the compressed time frame I had available with the power and speed of AngularJS. I had a fall back plan in the event something didn’t work out as intended, which gave me only 4 days of working time to figure out if I could truly utilize AngularJS in the way it was meant to be used. I tired effortlessly until I had the skeleton on the application setup and functioning, and from there everything fell into place. I did in 3 days, what would have taken close to 3 weeks if doing it by Vanilla JavaScript and jQuery. I had multi-line fully dynamic forms with AngularUI (BootStrap UI AngularJS Compatible framework) and a fully responsive BootStrap 3 layout, with the ability to dynamically swap out the theme on the fly. I had a user account authentication system setup and working. The project didn’t require the use of any custom written directives, however, I’ve done the studying necessary to know when I would need them more.

As I continue to work on my personal project with AngularJS, I find a lot more satisfaction in working on the front end. Having a wonderful layout system and theme setup from BootStrap makes the development process a lot more enjoyable as well. It’s not, first build it out, then style it out. It’s now baked right in from the start.

If you’re looking to really try out AngularJS and see how it can enhance your front end project, I highly suggest looking at this YouTube video that greatly helped me.