4 Characteristics Of Every Great Developer
We spend time carefully fostering what we refer to as "a community of developers for developers". While it might sound like an altruistic endeavor to allow local talent to congregate and collaborate, we believe it’s an essential component of every successful software development project. But there’s something in that picture that needs explaining and it speaks to the very reason we seek out excellence in Kansas City:
NOT ALL DEVELOPERS ARE CREATED EQUALLY!
With that in mind, let's take a look at 4 Characteristics Of Every Great Developer. This isn't meant to be an exhaustive list, but these characteristics are ones that are critical to successful software development projects.
1. Pure technical excellence. This one kinda goes without saying, but any great developer has extremely strong technical acumen.
2. Be a good systems thinker with the ability to understand how technology fits with business needs and knowing how to deliver value AND software.
3. Be a strong educator. When confronted by users “not getting it,” a good developer takes the time to explain choices and options in technology. Software development is truly a learning culture and placing clients within that team spirit affords the highest possible business value.
4. Strong written and verbal communication skills. We saved the best for last and want to expand on this topic because we believe it is increasingly important and not discussed enough in the developer community.
We believe it’s important to speak directly to the traditional criticism surrounding the lowered expectation levels for communication skills in IT. While below average interpersonal skills are not unique to IT, we believe they lead directly to antagonistic client relationships, misunderstood software requirements and ultimately delayed projects. Stressful communication environments quickly erode customer confidence and can provoke the need for intermediaries. Business analysts, for example, are often simply replacement ambassadors to this forced need for mediation and translation.
Forcing the developer/client relationship into the realm of signed and sealed paperwork does not mitigate this antagonism either. We believe it only exacerbates it. Face-to-face collaboration is critical to project success and breakdowns in communication should be addressed directly and personably. When done correctly, the end result is successful, collaborative software that meets the needs of the client.
Have you ever sent an email or instant message to a client where the tone or intent of your message was misinterpreted? Developers who choose email or instant messaging as preferred methods for communication run an increased risk of miscommunication. While that preference might be appropriate for developer-to-developer interaction, we prefer face-to-face or phone calls when collaborating with a client. Email carries with it an inherent danger of allowing people to be braver (and less personable) than they otherwise would be face-to-face.
Additionally, blogging, writing articles, and speaking engagments are invaluable ways to stand out from the crowd of technical excellence. We not only hire educators and public speakers; we also encourage every developer to have their own personal blog and to contribute to the SilverFern blog.
Clearly, everyone has different levels of proficiency when it comes to written and verbal skills…and that's OK. The only way to get better is to continue to fine tune these skillsets (just as you do your technical proficiencies) and seek out feedback on how to improve from people you trust and respect.
Those in our industry that do will undoubtedly evolve from good developers….to great ones. And that's GREAT for everyone involved.
What do you think? What have you done to improve your communication skills? What other characteristics do you think are important to becoming a great developer?