Note: I originally wrote this post way back in 2011 but I managed to dig it up on web.archive.org. That being said, I think it remains relevant today.
I was asked recently by the Human Resources department of the company I work for to answer a few questions for a student that was interested in working for our company. I was e-mailed a text file consisting of roughly 10 questions.
Most were the types of questions you would expect from a student eager to know more about what life in the workforce would be like — questions like: “How do you like your job?” and “Is it beneficial to have a certificate in web development?”.
But there was one question that really caught my attention because it got me thinking about the common denominator behind why certain people succeed in the software industry and why others are less than successful. The question was: “What are the most important software development skills?”. I know, simple question right?
I briefly contemplated answering the question by listing off a few bullet points of technical skills and technologies that I thought would serve an up-and-coming student well if they were coming into the industry today. But the truth is that the software industry, and more generally the technology industry as a whole, is in a constant state of change. Current technologies are improved upon or become obsolete, and new technologies are constantly under development.
I ended up answering the question by listing just two skills. Although I have only been working in the software industry for about three and a half years, these two skills seem to play a major role in the success of people in the industry:
The desire and willingness to constantly learn new things The ability to balance business objectives with software best practices The first point is motivated by the fact that the software industry is constantly changing. The people that tend to succeed are not necessarily the people that know the most today. I’ve seen people starting off with relatively few technical skills surpass other more veteran developers simply because they had a greater appetite for knowledge.
The second point is also very important. As software developers we always want to write perfect code so that it will be easy to extend later if new features need to be added. While there’s nothing inherently wrong with this, it’s important to balance this desire with the objectives of the business we’re working for. Businesses have deadlines and it’s important to write the best code that you can in the promised amount of time.
Feel free to drop a comment if you have your own thoughts about what the most important software development skills are. I’m really interested to hear other people’s thoughts!