What it is like to work in big tech
Introduction
As a uni student, I idolised bigtech in Australia like Canva, Atlassian and Google. I was living on cup noodles and when I felt like spending money would buy canned tuna to add to it. Life was good, I had fun with my friends joking around and learning about the wonderful world of programming through Github. I dreamed of joining a company like Canva where they had indoor rock climbing and catered food working with Australia's best programmers. Fast forward to today and I have spent two years of my life working at Atlassian, it has been the most challenging and rewarding experience of my professional career so far.
The word bigtech for me refers to the small group of software companies that dominate the software industry in their country. America has many examples such as Netflix, Google, Airbnb, Uber, Apple, Microsoft, AWS et al. But there are others around the globe like Bytedance, Stripe and Atlassian. These companies tend to have over 10,000 software engineers and offer generous compensation with stock and work benefits. They also shape the venture capital industry as investors bias towards companies that can one day become the next bigtech in their country.
Are programmers different in big tech?
This was a question I always wondered before I joined. I thought they must have something special to join because the interviews are so tough and they get paid so much more. After spending a lot of time from junior to senior principal engineers I can say there isn't a lot different. I wouldn't say they have substantially higher IQ or anything like that but I do observe two key differences that allows people to break into and do well in these highly competitive institutions. People tend to either have more discipline or are more passionate about programming. I would say majority of people belong to the first camp, they tend to be the A students in your class and just study a bit more, you also get the odd programming enthusiast and they tend to be the best programmers.
I will expand a bit more on the first camp which makes up the majority of people in big tech. By being more disciplined or squared away this manifests itself in other facets of life, they tend to be healthier both physically and emotionally. This also benefits work because they are more self motivated and can complete tasks and come up with new ideas to solve problems without anyone telling them to do it.
The most impressive thing about big tech
It is the innovation, when a company makes a lot of money per employee they can provide them a lot of freedom. At Atlassian employees can dedicate 20% of their time to building and studying whatever they want. The other aspect is the ability to hire an immense amount of engineers and pay them more than what they expect. With this freedom, passion, discipline, hiring power leads to incredible innovations. Most new popular software was created within the walls of bigtech because of these factors, for example, Docker, Kubernetes, React, Go, Angular, TensorFlow, Protobuf, GraphQL, VS Code, Swift. Of course there are plenty of examples created by individuals and smaller companies like Linux and Vue but I think there is something special there for these companies ability to create industry leading software and I believe the reason is from the factors I noted before, freedom, passion, discipline and economics.
The worst thing about big tech
It is its size, I don't think humans were designed to work with a large number of strangers. We like to build close relationships with a small number of people but this cannot happen in a large company. The consequence is that they tend to become "corporate". To me this means competition and self preservation amongst individuals. It becomes more effective to signal that work has been done then to actually do work. This phenomenon happens because managers are so far removed from the day to day it is difficult to connect with each of their reports. Therefore they rely on self reporting to understand the performance on their employees. I believe this makes a lot of people feel unfulfilled in big tech and so after 10 years they have had enough and want to do something else that is more engaging like starting a small business selling pot plants.
Things can get hostile and counter productive, teams tend to push away work from other teams unless their manager tells them this will look good their performance report. This makes it difficult to work with anyone else besides your immediate team. There is also a lot of confusion about everything for example what is good and not good for your performance report? What are the current priorities for my team? What team is responsible for what? Even though some leader might of clearly explained it at some point it is easy to miss this when their are thousands of people and so myths start to arise on what is important, for example people might start thinking making a lot of pull requests would be good but actually the person who judges your performance views it as a red flag when there are too many pull requests.
So paradoxically despite all the innovation that comes out of large companies there is also and incredible amount of wastage of talent and I think that is what drives people out.
How will AI impact big tech
AI is changing the way we program rapidly, it will replace people who are overly specialised such as React programmers. It is making it easier for people to write React code and we are already seeing less jobs in that area. I think AI will not replace many bigtech jobs because the main challenges are usually a lot more complex. They either involve a deep understanding of the business domain which can be vast because of the number of people that have worked on it, think about how many features Jira offers or deep technical problems like trying move big data around while satisfying data residency and adding fault tolerance. I am not saying AI won't replace their jobs one day but it will replace people making simple web apps first. Today an AI programming still struggles to parse all the relevant context and output high quality code that an experienced engineer would write. This could be due to the fact that most code it is trained on is open source or simple apps so it lacks the depth, and remains a great autocomplete tool.
Another important point is that in big tech we don't always spend a lot of time coding. Far more time is spent understanding the context and figuring out what the problem is and how to solve it within the sprawling code base written by thousands of engineers and thousands of services that interact with one another. A simple task like trying to debug an error in your service can quickly turn into a multi hour hair pulling endeavour trying to dig through the code of an unfamiliar service because it is returning an unexpected status code.
Conclusion
The best parallel to me of bigtech is like going to university but you get paid to learn. It is the best place to improve your programming skills because programming knowledge there is so deep, there are distinguished engineers with decades or knowledge in complex, high latency, mission critical systems. I don't think you could be deeply satisfied if you value human connection so you should leave after you have had enough.