The problem that many people encounter when they decide to switch to software development is that they unknowingly make things harder for themselves. They jump into too many frameworks or learn programming languages without any particular system, going into the dense stuff way too early. In this piece you’ll find how to approach the new discipline without getting completely demoralised.
An extremely instructive presentation from an award-winning Udemy instructor Imtiaz Ahmad explains there are three reasonable points of entry: software development, database and admin. To Imtiaz, the actual craft of developing software has a rather tall stack of skills that need to be learned from the get-go - before you can apply to these jobs, you’d need to achieve fluency with a bit of front-end stuff (HTML, CSS, Javascript), some back-end techniques (Java, Python or PHP) and also be informed about how databases work. This would take some considerable amount of time. Instead, you could focus only on databases, which will require SQL knowledge and Tableau (I’ll talk a bit more about those in other posts). Former shouldn’t take you longer than a couple of months, for the latter, one month is enough - meaning that you can start your job hunt in three months. Once you start working, you can gradually hone your other skills to make the transfer to software development later. A third track is Admin - which is a rapidly growing field and by all means a great job prospect, particularly if you know Amazon Web Services.
If, however, the second two options do not feel exactly your alley, read on and let’s find out how learning can be made optimal for acquiring all of those skills all at once.
Focus on front-end
All of the back end staff - Python, PHP and whatnot, - are probably not your best bet if your background does not already include a degree in computer science (CS). It’s simply too hard to compete with all the other job applicants with their shiny CS’s diplomas, who had years of school training in these technologies already. This, however, means that on the front end of things it is much more equalised, as the CS degrees do not cater to these skills. You can be even more knowledgeable as a self-learner here that anyone with specialised training, since the field is so fast-moving.
What language to start with?
The answer is, it doesn’t matter. Beginning of something is a unique place to be in this sense - whichever direction you choose, you’re bound to learn a lot right off the bat - and that’s perfectly logical since you didn’t know anything before. So, learn the concepts first. The video from Code Academy at 5:44:46 gives a really good overview. Aaron Jack has an extremely informative video packed with advice for those who find themselves in this place. He recommends breaking down the learning process into three steps:
Self-educate as much as you can for free. This step simply requires time and persistence. In this phase, you learn basic HTML and CSS principles. Here, again, Codeacademy.com is indispensable.
Take a video course. Aaron recommends two courses in particular, which you can watch at 1.5x speed to save time:
Complete JavaScript Course For Beginners to Master - 2019 ($20) (which is good because you get quite a lot for not so much money, plus includes practical exercises)
JavaScript: Understanding the Weird Parts ($179). A considerably more pricey course, and targeted at individuals who have already gained some confidence in their javascript practice. Yet it seems worth your time and investment, as it will help you understand the underlying logic of javascript which will help you think independently as you develop your practice. The courses’ motto, “don’t imitate - understand” indicates that while Javascript looks deceptively similar to Java, C++ and other general-purpose programming languages, it, in fact, operates in its unique paradigm, which, once understood, does not make it look “weird” anymore.
Learn React. Don’t spread yourself too thin - make it your mission to learn one thing well, and make this thing React. Why that particular Javascript library? According to Stackoverflow 2020 developer survey, React has been steadily gaining traction and is now #2 on the list of the most loved frameworks. There is a variety of opinions whether you should also be spending time mastering Redux, Webpack, Babel, sagas, graphQL or other tools that come with React. One reasonable assumption is that, since all of these tools are great for their specific jobs, they could probably be learned later. Instead, it makes sense to crack on React’s documentation. Just learn it all by heart. You’re going to end up knowing it fluently anyways in the end, so why make your life harder? Look at hooks and API reference too. Lastly, there is a Beginner's Guide to React tutorial by Kent C. Dodds on egghead.io which is free and quite comprehensible. You should also find the patience to build at least one project completely from scratch using React. This is crucial because to do that you’d have to understand file structure and the CRUD (create, read, upload, delete) operations which will help you make sense of the projects you are going to encounter in the real world.
To these three steps, it should be mentioned that you want to understand gitHub. In 2020, 82.8% of developers use GitHub as a collaborative tool, and knowing ins and outs of it will help when starting with almost any company. It will also help build your profile as you grow your developer skills. A foundational blog post by Vincent Driessen explains the logic of how Git branching model works. Open a GitHub account and start putting together a portfolio that you could later go around flashing in your job applications.
Bonus track: are coding bootcamps really worth it?
One way to think of a bootcamp is as of a recruitment agency that provides skills training before placing developers on the job at their client companies. To find some insights, I have talked to my friend who recently did a bootcamp to kick start his developer career. From what I have learned, during the course, you mainly sit down on your own and self-educate online through online resources which are freely available online anyways. The two important benefits, though, are: (1) you get a lot of pair programming with other bootcamp members and (2) when you finish the course, managers and senior developers from some big shot companies come to hire you. After getting hired, you learn the rest of the stuff you didn’t have time to learn yet, as part of the normal work process. Looking at it this way, if you can discipline yourself sufficiently to learn all the practical skills for free, find a coding buddy to polish your skills, and to do some self-marketing during the job application process, then you’ll inevitably land on some job anyways. From then on it’s the same process - learning the rest of the skills “on the job”. Will the bootcamp make you get hired faster or yield a higher salary? It’s hard to trust the bright stats found on many websites on the subject since their task is in the first instance is to make the idea of a coding bootcamp sound as lucrative as possible. Besides, any “hired” rates after the bootcamp (eg. 83% in 2020 as the Course Report shows) should be evaluated against the rates of people who trained themselves and applied for jobs outside of bootcamps, which is tricky. In any case, anything less than 100% for any bootcamp is too low.
Touching base with the community
In software development, the community has uniquely been the centrepiece of everything that happens between the command line, the cloud and beyond. Stackoverflow is strictly not a social network, but will probably be your go-to place for specific questions. Reddit is so big, I’d need to write another blog post on just that community alone - I got recommended to look into this few by someone who knows Reddit slightly better than I am: (/r/learnprogramming, /r/learnjavascript, /r/AskProgramming, /r/coding). Facebook Groups, if you are into that sort of thing - for which the best way to discover is to look for the ones you like best - again, it deserves a whole new blog post. Lastly, there are websites like Diversify Tech and Power to Fly, where you find job postings and engaging conversations.
Suggested reading: Toptal has recently been in touch with a link to a related post about hiring software developers on their Engineering Blog - those of you looking for a job this Autumn should check it out here. It provides a wealth of insight into the interview and candidate screening processes.