The Evolving Landscape of Software Engineering: From Uber Chaos to AI Augmentation
The world of software engineering is in constant flux, shaped by rapid technological advancements and shifting industry paradigms. Gerge Oros, creator of The Pragmatic Engineer newsletter and podcast, shares his unique perspective, forged through experiences at companies like Skype, Uber, and startups, on what it takes to succeed as a software engineer today and tomorrow. From navigating the "duct tape and Google Sheets" reality of hyper-growth companies to understanding the profound impact of AI, Oros offers a candid look at the good, the bad, and the weird of the tech industry.
Origin Story: From Theory to Practical Application
Oros's journey into tech began in high school with early explorations of PHP and JavaScript, which he initially considered "hacking" rather than formal programming. His university computer science degree took an unexpected turn, focusing heavily on theoretical mathematics and physics rather than the coding he anticipated. This rigorous theoretical foundation, however, proved invaluable later in his career, particularly when understanding the underlying principles of technologies like LLMs, which rely heavily on matrix transformations.
After university, Oros worked at consultancies in Hungary and the UK, building side projects, and eventually landed roles at Skype, Skyscatter, and finally Uber. His career trajectory highlights a common path of continuous learning and adaptation, moving from individual contributor roles to leadership positions.
The Uber Experience: Chaos as a Catalyst for Growth
Oros joined Uber in 2016, a period of immense growth and public scrutiny for the company. He describes Uber at the time as "the hottest company on the planet," yet internally, it was a different story. "From the outside, Uber looked great and everything is held together by duct tape and Google Sheets," he recalls. Despite the chaotic environment, characterized by noisy on-call rotations and a lack of established best practices, Oros found the experience incredibly valuable.
He explains that Uber's rapid scaling necessitated a bold move towards a microservices architecture. With a projected exponential increase in engineers and products, the company strategically placed senior engineers in platform teams to build infrastructure that would empower junior engineers to launch their own services independently. This approach, while brilliant for scaling, led to a perception of chaos for those unfamiliar with the underlying strategy. Oros recounts an anecdote of a Google engineer quitting within a week, disillusioned by the perceived disarray compared to the structured environment they expected.
This period also marked Oros's accidental transition into management. Initially hired as a backend engineer, he found himself leading a critical project to rewrite the Uber app within three months. His proactive communication about project risks, in contrast to the team's usual "green" status reports, led to him being put in charge. He adopted a pragmatic approach, implementing strategies he'd seen work in previous roles, and successfully delivered the project. This experience paved the way for his formal move into management, a role he embraced to learn and grow.
Patterns of Successful Engineers
Oros identifies "product-minded software engineers" as those who truly excel. These individuals go beyond writing code; they understand the business context, ask critical questions about feature impact, and proactively identify trade-offs. They are curious about other teams' work, build cross-functional relationships, and engage with product managers to grasp the "why" behind their tasks. This deep understanding allows them to prioritize effectively and contribute strategically, rather than just executing tasks.
The Managerial Path: Mentorship and Empathy
For aspiring managers, Oros emphasizes the importance of trying the role out in a safe environment, ideally with a path back to individual contribution. He highlights Uber's apprentice management program as a positive example. A key indicator of managerial potential, he notes, is a genuine enjoyment of mentoring and helping others grow, often done outside of formal requirements.
Oros also stresses the importance of technical depth for managers. He believes that effective leaders, especially in tech, must be able to "dive deep" into technical details and understand their teams' work. He advocates for a manager's ability to step in and perform the work of their reports, not to micromanage, but to maintain empathy and avoid becoming detached from the realities of the team's challenges.
The Grief of AI Writing Code
The advent of AI capable of writing code has evoked a sense of grief for Oros. He reflects on the years of dedication, struggle, and learning required to become a proficient programmer, a process that was once a significant differentiator in hiring. "All those 10 plus years of becoming a really good programmer, it's it it kind of feels lost," he admits. The ease with which AI can now generate code, he argues, diminishes the value of the hard-won skills that previously set engineers apart. This rapid shift, from AI as a glorified autocomplete to a capable code generator in a matter of months, has been profound.
Becoming an Expert in the Age of AI
While AI can generate code, Oros believes true expertise still requires effort and understanding. He challenges the traditional 10,000-hour rule, suggesting that focused effort with AI tools can accelerate learning. However, he cautions against relying solely on AI, emphasizing that genuine understanding and critical thinking are crucial. He notes that novices are more prone to accepting AI-generated answers without question, whereas experts can identify gaps and inaccuracies.
Oros shares a personal anecdote about seeking legal advice, where AI-generated responses, while seemingly sound, lacked the nuanced interpretation and real-world awareness of a human lawyer. This highlights the ongoing need for human judgment, accountability, and professional authority, even as AI capabilities advance.
Shifting Career Trends: Smaller Teams and Flatter Hierarchies
Oros observes significant shifts in career trends. Engineering teams are becoming smaller, often consolidating into "one-pizza teams" of two to four engineers. This trend is leading to a decrease in engineering manager roles, with companies moving towards flatter organizational structures. The traditional career path of manager to senior manager to director is evolving, with a greater emphasis on tech leads and directors who may have lighter people management responsibilities. This shift makes it harder for traditional engineering managers to find positions, pushing many towards senior individual contributor roles.
Career Advice Myths Debunked
Oros debunks two commonly held pieces of career advice:
- Frequent Job Hopping for Advancement: While effective in a hot market, constantly changing jobs can be a red flag for leadership or senior individual contributor roles, signaling a lack of commitment and an inability to see long-term impact.
- "Just Do Great Work": While essential, simply performing well isn't enough. In larger organizations, it's crucial to ensure your work is visible and recognized. This often involves a degree of self-promotion, a concept more pronounced in bigger companies compared to smaller startups.
He also challenges the myth that the best engineers are always those with active GitHub profiles and numerous open-source contributions. Oros argues that highly efficient engineers who leave work on time and focus on their core responsibilities can often outperform those with more public-facing side projects.
The Future of Software Engineering: Adaptability and Curiosity
Looking ahead, Oros believes adaptability, curiosity, and leaving ego at the door will be paramount for software engineers in the next five years. He likens the current shift to a "leap of abstraction," similar to the transition from low-level assembly programming to high-level languages and compilers. Just as programmers who embraced compilers thrived, those who adapt to AI-assisted development will lead.
He points to Boris Churnney, the creator of Claude, as an example of an engineer who embraces new tools and technologies, even adapting his coding style when faced with physical limitations. Oros emphasizes that while AI may automate code writing, the need for building reliable software, understanding complex systems, and innovative problem-solving remains.
Rapid Fire: Preferences and Predictions
In a rapid-fire segment, Oros shares his preferences:
- Startup or Big Tech: Startup, ideally followed by some big tech experience.
- Generalist or Specialist: Generalist, with AI enabling specialization.
- Remote or In-Person: In-person, to build strong connections that facilitate remote work later.
- Backend or Frontend: Both are becoming full-stack, but backend is currently more amenable to AI assistance.
- Python or Java: Neither, but if forced, Python or TypeScript.
- Language: TypeScript, appreciating its flexibility and strongly typed system.
- Tabs or Spaces: Tabs.
- Async or Meetings: Async, but if meetings, then in-person.
- Whiteboard Interviews: Likely to make a comeback as a way to assess independent thought in an AI-augmented world.
Will AI Replace Software Engineers?
Oros firmly believes AI will not replace software engineers but will augment them. The engineers who thrive will be those who are comfortable using AI tools, curious about their capabilities, and continuously learn. He anticipates a shift in interviewing practices, with AI potentially being integrated into remote assessments, and a greater emphasis on assessing independent thinking and problem-solving skills.
Key Takeaways
- Adaptability is Key: The tech landscape is constantly evolving, and embracing change, especially with AI, is crucial for career longevity.
- Product Mindset Matters: Successful engineers understand the business context and contribute strategically, not just technically.
- Management Requires Empathy and Technical Depth: Effective managers mentor, support their teams, and maintain a strong understanding of the technical work.
- AI Augments, Not Replaces: Software engineers who leverage AI tools will be more effective and in demand.
- Continuous Learning is Non-Negotiable: The ability to learn new technologies and adapt to new paradigms is essential for career growth.