Advice to junior developers
September 29, 2018
There was a question on Hacker News today: Ask HN: What is your best advice for a junior software developer? My response follows.
Kind of a hodgepodge:
Rack up experience. It's much better to be working than not working. It is much better to have 2 years of experience and learning vs. 6-9 months looking for something perfect—this is especially the case for juniors. Just take the first job you can get. Also, don't underestimate how much the rate of learning differs between various workplaces.
Try to work somewhere that invests in people, especially juniors. Startups will be "more fun", and you'll likely to get to work you're not really "qualified" to do, but you won't learn how to do it well. One of my biggest regrets is not finding effective mentors earlier in my career. Sometimes a more "boring" workplace is better for this.
Most employers will judge your skills by the brands on your resume. This mostly happens because there's no other reliable way of determining how good someone is when hiring them, short of "I have personally worked with this person before and can vouch for them" (the gold standard). A mediocre developer who managed to clear Google's bar may be less of a good hire than someone who worked diligently at a consulting company—probably not in the average case, but it's possible. Note this contradicts a lot with the last piece of advice. It's a puzzle—brand vs. skills.
Focus on your social network. Most good jobs, especially in more senior roles, will be obtained through prior coworkers, investors, or other people you know/have worked with. Keep up with people. Try not to piss people off. You'd be surprised how useful it can be to leave a trail of goodwill behind you.
Understand that it is management's job to advance the shareholder's interests. Most of the time this means they'll try to do what's right for employees. But it also means that when the situation demands it, they will lie, withhold information, fire people, report things to HR, and try to pay you as little as possible—that is their job. Filter every announcement and communication through the lens of "how does this advance shareholder interests"? It's not fair to say "everything management says is bullshit", but it's directionally correct. Truth is not the priority.
Focus on developing skills that won't become obsolete. This means prioritizing domain knowledge, CS fundamentals, etc. over the details of one language, company, or programming environment. Try not to specialize in writing software per se—the market rate for this is rapidly heading to zero with outsourcing and remote work. My friends who have the best careers (happiest, best-paid) are people with very deep expertise (PhD + 10 years experience) in areas like semiconductors, networking, or a particular business domain (e.g. hospitality/travel, high-frequency trading). The trick is not to specialize too early—wait to find something you really love.
Most startups aren't worth it. Some are. Many people have a binary view of this: "startups good"/"startups bad". It depends on the people, the market, and a lot of other factors. There are a relatively small number of investors and founders who can reliably beat the averages. But not many. Informational advantages in this area are worth a lot.
Silicon Valley is basically Hollywood. People move around a lot. Packs of people who work together cross-recruit into new companies all the time. Try to get into one of these "tribes". It will help you immensely for your entire career. The PayPal mafia is a great example of what I'm talking about.
As you get more senior, do your homework and really stress out about which job to take. It's worth it. This might be counter to what a lot of others say but IT MATTERS. It's the difference between working your ass off for four years and getting nothing, vs being able to afford a modest retirement after 4-6 years.
Plan to work 3-6 years in places, if not longer. It demonstrates commitment and people in the upper echelons of business (investors, CEOs, high-level management) respects that a lot.
If you work at a startup, don't always optimize for the biggest stock grant. 0.5% of a company that fails is worse than 0.25% of a huge success. Understand that bad companies fail and good ones sell for tens of billions. Our intuition wasn't built to handle 10 orders of magnitude differences in outcome.