Trying to start a career in a Computer Sciences field is a challenge by itself; starting with a good company is, most of the time, a matter of luck. I’m not trying to provide an alternate view to this – yes, one needs a ton of luck in order to get on with a good start. I’m just trying to show you where the train you just boarded may lead you – or where it may not. Switching trains is by any means possible, but it becomes harder as one gets older.
Without looking in depth, companies may be divided in 2 main categories:
Product Owners: companies that build products for an actual market; they either sell software or provide services to private or business users through their internally managed infrastructure.
Outsourcers: companies that sell “work units” directly or indirectly to either companies from the first category or to other businesses.
There are nuances to this classification; government contractors and start-ups may actually deserve categories of their own.
What can a fresh graduate expect out of each company type?
From a Product Owner there is a lot of in-depth knowledge to be acquired; unfortunately this is limited to the particular product category the company works on. Very few corners may get cut; sometimes one may apply a lot of advanced topics to the actual, day to day work. The compensation varies with the company profitability; sometimes good bonuses may be earned. Unfortunately moving to another position (in a different company) may be really hard due to getting “entrenched” within a small subset of really smart things that may be of no use with another workplace.
From an Outsourcer one can learn a lot of unrelated (or loosly-related) topics, but none to any real depth. Due to projects lasting from a few months to at most one year, there is no time to actually learn to do things in a very good manner. Most of the work is fixing code from other contractors and adding more technical debt yourself. You will simply not care about that because you won’t be around in 3 or 6 months. Compensation-wise, you are effectively paid by the billed hour (even if the company covers for your off-project time) and do not gain anything for success while the failure usually means that you’re only given another project. Moving to another, similar position is easy: you get to know a lot of things (in a really shallow manner, though) and it’s basically guaranteed that you’ll apply some of those things at the next company.
With a government contractor you may expect a stable environment with very few perks and sometimes less than average pay. They are, at the end of the day, outsourcers with a single (large) customer and – for all the practical matters – own the particular product they are developing.
Start-Ups own their (single) product. The experience of working for a start-up is mostly impacted by the starting budget and the actual market competition. They are mostly about losing both time and money: time from the personal/work life imbalance, pay from the wage difference reported to what can be earned with comparable skills from a “normal” company. This statistically evens out with the very few times when one discovers the bonanza within the gold mine (the start-up product or business gets sold for good money).
What can an experienced, mid-career person expect out of each?
The Product Owner company may, in certain cases, fill the knowledge / experience gap required to get to a higher position, be it in Architecture, Management or (sometimes) to another better paid position within another company.
The Outsourcer may be an intermediate step to an independent contracting business or to full fledged entrepreneurship. Career progression in the sense of a “product owner”-type of company is sometimes impossible due to the way the outsourcers are organized.
Government contractors usually offer just an easy retirement path.
Start-Ups may offer anything from the negative outcome of a premature career ending to just getting stuck in a dead end or being set back for years – to the extreme positive scenario of getting rich and being able to redefine your life completely.
So, where to, you may ask? Going back to square one: luck. Oh, and prepare well in order to be able to choose the train you want to ride, not just to get the first one that passes through your station.