Dear new developer,
I suggest that the first job you take be the one with the highest learning potential, not the highest earning potential. (This post contrasts the two, in the context of entrepreneurship.) This can vary depending on your skills and needs, but I’ve seen over and over again that you learn more with one or more team members than you do alone. Other technical people working on the same problems, even if they are new as well, will elevate you.
They’ll bring a world of difference that you can learn from, including (but not limited to):
- technical tools
- understandings of the problem
As you work with them, try to understand where they are coming from and appreciate it, especially as it relates to solving the problem. Building this empathy for others is really really important.
Now, what can you do if you get hired and are the only technical person on staff (either as a contractor or employee)? Luckily, understanding others and building empathy doesn’t just work with developers, so you can work on that aspect, even though the problems and language may be a bit further from your comfort zone. As far as learning differences in technical tools, I suggest you join a meetup or an online community or both.
Dear new developer,
You have a portable skillset; most every company needs software, just like everyone needs accountants.
You have a “means of production” that only costs a few thousand dollars: your laptop.
You are in demand (as long as you have the right skills, experience and salary expectations).
Please take a chance during the first decade of your career and try contracting.
There are two paths to contracting. The first is where you go through an agency and they place you. The second is where you contract directly with a client. Each of these paths is different.
The agency path is easier. The agency finds the work, treats you as essentially an employee, and sends you to client work. However, you’ll get paid by the hour and you’ll have the chance to see into a number of different companies without making the commitment of being an employee. (It’s been a few years since I did this so the model may have changed slightly.). This can be a good experience, but it can also be frustrating as you will likely not be treated as well as a full time employee (FTE) while on this contract. This treatment is assuaged by more money and freedom.
The direct to client path is harder, but worth more. Here you will learn all kinds of skills not directly related to development. You’ll learn about sales, about customer support, about requirements gathering, about invoicing and getting paid. All these are fantastic additions to your toolkit. If nothing else, they’ll give you an appreciation for all other company departments, because when you are a client facing contractor, you have to perform all their job functions for yourself. Getting this business running will take longer than just calling an agency, passing their interview, and getting placed at a client. The plus is you’ll have a lot more control and you will likely have more income.
Even if you want to stay a full time developer for the rest of your career, a stint as a contractor can expose you to new ideas, let you gain new skillsets and give you an appreciation for the work that other departments do (man, sales is hard!).