Skip to main content

On Companies and Career Paths – a Personal Overview

Starting a career in computer science is hard enough, and landing with a good company is mostly down to luck. I won’t argue with that: you do need plenty of luck to get off to a good start. My aim is simply to show where the train you’ve just boarded might take you, or might not. Switching trains is always possible, but it gets harder with age.

At a high level, companies fall into two main categories:

  1. Product Owners: Companies that build products for a real market. They either sell software or offer services to individuals or businesses through infrastructure they manage themselves.
  2. Outsourcers: Companies that sell “work units”, directly or indirectly, to product owners or to other businesses.

There are nuances here, and government contractors and start-ups arguably deserve categories of their own.

What a fresh graduate can expect

  • Product Owner

    • You can gain deep knowledge, though it’s limited to the company’s particular product area.
    • Few corners get cut, and you may sometimes apply advanced topics in your daily work.
    • Pay depends on the company’s profitability, and good bonuses are possible.
    • The downside: it can be hard to move to another company, because you become “entrenched” in a narrow set of clever solutions that may not be useful elsewhere.
  • Outsourcer

    • You learn many unrelated or loosely related topics, but none in real depth.
    • Projects last from a few months to a year at most, leaving no time to learn to do things well.
    • Much of the work is fixing other contractors’ code while adding technical debt of your own. You won’t care, because you’ll be gone in 3 to 6 months.
    • You’re effectively paid by the billable hour (even if the company covers time between projects). Success earns you nothing extra, and failure usually just means another project assignment.
    • On the plus side, moving to a similar role is easy: you know a lot of things, albeit shallowly, and you’re almost certain to use some of them at your next company.
  • Government contractor

    • Expect a stable environment with few perks and sometimes below-average pay.
    • Effectively, these are outsourcers with one large customer who, for all practical purposes, owns the product being developed.
  • Start-up

    • Start-ups own their single product, and your experience depends largely on the initial budget and the market competition.
    • They are mostly about losing time and money: time through work/life imbalance, and money through lower pay than comparable skills would earn at a “normal” company.
    • This statistically evens out on the rare occasions when someone strikes a bonanza in the gold mine, meaning the product or business sells for good money.

What an experienced, mid-career person can expect

  • Product Owner: In some cases, it can fill the knowledge and experience gaps needed to reach a higher position, whether in architecture, management, or sometimes a better-paid role at another company.
  • Outsourcer: It may serve as a stepping stone to independent contracting or full entrepreneurship. Career progression in the style of a product-owner company is sometimes impossible because of how outsourcers are organized.
  • Government contractor: Usually offers little more than an easy path to retirement.
  • Start-up: Outcomes range from a premature end to your career, or being stuck in a dead end or set back for years, to the best case of getting rich and completely redefining your life.

So, where to?

Back to square one: luck. And prepare well, so that you can choose the train you want to ride rather than just taking the first one that passes through your station.