Coding ability is a prerequisite to working as a software developer. Coding ability isn't the only thing you need, though. If you can't make something useful with the code you write, you can't contribute much to a development team. And if you can't communicate effectively and cooperate with your fellow team members, it will be very difficult to function in any job.
These days, some software companies are relaxing their requirements for formal education and hiring self-taught programmers (link to the article on how you can become a programmer without any experience or degree) who use online learning, MOOCs, and other non-traditional learning tools. If you're interested in working as a self-taught programmer, read on to learn about the things you need (aside from coding ability) to succeed.
Before you even begin teaching yourself to code, you'll need some background knowledge to get you started. Most of the necessary skills can be learned using Massively Open Online Courses (MOOCs) on platforms like Udemy, Pluralsight, Coursera, and LinkedIn Learning.
Here are some important non-coding skills you'll need to succeed as a self-taught programmer:
No matter what type of software you're building, computer programming relies on math. Gaining a deep understanding of advanced math topics like calculus, linear algebra, and trigonometry will give you a major advantage as a programmer, and will make you a more versatile employee.
At their core, all programming projects are exercises in organizing bits of data. Some people are naturally organized and logical and it's easy for them to translate this talent into their code. If you're not one of those, consider putting some effort into training your brain to think logically. Find out more about training yourself to think in this article from Scientific American.
Learning to be a good problem-solver is closely related to logical thinking, but problem-solving often involves more than just being able to sort and categorize information. Problem-solving is a complex cognitive process that involves creativity, uncertainty, changing parameters, and recursive elements. Complex problem-solving is a fascinating and challenging task that takes training and discipline.
Communication (written and verbal)
Despite stereotypes to the contrary, tech is a human endeavor. Until AI takes completely takes over developing software applications, you'll need interpersonal skills to succeed as part of a development team.
Effective communication is necessary for every aspect of software development. From getting through the interview process to generating reports and contributing to the daily Scrum, communicating is an essential skill for software developers. The downfall of many a development team has come from a breakdown in communication.
Soft-skills are everything, but also experience is everything
In movies, the best coders live in dark basements lined with monitors full of streaming columns of data. The subterranean geniuses hack into CIA databases and spin out world-changing communications software in minutes without even looking up from their keyboards. Hopefully, you've figured out by now that this isn't how software development works in the real world. Even so, generations of programmers have grown up with this idealized image in mind of the lone coder saving the world all on their own.
Trying to work in isolation as a software developer isn't a good idea. Collaboration leads to more robust, secure and useful applications. Working with other people also keeps you sane in the face of endless revisions and debugging. And besides, there isn't a software company on the planet where developers work alone. Because you'll always be working as a team, soft skills are often seen as more important than raw coding ability.
That said… Regardless of their interpersonal prickliness, one of those fantasy super-coders would have a serious advantage over a recent college grad in a job interview for one reason: experience. Being able to show your abilities with tangible examples can often overcome any other deficiencies.
According to its website, Microsoft employees 148,465 people worldwide. 45.7% of them are engineers. That means there are about 67,000 people at Microsoft somehow involved in engineering, coding, or other development-related activities. All of those programmers, engineers, and other tech professionals need to work together in an efficient way to produce gargantuan pieces of software.
If you Google what soft skills you need to work as a programmer, you'll get thousands of hits containing lists that look something like this:
These lists are trying to make soundbite-style sense of a deep truth about working as part of a team. This truth is that there is one important skill that makes a team successful and all of these other skills are subsets of it.
Empathy is an essential skill in software development
There are two main reasons to embrace empathy in tech. One is that, presumably, your goal is to create software that's useful to humans; or at the very least, doesn't harm anyone. A strong sense of empathy helps determine what other humans need and want from the software you build,
Another big reason to learn empathy as a developer is that companies don't like employees who can't get along with their team. Open-mindedness, patience, communication and ready accountability all are essential qualities in a valuable team member, and all of these qualities depend on a strong empathic ability.
Many people view empathy as an inherent trait that you either have or don't have, but check out this from Psychology Today:
Empathy comes more easily to some, but it’s possible to learn it even if you’re not the most naturally empathetic person. To learn empathy, try this exercise
- Think about your significant other or a friend, family member, or coworker.
- What has their mood been like in recent days?
- What’s going on in this person’s life that might be making them happy or sad, anxious, or angry?
- How are you contributing?
- What could you do or say to improve this person’s situation?
By learning and practicing empathy as a skill, you will increase your value to any team.
Experience can't be faked
The absolute best way to prove yourself, no matter how you learned to code, is to show your work.
“Experience” doesn't necessarily mean “job experience”. If you've never worked as a programmer, you can develop your projects on your own. Just like a photographer, writer, or other creative professionals, you can also ask friends and relatives to let you work for them for free to fill out your portfolio.
Companies that don't require a degree
As a self-taught programmer, you might be wondering if it's even possible to get a job at a major software company. The short answer is that software companies do hire self-taught programmers.
Computer science and engineering are deep subjects that require a lot of knowledge and practical experience, and university degree programs are where that training is traditionally found. Today, though, it's possible to find success as a self-taught programmer by using online learning tools like MOOC platforms.
While you shouldn't take the availability of online learning as an excuse to skip college, the relaxing of college requirements in today's tech industry will hopefully inspire talented programmers with non-standard educations to pursue top jobs.
The demand for coders is outstripping the ability of traditional universities to produce them. This means that big companies like IBM are turning to alternative sources of labor. There's a large pool of self-taught programmers out there, and IBM is beginning to wake up to the notion that these people are often just as skilled as those with degrees in computer science and engineering.
The strategy part is a bit more exciting. As demand for coders increases, the technologies they're developing also advance. Innovation in software engineering continues to outpace university degree programs' ability to produce courses to match it. In practical terms, this means that most software developers end up working with technology they learned after graduation anyway. To satisfy the appetite for innovation, forward-thinking companies intentionally seek out some self-taught programmers. The idea is that bringing in diverse life-experiences and non-standard approaches to problem-solving can help a team reach unique and cutting-edge solutions that college-educated programmers might not even think of.
Google is famous for a lot of reasons. One of those is the emphasis they place on experience over formal education in their hiring process. Google states on its hiring practices page that they don't require a computer science degree for software manager roles.
The lack of requirement for a degree doesn't necessarily mean you don't need one to get hired. Google's relaxed education requirements only get you in the door for an interview. Getting through the interview process will require some serious chops in the specific area of the job you're after. Google has you covered there, too, though. To get an idea of what's required for success in an interview at Google, check out these role-specific learning paths that the company provides for your prospective hires.
If you find these paths on Google's site useful, check out MOOC platform Pluralsight for tons more curated learning paths that will help you get the complete education you need for any tech role.
The simple answer is: yes, companies do hire self-taught programmers. But they hire self-taught programmers who can prove their talents, and who possess the soft skills necessary to work in a modern corporate environment.
All the coding ability in the world is unlikely to get you a job if you're a bully. And, if you don't have any proof of your ability, you're not even going to get an interview.
So, go forth and teach yourself to code, but don't forget about all of the other important skills you need to be a successful tech professional.