One unexpected perk of publishing a book is that folks start to ask you questions about all sorts of loosely related things. One pretty common thread has been around career advice, I’ve written up most of my advice for easier reusability. Some of the ideas are a bit contradictory, which I suspect is the nature of all useful advice: you’ll have to work through the conflicts and details yourself.
My career advice for folks in software, and maybe generally:
You’re just getting started. Particularly in tech in the Bay area, you can find yourself in some companies and jobs where you feel like an old-timer even though you’re only ten or even five years into your career. Although it certainly feels that way, rest assured it is not the case. You’re still just getting started, there is still more to learn and new things to do.
Don’t assume you’ll make this much money forever. As you go deeper into your career, at some point many folks find themselves earning a lot more money than they were the year before. This is an exciting moment, but also a dangerous one. It’s far from certain that you’ll be able to retrace your steps into a similarly compensated role in the future. Save as much as you can when times are good.
Decisions aren’t permanent. Increasingly I believe that there are very few trapdoor decisions. Do you want to become a manager? Go for it. It’s not a neutral event to return from management to engineering, but it’s a very common operation that many folks do successfully.
Measure before you leap. Although decisions aren’t permanent, there are probably only ten or twenty key decisions you’ll make that define the trajectory of your career, mostly around which companies you join and roles you take on. Be wary of consistently considering only one opportunity — sometimes you’ll find an opportunity that is unique and don’t hold yourself back from that — but generally you should be considering a portfolio of options and picking among them rather than comparing between your current situation and a new one in isolation.
Stay humble. I’ve seen a surprising number of folks who have their own “taking my talents to South Beach” moment, alienating the folks around them and landing in a worse spot.
Specialization can be a financial trapdoor. It’s easy to worry too much about specialization trapping you into a certain type of role (I once was told to never write PHP, because if you wrote PHP companies would never let you write C++ again). However, if you specialize, then it often is true that your ability to get compensated outside of your specialty will be significantly lower. It’s likely that you would be able to recapture that difference over a few years in a new role, but lifestyle inflation can make that challenging to swallow.
Be mindful of your risk tolerance. A lot of career advice makes assumptions about what sort of risk tolerance you have, but only you can answer this. If you’re only supporting yourself, went to a well-known school and have a family to fall back on, then you can be much more focused on maximizing upside rather than minimizing downside. If you are not in a position to take large risks, don’t buy into advice that assumes you are.
Learn what you can learn everywhere you go, but don’t stay where you aren’t valued. If you’re lucky, at some point in your career you’ll find a company that values you much, much more than previous ones. Typically this will be because you’ve finally found a place where your values are mostly aligned. If you don’t feel that way, know that there is another company out there, somewhere, that will align with your values and they will value you much more as a result. That said, it takes a while to find such places, so don’t wait to learn until you find one, be a deliberate learner everywhere you go.
Build a reservoir of prestige. Once your resume “looks right”, you’ll have more and easier access to interesting opportunities, including second opportunities if something you try doesn’t end up working out. Even if you enter the industry without much prestige, this is something you can deliberately build over time by working at increasingly well-respected companies, writing online, maintaining relationships and speaking at meetups (perhaps graduating eventually to conferences).
Be discoverable. One of the reasons I write online is so that folks can discover me, and being discoverable has lead to many of the best things in my life. I suspect getting access to most exceptionally interesting jobs depends on first being widely discoverable.
Don’t chase roles that you’ll hate. Sometimes you get onto the track for a high prestige role that doesn’t actually energize or excite you. Many folks who are passionate team managers find that organizational leadership — rife with conflict and the pursuit of resources — is not their jam. Learn about how you’d spend your time in the roles you’re considering and make sure it aligns with what you personally need.
Don’t stay comfortable for too long. Growth compounds and if you stay somewhere that you’re very comfortable for too long, then you’re missing out on so much future growth.
Marathon, not a sprint. You don’t have to be career optimizing all the time, it’s important and valid to prioritize other parts of your life. As you stay longer in your profession, it’s essential to make sure you’re getting what you need to sustain yourself long-term.
Don’t get captured by your own strengths. Some folks are so good at something that they end up being irreplaceable in their current role, which causes them to get stuck in their role even if they’re a good candidate for more interesting ones. These folks typically have to leave their company in order to find new opportunities, a loss for everyone involved.
Try internal moves first. If you’re ready to do something new, try to find something internal to your existing company before trying something external. Part of managing your career is not moving too often (not more than every couple of years, unless you find yourself in a bad situation, in which case ignore this advice and move now!), and looking internally gives you a freebie career change without any of the job-hopper connotations.
Present your weaknesses (in the interview). You want to get hired for what you can actually do, if you oversell yourself too much, you’re setting yourself for failure. This is not saying you shouldn’t apply to larger roles — you should! — just that you shouldn’t hide your flaws and expect it to not catch up with you later.
People, not jobs, last forever. You won’t love everyone you work with, but it’s unique valuable to start collecting people you truly do. You’ll switch jobs many times in your career, but the people around you in the industry will be there over your entire career. Great relationships will follow you everywhere you go. Bad ones too.
Try a lot of different things. Early in your career, try to work at as many different kinds of companies and in different product vertical as you can. Going broad before you go deep makes it much easier to ensure you’re spending your life energy on avenues that you’ll be grateful for later.
Finally, I suppose, I’d say that a surprising amount of a good career is about getting lucky and taking advantage of when you’ve gotten lucky.
It’s clear to me that many of the best things that have happened to me were only partially in my control, if that.