Getting up to speed on a large codebase is difficult, so this week we’ll focus on reading unfamiliar code. You will end up reading more code than you write throughout the course of your career, because in order to write good maintainable code, you’ll need to have a good understanding of how it integrates with the rest of the codebase. Reading code is a skill that you can learn and improve over time.
The focus area this week is about asking good questions. Try to spend a few minutes this week really thinking about what questions to ask, and how you phrase your questions before asking your coworkers. A few small improvements can go a long way to get you the answers you need, and it can help you understand a topic on a deeper level in some cases. When you’re just starting out in your career you’ll be relying on your coworkers to show you how to do things, how to approach and solve problems, how to track down bugs, and how to plan out new features.
Charlie Munger, the Vice Chairman of Berkshire Hathaway, is known for a quote where he says “Invert, always invert: Turn a situation or a problem upside down. Look at it backward.” There’s actually more to the quote, but I want to focus on those first two sentences, because it’s a useful way to look at almost any problem. As software engineers we’re expected to act professionally and be a team player in our day jobs.
As a programmer, it’s important to focus on your career goals, because if you don’t know where you’re going, you won’t know when you’ve reached your destination. Even the most ambitious programmers won’t get very far if they don’t have an end-goal in mind. Setting a north star will keep you focused and motivated as you navigate the twists and turns of your career, so it’s important to reflect on the path you want to take so you can stay on track.
This is an excerpt from Junior to Senior, my upcoming book about building the soft-skills needed for a promotion to a senior software engineering role. If you’d like to be notified when the book is available, you can join the waitlist. Have you ever sat in a room and felt like you weren’t smart enough to be there? Maybe the conversation moved too quickly for you to follow, or perhaps your coworkers debated a topic you weren’t familiar with.
At some point in your career, you’ll have setbacks. Whether it’s personal health, family emergencies, burnout, a colleague getting the promotion you wanted, or just plain bad luck. Sometimes life gets in the way of work and you feel like you’re not progressing in your career. It sucks to feel stuck. And you might even question whether programming is the right career for you. There have been two times I can remember where I considered switching careers because I was so unhappy with my day job.
There’s going to be times when you’ll feel stuck. Your energy, drive, and emotion will go up and down over time during your career. Managing your enthusiasm during the day to day work as a programmer takes significant practice. There’s a good chance you will go through many ups and downs. I’ve found that it helps to visualize it as a time-series graph of your emotional state over time. It’s important to have a general sense of where you are in relation to your historical emotions in the past.