10 steps anyone can take to teach themselves to code at home, according to the VP of Flatiron School, CEO of Women Who Code, and other tech experts
- According to the Bureau of Labor Statistics, in 2018 there were over 250,000 computer programming jobs in the United States, with a median salary of around $84,000 per year.
- While coding is a highly skilled occupation, Business Insider spoke to a number of experts who got their start by teaching themselves to code.
- They recommended taking advantage of free online bootcamps, getting involved in the online coding community and mentorship forums, and building a portfolio of work by working on open-source and private freelance jobs.
- Click here for more BI Prime stories.
Coding is what creates computer programs, web pages, and apps. And as the world moves increasingly to digital, this skill is more in demand than ever.
In 2019, there were some 918,000 unfilled IT jobs in US companies, reported the Wall Street Journal, many of them in programming. The Bureau of Labor Statistics reported that in 2018, there were over 250,000 computer programming jobs in the United States, with a median salary of around $84,000 per year.
While there's incredible demand for software engineers - it took companies an average of 66 days to fill a tech role in 2019, according to a 2019 report by recruitment software company iCIMS - there's no one way to get into the field. Business Insider spoke to four experts for the complete guide on how to get started from your bedroom and work your way into the industry.
1. Pick up a language, any language, to start - but beginning with JavaScript is your safest bet
Joe Burgess is the vice president of education academy Flatiron School, which offers online and in-person programs on key IT skills such as cybersecurity analytics and UX design, as well as a free bootcamp that introduces you to the main coding languages and basics of getting started. Burgess shared that he taught himself how to code in middle school before studying programming at Carnegie Mellon University. He said that it doesn't matter your background or where you want to end up - the first rule of learning to code is to just start doing something.
"It's similar to when you get into fitness. You can get caught up in which gym to attend, or whether to do cycling versus running, when everyone who is into fitness will say that you just need to start moving. When it comes to coding, you need to start building forward momentum in any way," he explained.
Burgess added that new coders shouldn't get caught up in trying to find a coding "language" to specialize in. Languages such as JavaScript, Python, and Ruby are specific arrangements of commands, abbreviations, and text to create software like websites and apps.
"A lot of people worry that they might take a step in an inefficient direction. But I say that a wrong step is still more efficient than analysing the most efficient direction," he added.
That said, he recommended your safest bet is starting out with JavaScript, the language which makes web pages functional, such as clicking 'like' on Facebook and turning that into a thumbs-up icon. Burgess said that it's great for beginners because "every website you've ever seen uses it."
Burgess suggested that new coders should "take the training wheels off" and start applying their knowledge as soon as possible by building a calculator on JavaScript. You can do this through courses such as Flatiron or using this instruction manual by popular site freeCodeCamp.
2. Sign up for an online bootcamp
Once you've started dabbling in code and are ready to take it a step further, there are a number of tried and tested free online coding bootcamps that you can use to begin your journey from home, with most offering fee-based courses online or in person once you get more advanced. (They're not cheap, though, with most costing several thousand dollars for a 12-week course, though many academies offer financing or defer payment until after you have a job.)
Experts recommended starting out with some of the courses at freeCodeCamp, which offers thousands of free tutorials, or with Ada Developers Academy's tuition-free 'Jump Start curriculum,' which introduces the foundations of coding languages and tools to women and minorities.
3. Tackle small, practical projects and celebrate your successes
After you've finished your online bootcamp, Burgess recommended solidifying your knowledge by building your own project.
"I tell people to go and build a two-person Tic Tac Toe game to see how you're doing when no one is holding your hand. Once you've finished a bootcamp prep it should take a weekend to complete," he said.
When tech journalist Clive Thompson set about learning to code for his 2019 book "Coders: The Making of a New Tribe and the Remaking of the World," he found that the hardest thing to overcome was how often you get stuck entering code that doesn't work and you can't find out where you went wrong.
"It's psychologically unsettling to try to do something where you're so frequently banging into something not working, and you don't know whether it's going to take 30 seconds or three months to fix. And with this frustration comes fear," he shared.
Thompson said that he found the resilience to get through those tough times by finding small wins in automating tasks for himself.
"I found it incredibly powerful and motivating when I started doing useful things for myself, such as writing a little web scraper. It just goes and looks for something inside a page or on Twitter, pulls it out, and then emails the information to me. We're talking 15 or 20 lines of computer code, not rocket science," he said.
Thompson added that many professional coders he spoke to for his book agreed that this same sense of "triumph" in getting something to work, no matter how small, is what keeps them going until the next hurdle.
4. Watch other people code on YouTube
It can feel isolating to try to learn how to code all on your own. Thompson said that he overcame this by watching YouTube tutorials on channels such as The Coding Train, ProgrammingKnowledge, and Derek Banas.
"I got really into YouTube videos of people coding so that I could follow along, as I was watching them do it on screen," he said.
Thompson found this kind of kinesthetic learning far more beneficial than reading instructions, likening it to learning a musical instrument where you want to watch a teacher's fingers moving.
"It's like you're sitting in the room with a teacher because you can watch the things that they are typing, you're seeing how things look on screen when it works, when it doesn't work, as well as how they switch from window to window and even stumble into and out of the occasional mistake," he explained.
5. Ask questions and read tips and tricks on online forums - but follow proper online etiquette
You can also ask questions on coding forums such as Stack Overflow, which is used by millions of developers around the world to ask questions and search for help with problems - but you need to be aware of the forum etiquette.
He said that more often than not, your question has already been answered, so do a search for your question before asking.
"People are more than willing to help you, so long as you have a very precise question and are able to document what you've written." Thompson said. "They don't like it if you walk in and ask something vague, like, 'How do I do this' - you need to ask about a specific problem that you have run into."
He added that learning to Google your problems creatively is something that requires mastering.
"A lot of very senior programmers tell me that one of their most crucial skills is knowing how to be persistent in searching for their problem in lots of different ways, by varying their search terms, because they know that it's likely that someone out there has already solved the problem that they currently face," he explained.
6. Find a mentor and make it easy for them to help you
Alaina Percival is the CEO of Women Who Code, a mentoring and empowerment network trying to improve the representation of women in software engineering. She's a big believer in building a network when you're learning to code, but said that there is a proper way to go about it: starting with a "small ask" and making it as easy as possible for them to help you.
"People in the tech industry tend to be extremely accessible. You can find people on LinkedIn or Instagram or Twitter who are working in your dream job at your dream company and reach out to them - but obviously you shouldn't be reaching out to Steve Cook at Apple."
She advised that it can be as easy as saying, "I'm really inspired by what you do, would you mind doing a 10-minute Google Hangout with me?"
If they say yes, Percival suggested asking direct and focused questions, such as why they love their job, how they got there, or how they learned a particular coding program that you may be struggling with.
Percival also recommended looking into networking events in your area through Meetup, or through dedicated professional collectives such as Women Who Code, who run around 2,000 in-person events each year (which they are moving to digital during the COVID-19 outbreak).
7. Get involved in hackathons to simulate real-world experiences
Percival also suggested that attending hackathons is a great way to start gathering work experience and building your profile.
Hackathons are events usually held by software companies, where small groups compete to build something in a short period of time, such as a prototype app to solve a particular problem identified by the competition.
"You can find them by doing a search online for hackathons in your city, or a city in which you want to participate," Percival said. She added that with most in-person events being cancelled now as people work from home it's worth looking into digital hackathons.
"Not only will you be working on more real-world scenarios than building things on your own, but you're likely to be working under people such as project managers and designers, which reflects a standard work environment," she said.
Hackathons will generally be tied to a particular coding program, such as Python or Ruby, so they're a great way to improve a particular programming language skill or begin to specialize.
"Getting on a project can build your skills quickly and help you achieve milestones, and they can also work as great networking introductions," Percival added.
8. Create a profile on GitHub
GitHub is a developer community that sprung out of a software platform. Git is an open-source version control software, so GitHub has become the place where developers collaborate on open-source projects for free, and it also doubles as a social network for coders.
Percival said that once you've started working on hackathons and open-source collaborations, you can "build projects for your GitHub profile, which prospective employers can then look at."
Coders should ensure that their profile is professional, and use it as you would LinkedIn. Percival also said that you should "regularly commit" to working on projects on GitHub. Potential recruiters will be able to see things such as your contribution chart, which documents your daily activity on coding projects over the last year.
It is critical to keep clear information in your "repository" - the information centers with the projects you've worked on that others can view - particularly your "commit messages," which contain the granular information on what you did on a piece of code and why.
Independent tech blog Hacker Noon has put together a line-by-line guide of how to ensure that you update this effectively so that the community and potential employers can see you work in action.
9. Freelance to upskill
Dan Nolan is a software engineer and the cofounder of Australian-based firm Proxima, which designed the chatbots used by Twitter, among others. His advice for people looking for work in coding is "go broad, not deep." Once you have a core grasp of simple open-source software, it's time to move on to private projects to build your portfolio, which, like your GitHub, is what prospective employers are most interested in seeing.
"The best way to get your foot in the door is through jobs on Freelancer and getting something into the App Store, which is a huge achievement because it means you have worked through the requirements and bureaucracy of Apple and Google," he shared.
He recommended looking at freelance work on sites such as Stack Overflow's job's section We Work Remotely, which often offer generally simple tasks or gigs that coders can upskill on.
"A lot of the best ways to learn have come from trying to automate or speed up an existing task," he added. "There are always a ton of jobs on places like Freelancer for people to take and transform data. These are great places to cut your teeth and get paid to learn. They help your work prospects and resume because they indicate you've worked with others and shipped software, which is a big deal."
While you're there, he said to consider branching out into other areas beyond just working on software programs.
"There are a lot of startups doing interesting things in the continuous integration and continuous deployment areas - learning how to manage and deploy software to the cloud, as well as and maintain it, is a hugely in demand skill," he explained.
10. Work on your communication skills, too
Having gone from a bedroom coder to employing a team of software engineers, Nolan said that many in the industry still overlook developing their soft skills while they are learning coding language.
"It might seem weird, but the most important skill set anyone in a technical area has is the ability to clearly and concisely communicate. Given that development is the transformation of data from one format to another, being able to intelligently document what you want to do and communicate your desires is key to working in a team," he said.
At a job level, programmers rarely work on their own, meaning that poor communication, lack of teamwork, and failing to understand problems can see a project fall down before the code is even written.
"Try using something like Hemingway App to make your text concise, readable, and where possible free of jargon." Nolan added. "Work collaboratively with others to get feedback on what they need in documentation if you're feeling rusty or intimidated."
One way that you can wow future employers is by "showing and telling." Nolan said that he loves to get potential hires to talk him through their portfolio of passion projects that help reveal who they are as a person and why they might work well on his team. In that vein, he noted that having a university degree or a course such as Flatiron under your belt isn't essential.
"I know lots of people who work in the field that either are self-taught or have a degree completely unrelated. One of the best engineers I know majored in dance," he said. "It's entirely fine to be self-taught, so long as you're an effective communicator and have a growth mindset and a positive attitude."