In my last post about tech careers, Begin Your Career with the End in Mind, I encouraged you to think about what you want from your time on the planet. I also challenged you to think about your career as a tool to get you to your final destination.
As you launch out from a degree in computer science or a related field, there are five different directions you could go. I’m going to take a critical look at each of these, hopefully helping you understand the options available and decide which types of jobs will help you live your best life.
1. A Startup
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 might 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 self-managing, which means that you’ll mature in your career much quicker. You’ll begin to understand what success factors in your career look like, how to find them, and how to stand on your own merits.
And of course, the age-old story is that startup work can equal a big payout if there’s an exit or a public IPO. Also, a well-funded startup is generally 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 decisions can be short-sighted, leveraging your long hours in an ill-fated attempt to grab more of the market. Leaders can make choices that aren’t good for the product, your team, or your end users. You might be asked to compromise on quality as you’re pressured to get more done and work long hours over and above 40 per week.
As the startup grows, the shares you have as part of your compensation package are worth less and less. The overall share pool becomes diluted by more investors. Eventually, your shares might 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 get 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. You might be asked to work overtime for many weeks on end with the understanding that you’ll be compensated when your shares in the company turn to gold upon exit.
However, the chances that you’ll get a successful exit or that you’ll see a good return on that investment are small. That means it’s likely that your salary (for which you were 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 on their time in the startup world and 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.
2. A Corporation
Corporations are on the other end of the job 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 pretty good. You might even get a bonus or two on an annual basis.
Managers’expectations of junior team members are usually reasonable. You won’t be expected 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 be 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 the cushy corporate job starts to look less and less attractive.
3. Freelance Work
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 per hour would work out to each year, you might start seeing dollar signs.
And 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 8pm, 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 is 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 otherwise, you might be stuck.
Also, when starting out in tech, the most valuable thing you can do for your long-term prospects is to 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 as a freelancer. All the best freelancers I know have a much lower rate, between 60% and 70%. They all struggle to balance doing the work they’ve been contracted to do with going out and winning new work. You also have to handle all your own benefits: health insurance, retirement savings, etc.
As a sole proprietor, it’s up to you to navigate the legal morays 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.
4. Further Academic Work
After an undergraduate degree, many students opt to continue their education. A master’s or doctorate degree in computer science can be a great investment in yourself. You can work on really hard, theoretical problems that move the technology industry forward.
A lot of the meaningful work on the buzzwords of today (read “artificial intelligence” or “machine learning”) is happening in academia. You also get the opportunity to work with very smart minds, and you 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 PhD candidates about what options they see and what their experience has been.
5. A Consultancy
Working at a custom software consultancy can be a great first choice for any software developer. As my colleague Shawn wrote a few years ago (in “Consultancies: The Smart First Job for Software Developers“), they give you a breadth of experience in several areas. At a consultancy, you:
- Work in a variety of industries
- Experience many company cultures
- Develop a strong business acumen
- Gain cross-discipline experience
- Grow your technical expertise
For more on the pros and cons of working at a consultancy, I recommend “The Grad’s Dilemma: How I Found a Software Job that Fits” by Rachael McQuater.
And for more on the skills you can pick up at a consultancy, I recommend “Early Career Advice: Optimize for Continued Learning” by Jason Porritt.
Many Good Paths
As you launch out into the next stage in your life, you have many good paths available to you. That’s a great problem to have! Arriving at such a place at the right time in this job market is a feat in and of itself. Let me be the first to congratulate you in finding your way through your education with such a successful outcome. But as you contemplate your next move, I’d encourage you to think carefully about the type of company you’re jumping in to. In many ways, it will define you and your career for years to come.