Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves — Alan Kay.
The grass is always greener on the other side because it's usually fertilized with bullshit — Unknown
In the world of software engineering, working in large tech companies can be a dream come true. Talented co-workers, exposure to new technologies, and an attractive salary are just a few of the benefits that come with it. However, there are unique challenges that come with working in big tech companies, which can be difficult for many software engineers who are not familiar with the environment. In this post, we will discuss some of the unique challenges you may encounter in big tech companies and provide tips on how to adapt to them.
Challenge #1: Culture shock
Cultural fit is an essential factor in the hiring process for many companies. Employers look for candidates who share their values, work well in their environment, and can contribute to their culture positively. Hence it's important for new employees to learn and understand the company's culture to fit in and thrive in their roles.
Adapting to a new work culture requires more than just understanding the company's values and mission; it involves learning how things get done, understanding the norms and unwritten rules, and building relationships with colleagues.
A helpful tip for new employees joining a big tech company would be to seek out a mentor or a buddy who has been with the company for a while. This person can provide valuable insights into the company culture, offer guidance on how to navigate the workplace, and provide a sounding board for any questions or concerns that may arise. Building relationships with colleagues who can help you integrate into the company culture can be a key factor in your success.
Challenge #2: Company lingo
Each big tech company business brings it's own company's unique abstractions. These abstractions can be a mix of business entities, internal systems, tools, programming languages, and technologies developed in-house, which can be daunting to learn and work with effectively. For example, Apple's Geniuses; Twitter's Tweeps; Airbnb's hosts and guests; Google's Googlers and Xooglers; Facebook's likes, shares, and friends; Uber's riders and drivers; Tesla's Autopilot system and Supercharger network, etc.
As you dive deeper into these abstractions, it can take time to develop the necessary skills and knowledge to navigate them confidently. However, once you do, you'll gain a deeper understanding of the company's business and technology, and be better equipped to succeed in your role.
One tip for mastering company lingo is to create a glossary of key terms and concepts as you learn them. This will help you remember their meanings and use them correctly in context, and also serve as a quick reference guide as you continue to familiarize yourself with the company's unique language.
Challenge #3: The Need for Speed
Big tech companies are known for creating cutting-edge technologies and constantly facing new problems that need to be solved. The pace of change in the tech industry is rapid, and companies must stay ahead of the curve to remain competitive. This requires constant innovation and a willingness to take risks, which can be both exciting and challenging.
As a result, you may find yourself working with new tools, frameworks, and APIs that you have not used before. In a large tech company, there can be a vast number of employees, departments, and teams, making it challenging to know who to contact for help. To get the support you need, you may need to sift through internal discussions and forums or connect with the right people to get the answers you require.
Network and build relationships with colleagues from different departments and teams. Not only can this help you stay up-to-date on the latest technologies and projects, but it can also provide you with a support network of knowledgeable individuals to reach out to when you need help or guidance. Additionally, actively participating in internal discussions and forums can help you stay informed and engaged with the company's culture and values.
Challenge #4: Going big
Another challenge of working at a large tech company is the scale of the problems you'll face. These companies operate on a massive scale, serving millions or even billions of users worldwide. This scale presents unique challenges in terms of data management, processing, security, and analysis, as well as software design.
Another aspect of scale is the complexity of the infrastructure and software systems that these companies use. With so many users and services, the systems can be incredibly complex, and understanding how they work can be a significant challenge. You may have to work with multiple teams to understand the different components of the system and how they interact.
But the rewards of tackling these challenges can be enormous - you have the opportunity to impact millions of people's lives by developing innovative products and services. You'll have access to some of the brightest minds in the industry, and you'll be constantly learning and growing.
One tip for taking on the challenge is to focus on developing your problem-solving skills. At this scale, you'll be faced with complex and challenging problems, and it's essential to have a structured approach to problem-solving to tackle them effectively. Try breaking down problems into smaller, more manageable pieces, and prioritize your efforts based on the impact and urgency of the problem. Additionally, don't be afraid to ask for help or collaborate with colleagues from different teams to gain different perspectives and approaches to solving the problem.
Challenge #5: Bureaucratic hurdles
As organizations grow, so does their overhead. What works to coordinate 5 engineers in a room is different than what you need for 5,000 engineers across 3 continents. Working at a large tech company can also mean dealing with bureaucracy and red tape. As the company grows, so does the number of policies, procedures, and regulations that employees must follow. This can create hurdles that slow down progress and hinder innovation.
Some engineers at big companies report that many of their deliverables are in the form of documents. For example, they might write a proposal document for an idea, collect feedback in a few dozen meetings, and update the document with their feedback and evolved understanding of the problem. However, after a few weeks, management might decide that the idea is not a priority, resulting in wasted time and effort.
Navigating the bureaucratic landscape can be a challenge, but it's essential to find ways to work within the system. Be proactive in seeking feedback and communicating with stakeholders. Additionally, it's essential to understand the company's policies and procedures, but also be willing to challenge them when they may be hindering progress or innovation. Offering constructive suggestions and solutions can help streamline processes and create a more efficient work environment.
Challenge #6: Enormous codebase
Working with an enormous codebase is a common challenge that new software engineers face joining large tech companies. These companies often use a mono-repo to store code for various projects in a single repository, resulting in tens of millions of lines and hundreds of gigabytes in size. This can make it difficult to navigate and work with the code.
Having such a large codebase means that your local development environment won't work the same way that you're used to if you're coming from a smaller company. For example, jumping to the definition, opening up a class, or finding usages of a method or function probably won't work.
One way to overcome this challenge is to learn how to use the tools provided by the company to work with the code effectively. For instance, you might need to become familiar with the search functionality provided by the code repository management tool to find the specific code you need.
In addition, it's important to be familiar with the Continuous Integration (CI) system, as this is often the gatekeeper for code changes. The CI system runs tests and checks to ensure that code changes don't break anything else in the product. Understanding how the CI system works and how to write tests that can be run in the CI environment is critical to successfully contributing to the codebase.
Challenge #7: Communication clarity
One of the biggest challenges of working at a large tech company is maintaining clear communication channels. With teams spread across different locations and time zones, it can be difficult to keep everyone on the same page. Additionally, the sheer volume of communication, including emails, messages, and notifications from various project management tools, can be overwhelming.
To overcome this challenge, you need to establish clear and effective communication channels with your team and other teams. Set up regular check-ins to discuss project progress, address any issues, and share ideas. Ensure that everyone understands the communication channels being used and agrees on the expectations for response times.
It's also crucial to prioritize your communication channels to avoid getting bogged down with excessive messages. Determine which platforms are most important for your work, and set boundaries around checking and responding to messages. Consider using email filters, message templates, and automated responses to streamline your communication.
Building relationships with people from different teams is also important in ensuring successful collaboration. Attend company events and participate in cross-functional meetings to meet people from other teams and gain a better understanding of their priorities and goals. This will help build trust.
Challenge #8: Small fish, big pond
Working at a large tech company can make you feel like a small cog in a big system. With thousands of employees, it can be easy to feel like your work is not significant and that your contribution is minimal. As an engineer, you may be working on a small part of a large project, making it challenging to see how your work fits into the big picture. This can lead to a lack of motivation and job satisfaction, as it may feel like your work is not making a significant impact on the end product.
To overcome this challenge, it's crucial to understand how your work fits into the larger project and the value it brings to the team and company. It's essential to communicate regularly with your colleagues and managers to ensure that everyone is on the same page and working towards the same goals.
You can take ownership of your work and try to find ways to make a more significant impact. This could involve suggesting improvements or optimizations that can save time and resources or taking on additional responsibilities to help your team.
Finally, it's crucial to stay motivated and engaged with your work. Remember that even small contributions can add up to make a significant impact on the end product. Remember, every cog in a machine plays a crucial role in the system's overall functioning.
Summary
While individual teams or departments within a big tech company can be exciting and enjoyable, the company as a whole may feel like a corporate grind machine, especially for those who expect a fun little startup environment. However, it is possible to thrive in this environment by adapting to the unique culture and embracing the challenges it presents.
Overall, working at a large tech company can be both rewarding and challenging. By staying proactive, adaptable, and patient, you can overcome these challenges and thrive in your role. Stay curious, stay connected with colleagues, and keep learning to stay at the forefront of the industry.
Additional materials
- Inspired by Marty Cagan
- Solving S.H.I.T. Problems by Dr. James Ezhaya
- Engineers Survival Guide by Merih Taze