When you apply and nail the interview, you often ponder over whether this is the right opportunity. Sources like Glassdoor announce best tech companies to work for every year. The real answer is much more elusive than a developer might think.
Over time, software companies have evolved at much faster rate than their other industry counterparts. This is for obvious reasons because they are often the first beneficiaries of IT infrastructure – Cloud + Internet. Inferring from trends, it is quite easy to classify your prospective software employer into 3 distinct generations. Are you working for a 3rd generation software company?
What is 1st Generation software company?
They often fail to make it to the list of best tech companies to work for, because tech companies have evolved – much better than other industries in terms of career development. But they are still around.
They flout leaders that boast their success from industrial era corporations. They flourished during an era that almost coincides with the time of IBM dominance – and also of Apple, Microsoft, Oracle up to some extent. These companies took pride in their processes. More importantly – these processes were directed at regulating employees – and often lacked what was really required to make software product. The greatness of their products were simply result of few rockstar devs rather than entire teams.
- Rigorous time & activity monitoring
- Some book from 60s-70s era that forms founding principles of software – kept in a company library that no one loans books from
- High quality leather chairs and posh cabins for managers and salespeople – in complete contrast with non-ergo chairs in tiny cubicles for developers
- Endless documentation often on paper. In fact, it is rigorous specification – describing what happens when user’s focus moves out of each textfield – in a 20 fields form fill-up. And you need to write it, most of the time!
- Manual testing is the lantern before lightbulb, and you must embrace it. Development cannot start before 100% green test case review, and integration testing cannot start before 100% green unit testing charts. By the time product reaches end user, specification guy might have retired / died / changed the industry. (not quite though, they used to be quite patient in those days!)
- Documentation followed by review meetings that have little impact on end product / service being built
- You must log every minute of your work – earlier on paper, now in an ugly looking monitoring system.
- ISO audits may make or break your career – make sure your canteen is serving the right food to the auditor, even if it’s not your job.
- Worse, you are evaluated based on what you put there. Honesty is often punished.
- Work estimates are based on number of lines (ewwwww) – and employees are often rewarded based on their code-writing volume history.
- That reward consists of tasks proclaiming greater technical challenge, and quite less often, money.
- As a developer, you cannot browse the Internet unless it is bestowed upon you as a privilege.
- But you get a personal shiny telephone (remember – no mobile!) on your desk. Enjoy!
What defines a 2nd Generation software company?
Precisely, they are Google Generation companies because Google changed a lot about how a software company actually functions. In fact, companies that were born in this era are responsible for articles that analyze best tech companies to work for.
Despite primarily being an advertising company, in its early days, Google provided much more info than they gathered from users, which was close to almost nothing. Due to its lean on content-relevance, it fueled growth of startups with little advertising money compared to other options available at that time. At the same time, it also became an instrument in discovery of communities that held meaningful conversations – Reddit (2005) and Stackoverflow (2008) and Github (2010).
These communities built yet another layer of ultra-modern software tech firms. Since Internet was their birthplace, and since Internet meant democratization of information, these firms reciprocated by liberating their employees from clutches of 1st generation mindset.
Let’s sum up their symptoms:
- Workplace web-browsing isn’t a sin but an important part of daily work-routine.
- Regulated & meaningful web browsing is always welcome, but browsing Kylie Jenner’s instagram feed is still considered uncool during office hours.
- Documentation is OK with minimal size, but specifications are scowled at. That actually puts you – the developer – in a fix because you are assumed to know how things should work, and you must revise it until it pleases your manager’s eyes.
- Meetings are agile, and often describes more than what is in source control.
- Bottlenecks are hated, and emphasis is often “Get whatever gets the ball rolling” rather than going for “all-serving generic solution”
- If you do not show up on that bi-weekly beer party, you are labeled as out-of-culture, and you must fix it.
- Working remotely is OK, with acceptable excuses (sick child) and everyone knows it is your spouse wanting some quality time with you. <Wink wink.> (Movie theaters are often packed with remotely working bosses :)). </Wink Wink>
- Software processes are replaced by agile workflow processes, and you are still judged on Story points you complete – irrespective of how those story points were initially allocated.
- Scrum Master is a role even in smaller teams, and if you miss to advance a JIRA ticket or submit Pull request, you are the woman who committed adultery, and must face stones from every bigger sinner.
- They take greater effort in knowing what keeps you happy. Perks take precedence over salary figures, and you are often asked if you like your tech stack, though nothing is guaranteed because these choices are often made by business needs.
What defines a 3rd Generation software company?
Companies like Google who transformed the way people work often saw shortcomings in 2nd Generation companies, and began devising ways quite early in their life cycle to alter how tech employees are treated. As a result, we have 3rd Generation software companies – they exist not by names but by culture they exhibit.
- Little or no rules around company assets – at least tangible ones – inside the office space: stationary, internet, gym, cafeteria, game room. The list extends based on whether company is 7 figure or 10 figure.
- Facebook and Google are already known to provide great perks, but so many of them provide for your kid’s education too. Just check the list that includes familiar names like Paypal, Twitter, Airbnb, Intel and LinkedIn. Most of them consistently make it to the list of best tech companies to work for.
- They all possess central repository of knowledge that one can build upon – pre-built software libraries and frameworks that one could readily use. Each of these uber-cool companies have their sizable Github presence, including Google, Facebook, Apple & Microsoft.
- You can shift attention to projects that interest you. Google reluctantly killed its 20% pet-project time, but Google was never alone. As far as you do not falter on your delivery dates, often, this allowance exists without announcement. That’s how open source thrived. And that’s how you acquire newer tech skills through online learning.
- Remote anywhere: Now this is where it gets exciting, and you could call it Gen 3.1 if you want. Their infrastructure allows one to work from anywhere in the world. And this is not just couple of days per week work from home advantage. It’s for lifetime. Working on Thailand beach is no longer a new fad. While this may or may not apply to giants, there are bunch of companies that only exist on the cyberspace – Automattic, the company that created wordpress leads the pack.
- You are responsible for choosing your workplace based on cost of living, and company provides you with the stipend. Heck, you can also livestream what you do while living offshore.
- There is little or minimal work-hours tracking. But some friendly collaboration tool always tracks you – be it skype for business, Microsoft Teams, Slack, or P2Theme – also used by makers of WordPress.
- Be ready to travel at least once in a year to meet with your international co-workers to really feel the culture.
So where is the catch?
- You maybe already wondering how to get into fully-remote company – that’s where noose gets tighter. They all have rigorous 4-8 weeks interview system that involves project work (often in a team) to evaluate if you are really fit for working independently. Beyond this, the entire process is not-so-transparent, because exceptional devs rarely blog / brag / fret about their remote heavens and hells. And that’s what make them the hardest aim on the dartboard.
- There are fully remote firms that are worse than 1st Gen process monsters – such as bodyshop like GTeam (Devfactory). They exploit devs off freelancer platforms – you are waiting for a boring 3-4 rounds of tedious technical evaluation – some tests where you can google answers, and some weird IT project that you could fail / make for 1000 reasons. Bottomline? All decisions are completely non-transparent with respect to hiring and firing people.
- Requirements are often high-context, meaning that you understood them from single line (“Implement single sign on mechanism”). If you cannot code without Google, no luck asking a coworker, too, since every minute of your time is billed. Anything that is far from product team’s expectation can get you fired.
- If entire team is remote, your entire presence is what you accomplish in terms of your software delivery. Your presence in a company is defined not by the person you are, but by the developer persona you represent. Good luck being proud of your work.
All 3 generations of tech companies can be summed up with a simple illustration, and you must find a sweet spot that best describes your desired company.
If you start plotting companies on this wen diagram, you will notice that most of the best companies to work for will fall in intersecting areas that coincides with your own developer persona – that is what makes the whole thing human – you can’t classify them perfectly – not always.
Aim of software is to help humanity, not replace it. My best bet is neither 2nd nor 3rd gen software firm, but something in-between: A Third gen software company that offer freedom for innovation, but just enough automation to retain touch with humans; without it, I can never aim to understand software products better.
All said and done: there exist programmers dissatisfied with their roles at Google too. “Best tech company to work for” is not just some general stats that you read before going for interview, but a personal choice.