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. It is quite easy to classify your prospective software employer into 3 distinct generations. The 1st generation software companies often fail to make it to the list of best tech companies to work for, because they have evolved — much better than other industries in terms of career development. The 2nd generation companies are Google Generation companies because Google changed a lot about how a software company should function to be more efficient.
Programmer, Writer, Education Engagement Enthusiast, Tech Career Blogger at Tipsnguts.com
Best tech company to work for in 2019 is — as always — illusive
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
Oak cabinets filled with books from 60s-70s, narrating some founding principles of software — no one loans books from this library, but they are always there.
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. They are often documented inside excel sheets, and worse, they are always emailed within the team, but rarely versioned!
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 / CMM 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 (ewww…) — 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 should function to be more efficient, if not effective. In fact, companies that were born in this era spawned discussions about best tech companies to work for.
Eat this: 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 leanings 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), 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. And being uncool is more shameful than facing a ban.
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 the 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 workflows, 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 developer heavens 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 — even at workplace.
Remote anywhere: Now this is where it gets exciting, and you could call it Gen 3.1 if you want. Their infrastructure allows devs 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 always face that sweet choice of 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.
Recruiting reps are puppets, uhhh, chatbots.
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.
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 — a lot of them are. “Best tech company to work for” is not some general stats that you read before going for interview, but your personal choice.