I’ve spent three productive and rewarding years working at Comcast. I’ve learned a lot, and I’m proud of the work I’ve done to improve our customers’ online experiences. My last day before starting at Kellogg is on Friday, and I’m grateful to have had the chance to work with some very talented people building applications that tens of millions of people use regularly. In my time here, I’ve progressed from being an individual contributor working on new features and bugs to an engineering team lead responsible for a larger and more complicated app. Here are a few things I’ve learned along the way.
Debugging skills are underemphasized
It’s worth getting good at debugging. The longer a system lives in production and the more features you add to it, the more opportunities you’ll have to debug things. Being able to understand quickly why an issue occurred, what the root cause was, and whether it affected a single customer or a larger group is very valuable. Much of the work I do with our senior partners in other departments is to get to the bottom of issues our customer or employees report. Understanding how to read other people’s code and search through logs can make this a lot easier. As I’ve gained more experience, I’ve developed a collection of queries that make looking through logs easier. Liberally using dashboards and alerting tools also can save you a lot of time.
Invest in learning your tools
I’ve spent hours over the past few years configuring my tools to reduce friction in my workflow. In a few keystrokes using aliases I’ve written, I can kick off a new deployment, open a pull request, or inspect a Splunk or New Relic dashboard. It’s often worth the overhead cost of setting up these tools since you can amortize it over the rest of your career. As a developer, my blood pressure surges when I find myself doing the same thing over and over, especially when it could be automated or standardized. Set up some dotfiles and add to them over time.
Get to know other teams
Meeting people on other teams makes the work more interesting and can help you avoid getting stuck or wasting time building things others have already done. Working with other teams can also give you an appreciation for the challenges they face, resulting in less finger-pointing. Our team uses—maybe overuses—Slack, so it’s easy to talk to people who are working with similar technologies or on problems in other parts of the company. I’ve also participated in a book club at work, which has helped me get to know more experienced engineers and managers in other parts of the company.
I wish I had done more of this. Every time we onboard a new developer or update a feature written two years ago, I spend a bit too much time searching for answers I should have written down as a reference to begin with. Some code may be self-documenting, but understanding the process for putting in a firewall request or enabling a new API endpoint for a specific market is not. Not having documentation to share with others and keeping it all in your head makes the team and its work less approachable. Opacity means fragility. When you’ve done something complicated, write it down.
Write down lots of other things too
As I started to take on more complex work, I found it very valuable to write down more notes to myself, including my updates for our morning stand-up meeting. It can be frustrating for your colleagues to watch you struggle to remember what you worked on yesterday or what you did today. An easy way to stay on track and be more professional is to take two minutes at the end of each day to jot these things down and write down any questions you want to discuss with the whole team. I make this simpler with a custom perspective in OmniFocus that shows me all of my completed work tasks for the day. I also have a “Waiting for” perspective that shows all the items I’m blocked on until I get an answer from someone else.
Show your face
Working somewhere with a permissive remote work policy has been an excellent privilege. I’ve spent valuable time at home doing focused work in an environment conducive to concentration (and with much better coffee than whatever comes out of those darn Flavia packets!). But I show up to the office on the vast majority of days because there is no substitute for face-to-face communication. It’s not impossible to build trust over the phone or a video chat, but it is a lot harder and less spontaneous. I’ve learned a lot about the company, what other people are working on, and how to handle production incidents by being in the office. As a manager, it’s necessary to know your reports well and care about them personally if you want to deliver feedback that is going to be received well. It’s difficult to do that without working together in person often.
I’ve gotten so much out of my time at Comcast thanks to great managers and mentors. There are obvious downsides to working in a large enterprise, but there are many opportunities to grow if you know where to look and how to work effectively.