Top 3 Traits Needed to Become a Software Developer
Updated: Jun 24, 2019
I was thinking the other day about candidates for software developer entry level roles. There are a lot of different candidates, and each are unique in their own ways. But what are the major differences between those who get hired and those who don't? What sets the successful apart from the rest? I pondered this for a while, came up with a few things, and then put it on the back burner.. that is, until I taught class tonight and the discussion with my students sparked a catalyst that produced a very transparent image of exactly what someone needs to succeed as a software developer, and it boils down to three things: technical skills, the ability to solve problems, and passion.
This one is a no brainer.. in order to be a software developer, one must learn how to use the technologies needed to develop software. I don't really need to say anything more than that, however, my students know I am long winded, so I'll add a little more. Having the technical skills means learning how to use the constructs that a programming language offers by studying and practicing a lot. That means that you have to try stuff - you need to tinker around with code to see what works, what doesn't, and how different things react in different use cases. Opening an IDE and just playing around with what you are learning and seeing what happens, and how you can break things, is the best way to really start to understand how programming works. On top of learning how to program, you have to learn the core tools associated with working as a developer. Learn how to use Git, a popular IDE, the command line, and (I know it may sound silly and obvious, but...) your computer. Anyone can learn these things; it just takes practice and hard work. Spend the time necessary reading and breaking stuff, and then fixing it again, and you will gain the technical skills necessary to be a software developer.
Ability to Solve Problems
The ability to solve problems is often perceived very closely to technical skills and the ability to program. The truth, however, is that they are two distinct, separate concepts. Problem solving is, as the name states, the ability to solve problems; it is a method in which someone deconstructs complex puzzles into simple, bite-sized steps and then orchestrates a solution. Solving a problem has nothing to do with technical skills. However, technical skills come into play in implementing the solution yielded from solving a problem. This distinction is very important. One may know how to program and use all the tools in a software developer's tool belt, but without being able to produce a solution to a problem that can be implemented with those tools, the tools might as well collect dust. To put this into perspective, a similar relationship exists in the simple math we are all familiar with from school. One may know how math works - they may know how to multiply and divide, and all that fun stuff - but when presented with a word problem that individual may be at a loss as to how to solve it. Knowing how to multiply is having technical skills, but knowing how to apply those skills to a word prompt is solving a problem.
Now that we know the difference, how does one build problem solving skills? The trick is to not focus on the technical implementation at first. Don't think about "how do I solve this problem with code?". Think about how you would solve it yourself, as a human. If you were given a sentence and asked how many words are in the sentence, you would easily be able to answer the question. But ask yourself, how do you know how many words are in the sentence? What is your brain implicitly doing to recognize new words? Break down the "complex" scenario and identify what really goes into accomplishing it, and then it will become clear how to implement the solution via coding. You build your problem solving skills by forgetting about programming and focus on identifying the simple steps in a complex problem. One last thing you can do to really help is pretend you are the computer, or the software; if you were given a problem to convert certain input to certain output based on a set of rules, how would you do it? You can literally do this with a paper and pencil to identify the pattern or algorithm that solves your problem. While attempting not to beat a dead horse, I'll say it one more time - separating the problem solving from technical skills will help you become a better software developer.
Last, but definitely not least, is passion. To be a great software developer, and a fantastic candidate for a role, you have to have AND show passion. So, what is passion and what does it look like? Well, if you use Google (like any good developer should), you can find that a simple definition for passion is "strong and barely controllable emotion". When someone is passionate about programming, they have a desire to continuously learn more, to touch different technologies, to solve problems, and to even program in their spare time (yes, as a hobby). They find enjoyment in building and creating something new and in finding better ways to accomplish things they've done before; it's a drive for constant progression. What does this look like? In an interview it looks like the candidate enjoys the topic of the conversation, and is curious and willing to learn more. Even thought it's acceptable to feel nervous in an interview, a candidate with passion will seek to learn everything possible from the interview. If they don't know the answer to something, admitting and asking to know the answer is okay! It's also okay to pick the interviewer's knowledge on topics your curious and want to know more about. Outside an interview passion looks like having a side project, tinkering with new concepts you are learning, and being actively engaged in the community. Yes, we all have our personal lives and priorities that take time and are important. You don't have to go to every meetup or hackathon in your city to be passionate. In fact, you don't have to go to any; each person's passion can manifest differently. These are just some things that those developers who clearly have passion for technology tend to do. However, the bottom line with passion is that if you have it, you will know you have it, and others watching you will too.
These three traits are at the core of what makes a good software developer, and in turn, a good candidate. Practice the tools needed to build technical skills, separate implementation from problem solving, and get freaking passionate about what you are doing! If you continuously build these three traits (which you have every ability to do so!), then you will be successful, whether that means landing that first job, getting a promotion, building a fantastic product, mentoring other developers, or however you define success in software development.. you will be successful.
If you would like to pursue a career in software development, whether as a first career or if you are making a career change, check out the programs we offer at www.promineotech.com. Our mission is to provide an affordable, low-risk path into the industry as a software developer so that students can focus on learning and getting a job rather than debt.