I started my programming career at a small startup called Mertado, soon after they completed the Winter 2010 batch at Y Combinator. Nine months into my new role, we were acquired by Groupon to help build out their Groupon Goods platform soon after they had gone public. After the dust had settled, I was placed on the team that built the machine learning system to personalize 100 million emails sent to inboxes each morning. I was responsible for taking the personalized outputs from the MapReduce jobs, rendering the results in our HTML email templates, and performing multivariate tests on different audiences in order to increase the conversion rate, where a one percent increase meant millions of dollars in additional revenue.
It turns out that working at a small, ten-person startup is vastly different from working at a public company on a large engineering team. Not only was I exposed to new technologies, development workflows, build systems, and enormous codebases, I also got first-hand experience observing how high-performing teams deliver software at scale. I started to see how all of my coworkers juggled different tasks and priorities, and as I observed, I started to learn from them.
What I noticed early on was that they didnβt just sit there and code all day with their headphones on. Yes, my coworkers delivered clean and robust code at a fast paceβbut they were good at the entire software development process. The most impactful engineers combine technical depth with a broad set of soft skills, people skills, and product skills.
Iβve made many mistakes throughout the course of my career. It took hard work and trial and error to learn how to navigate office politics, manage risk, and work well with others to deliver quality software. I had to learn most of these soft skills on the job and by observing others as I navigated my career.
But I wish Iβd had better resources to prepare me for the obstacles on the path to becoming a senior software engineer. My goal in writing this book is to pass along the knowledge Iβve gained so far in the hope that it will help the next generation of programmers be team players and build fulfilling careers.
This guide is focused on providing junior and mid-level programmers the tools they need to excel in their careersβthe journey from first full-time engineering job to earning a first promotion.
This book is primarily for individual contributors: it does not cover the broader topic of managing other junior and mid-level programmersβbut engineering managers and senior engineers may still find some of the material useful for mentoring or sharing with their team members or direct reports.
New programmers. If youβre just starting to learn how to program by teaching yourself, or youβre enrolled in school or a coding bootcamp, congrats! Youβre just getting started on a fun and exciting journey. While this book wonβt teach you how to program, it will prepare you for what to expect when you land your first full-time programming job. Thereβs a lot to learn, so be patient and take things one step at a time. You got this!