In my last post about career evaluation, I wrote about how you might take stock of where you are relative to where you’d like to be at the end of your working life. In this post, I’d like to look at choosing a career path to get started in the technology industry.
I’d like to propose five different archetype directions you could go in as a developer. This will help you to quickly understand the developer careers available to you and enable you to decide whether those types of jobs will help you live you become the best professional you can be.
Working at a startup can be fast-paced and exciting. You get the opportunity to work with smart, motivated people. In a team context, you will probably get the opportunity to work on a small, close-knit team.
Generally, management structures are in flux at early and mid-stage startups. Working in that type of environment offers you the opportunity to be largely self-managing. Being self-managing means that you’ll mature in your developer career much quicker. You’ll begin to understand what success factors in your career look like, how to find them and you’ll learn to stand on your own merits.
And of course, the age-old story is that startup work can equal a really big payout if there’s an exit or a public IPO. And, generally, a well-funded startup is flush with cash and anxious to scale quickly. Because a well-funded startup can work on a different economic model than other businesses, an above-market salary wouldn’t be out of the question.
But startup life also has a dark side. Once a startup is VC-funded, its mission changes. It’s no longer about creating a great, meaningful product. It’s about getting those VCs to their payday. Leadership can make short-sighted decisions, leveraging your long hours in ill-fated attempts at grabbing more of the market. They can make choices that aren’t good for the product, your team, or your end-users. They might ask you to compromise on quality as you’re pressured to get more done and work those long hours over and above 40 hours a week.
Conversely, as the startup grows, the shares promised as part of your compensation package are worth less and less as the overall share pool becomes diluted by more investors. Eventually, your shares might essentially be a lottery ticket. That’s a real bummer because you worked long, hard hours in exchange for those shares. That’s a big investment on your part! But now you need an astronomical exit to see a good return on that investment. You might want to consider Powerball. The initial investment is smaller. ;)
The even darker side is all too common in the tech startup world. You would most likely invest significant time, effort, and even money in a startup. Management might ask you to work over and above a 40 hour week for many weeks on end with the understanding that they’ll compensate you when your shares in the company turn to gold upon exit.
The chances that you’ll get a successful exit or that you’ll see a good return on that investment is really small. That means that it’s likely your salary (contracted for 40 hours a week) is the only compensation you’ll get for that over and above time. I’ve spoken to engineers who looked back critically on their time in the startup world. Some were sad to admit that, because of the many uncompensated hours they worked, they ended up making less than $10 an hour for several years of their career.
Corporations are on the other end of the developer career spectrum. You work on large codebases on large teams. New developers have a lot of time to gain footing in what might be a new technology and profession.
The pay is usually on market and the benefits are probably pretty good. You might even get a bonus or two on an annual basis. The expectations of junior members held by managers on teams are usually reasonable. Management won’t expect you to work over and above 40 hours a week very often. In a large organization, you’re also usually pretty isolated inside engineering infrastructure. You don’t have to deal with the worry and distraction of the business side of the organization.
And therein lies a big problem with working in a large corporation. As a professional, you’re isolated from the business. The importance of your job varies according to the success or failure of the business. If your job isn’t crucial to the survival of the business, guess who could be next on the chopping block? You could perform well for years, even a decade or more, only to get laid off when someone in a business unit in another city or country decides your team is no longer needed.
During that time, you’ll probably get locked in a technical prison, working for years on a single project in a single technology stack. I don’t know about you, but working in one technology on one problem for years on end sounds pretty tedious. It would be pretty easy to wake up one day 10 years into your career only to realize that the market for your skills has become obsolete. Combine that with the possibility that you could get laid off after spending your best professional years toiling in a cube and a cushy corporate job starts to look less attractive.
Going freelance can sound really attractive. Demand for development talent is at an all-time high in the technology industry. Once you start doing the math on what making $70, $80, or even $100 an hour would work out to per year, you start seeing dollar signs.
Freelancing offers more than just financial gain. You get to be the captain of your own ship. You might be able to work when you want and how you want. If you want to work from noon to 8 p.m., you can. If you want to head out to the beach on a good weather day, you can do that too.
Depending on the project, you might be able to make all the technology choices yourself. You can choose how fast or slow to move and managing client expectations are all up to you.
But working as a freelancer at any point in your career also has some hidden costs. It can be lonely. When you get stuck on a thorny problem, you’re on your own. There’s no wider brain trust to consult. If you know how to formulate a query to find help on Google with your problem, you might be in luck. But if you aren’t able to frame the problem in a queryable way, you might be out of luck.
Also, when starting out in tech, the most valuable thing you can do for your long-term prospects is work with seasoned professionals who have a decade-plus of experience. Their understanding of the craft will allow you to grow and thrive at a much higher rate than you would be able to do on your own.
On the financial front, the sad truth is that a 100% utilization rate is really hard to achieve. All the best freelancers I know have a much lower utilization rate between 60% and 70%. They all struggle to balance doing the work they contracted to do with going out and winning new work. You also have to handle all your own benefits: health insurance, retirement saving, etc.
As a sole proprietor, it’s up to you to navigate the legal morass of statements of work, master services agreements, billing, and accounts receivable. If a client decides not to pay you, what will you do? You might have a contract in place, but how will you enforce it? You might find yourself on your own against a large company with a legal department.
Being a freelancer can be great and profitable while offering a lot of freedom. But it isn’t all fun and games. It’s very hard, stressful work. Ultimately, I don’t think it’s a great place to start a career in technology.
After an undergraduate degree, many students opt to continue their education. A Master’s or Doctoral Degree in Computer Science can be a great investment in yourself.
Mix of Pros and Cons
You can work on really hard, theoretical problems that move the technology industry forward. A lot of the meaningful work in the areas of the buzz words of today (read “Artificial Intelligence” or “Machine Learning”) is happening in academia.
You also get the opportunity to work with very smart minds. Not only do you get to work with smart minds, but you also have the possibility of forming them if you get into teaching.
In general, the pay isn’t great. But if you can make it to a certain level of tenure, you can find some degree of prosperity and security. I’d encourage you to talk to some of your professors and Ph.D. candidates about what options they see and what their experience has been.
Consulting or Agency Work
Working at a consultancy at the beginning of your career is an interesting possible choice. My colleague Shawn Crowley wrote extensively about this option in 2015. While I agree wholeheartedly with many of Shawn’s points, I have heard some downsides from people I manage over the years.
Mix of Pros and Cons
At a consultancy, you are usually jumping from problem to problem and technology to technology every six to 12 months. This change is a positive for many people. However, I’ve heard engineers voice concern that they are becoming a jack of all trades and a master of none with this modality. They lack the opportunity to go deep in a specific problem space and never truly gain mastery over an area of technology. Having multiple years in a single technology stack or being able to focus on a single layer in that stack may be great for some. If one was to jump into a consultancy at the beginning of their career, they might not get to experience the state of “being a master.”
In my experience, there are some downsides to long-term specialization. First, technology is constantly shifting like sand in the Sahara Desert. The value of time spent investing in the mastery of specific technology can quickly disappear because a hot new thing was released. Now the old thing is “no good,” and all that time and energy invested in it is gone. Hopefully, you’ve learned lessons in the interim that you can take advantage of, but that’s not always the case. For example, being a master of Ember.js in 2022 isn’t what it once was. Ember went from being everywhere to nowhere quicker than your Next.js project will compile and deploy!
Another thing I’ve noticed over time is that the concept of “mastery” over an area of technology isn’t real. It’s a mirage. We think we’ve seen it, but it’s really just a product of our own illusion. Our own imposter syndrome signals to us that another person is a master with deep knowledge that we don’t have.
The truth is that the other person does have knowledge we don’t have. But we also have knowledge they don’t have. We are both incomplete non-masters in need of what the other has. And isn’t it better to be interdependent with other people than completely alone and independent?
And really, I have yet to meet a master who is completely knowledgeable and self-sufficient. The more engineers I meet at varying levels of experience, the more I see great and varied ideas, value, and productivity. More experienced people can get to solutions to problems faster, but less experienced people often come up with novel solutions to problems. Both are excellent.
Developer Careers: Many Excellent Options
Ultimately, we are very lucky to work in technology when we do. A variety of fair-to-excellent options are available to us. It often boils down even further into who we’ll do the work with and what the work will be. I’ll expound on how to get to the bottom of that before you start a new job in my next post.