The internet is plagued with hundreds of courses, books, and guides on how to learn to code and become a software developer. Some go as far as to promise 6-figure salaries with a few months of training. This has led many enthusiasts to try to join the world of software development without fully understanding what they are getting themselves into.
Let’s get one thing out of the way: Writing code is fairly easy. Writing good code is a little harder but doable, but writing good code that turns into a stable, profitable, and sustainable product is another matter entirely. Add into the mix working alongside other people, reviewing their code, and learning about tech culture and you’ll quickly realize that a coding boot camp just isn’t enough.
The question isn’t if self-taught developers can be useful to our company and our projects. Of course they can—talent doesn’t come from a CS or engineering degree. Rather, it’s more interesting to ask what we stand to gain from hiring a person from outside these fields.
What Makes a Good Software Developer?
The crux of the issue at hand is simple: Can a person become a good software developer on their own? And underlying that question there is an even more fundamental one: What makes a good software developer?
One might be enticed to think in terms of coding ability. And while it’s undeniable that knowing your way around computer logic is a core skill, the truth is that programming talent is not the only quality you have to look for in a developer.
In my experience, the best developers have two very different yet important skill sets: communication skills and creative problem-solving.
A software developer is a person who transforms a vision into a digital product with the help of technology and other developers. In this light, we need the aforementioned skills to give shape to that vision as well as an understanding of the tools of the trade (such as a programming language) to make it happen.
Communication skills help us understand our client’s vision and help us transmit that vision to the rest of our team. You’d be amazed at just how many projects are doomed to fail because of confusing requirements or siloed developers.
As for problem-solving, knowledge doesn’t guarantee a solution (although the more expertise you have, the more likely you are to arrive at it). Knowledge is a tool, a way to facilitate the process to overcome a task at hand. Creativity is the act of aligning tools, expertise, and problems in novel ways to find solutions.
In other words, a good developer does not know every programming language under the sun, but they can assess if a given tool can solve a problem and, if not, show a disposition toward learning and adapting to attack the problem from a new angle.
Is Being Self-Taught Enough?
Don’t get me wrong, knowing how technology works is a must in our industry. Even the most creative and communicative person is going to have a hard time meeting the deadlines if they have to start from scratch. In that sense, yes, learning how to write code and learning about computer/network architecture is extremely important.
Can a self-taught developer know about all this stuff? Yes, but there is a caveat. The total pool of self-taught developers is a lot bigger and more variable than what you see in junior developers with degrees.
In other words, you are more likely to find a person with very little knowledge of the field if you pick a self-taught developer than if you pick a fresh candidate out of college. And to be fair, a lot of the time it’s not their fault.
Many people fall for scams and irresponsible courses that overpromise and underdeliver. They take a couple of courses in Python or Frontend, create a good-looking webpage as an assignment, and are led to believe that that’s enough to make it in the field.
Unfortunately, that happens more than we would like to admit, and that’s why we have safeguards in place like coding interviews (even if they aren’t the be-all and end-all) to catch potential candidates who lack the necessary base skills.
But some self-taught developers don’t leave it at that. They take it one step further, creating several projects on their own, taking more courses, getting certificates from Amazon and Microsoft, and working with communities on open-source projects. And little by little they delve further into the tech field. That’s the kind of self-taught developer we should be on the lookout for.
What Self-Taught Developers Bring to the Table
Why should you take a look at a resume from a psychologist who’s trying to enter the field? Or from a person who never attended college?
I think that the keyword here is diversity, both in terms of opening avenues for minorities and broadening the scope of our business. Let me explain.
Many self-taught developers are taking advantage of the fact that some of these courses are either free on social media or very accessible. And we are talking about very talented people who otherwise wouldn’t have had enough resources to get a full CS degree, even if they had the talent to do so.
On the other hand, people from outside the field bring fresh perspectives with them, especially if they have previous work experience. Software development, as an offshoot of engineering, is a rather young field, with a lot of room to grow and evolve.
One of the greatest risks of becoming a siloed community is that you lose touch with the rest of the world. While others are changing, adapting, and developing new methodologies, we grow accustomed to our own, warts and all, and end up settling for whatever works instead of trying to make things better.
New perspectives question authority, change paradigms, and challenge assumptions. At this point, I always like to point to the fact that one of the most popular software programming paradigms, object-oriented programming, started as a model that tried to emulate cellular life.
In other words, the reigning programming paradigm wasn’t based on information theory, but rather on biology. If that’s not a compelling case from the outside perspective, I don’t know what is.
Widen Your Horizons
If you’ve been rejecting candidates based on their college degrees or lack of, maybe it’s time to start thinking about changing that paradigm. There is a lot of incredibly creative talent out there waiting for an opportunity to grow and reshape the world of technology.