Link to original article

Welcome to The Nonlinear Library, where we use Text-to-Speech software to convert the best writing from the Rationalist and EA communities into audio. This is: How To Become A Professional Software Developer, published by Yonatan Cale on March 25, 2022 on The Effective Altruism Forum. [Are you involved in software development and coming to EAGx Oxford? swapcard me! You can also find me on Calendly or DM] As a person who offers mentoring to EA developers, I’m often asked what to do before one’s first paid job. This post describes the fastest path I know to make progress both in the short term (get paid) and in the long term (what to do now in order to be really skillful in 5 years), a path that works for many people and requires zero prior experience in software development. If you want to be a professional software developer but you’ve never had a software development job before (and you can’t just apply and get one), then this post is for you. An overview of the plan: Do an online course [link] Write 2-3 good side projects [link] Apply (to companies where you'll get mentorship) [link] I’ll go over the common questions that come up, such as “which side project?”, “why get a job instead of doing something else?” and so on. Did you get other advice? Then maybe ignore this post If you got customized advice from a friend who's a senior developer, who took your specific situation into account, and wasn't trying to sell you anything, then listen to them, not to this article. Or, tell your friend "Hey, I heard that doing side projects is really good, what do you think?", and then go with your friend's opinion, whatever it is. Example custom advice that would override this article Your friend offers to mentor you one-on-one Your friend reminds you that you did data science in your Masters’, which you could use as a shortcut You think you might be able to get accepted to some job right now, maybe it's hard to tell in advance, but it's cheap to check. Do you read lots of advice like this? Then maybe skip this post A common failure mode is to get one piece of advice about reading some book, some other advice about doing a course, a third piece of advice recommending doing a CS degree.. and you end up waiting until you finish ALL OF THEM before you apply to any job. If that's your situation, then reading this article will probably be net harmful because it will only slow you down. If this article has made your plan longer and not shorter, then it has failed. The plan TL;DR: Get a first paid job. I will discuss why and how The rest of the post is structured as a Q&A based on the most frequently asked questions I get. I recommend you only read the sections that interest you by using the menu on the left. Q: Why is getting a paid job so good? [skip if this is obvious] Assuming you want to be a software developer, your goals will be easier to achieve if you're a skillful (productive) developer. So especially early on, I would focus on building skill. One of the best environments for building skill as a software developer is being surrounded by one or more skillful developers who are interested and able to help you learn how to be productive. This often naturally happens once you have a paid job: Suddenly you’re surrounded by people who have an incentive for you to become productive as quickly as possible (yay!). Common mistake: Trying to improve by learning “random” skills rather than doing whatever will help you get a job with good mentoring. [skip this section if you’re not planning to do this] Of course, you will probably have to learn alone in order to get that job. However, the mistake is learning things “randomly” that “seem generally useful even if not the most useful” or worrying that “if you don’t learn some topic now then you’ll never again have a chance to learn it” [I have a lot to say about that] rather than focusing on what’s needed to get a job (with colleagues who can mentor you). The most common way this mistake materializ...