Niklas has posted 30 posts at DZone. You can read more from them at their website. View Full User Profile

Characteristics of successful developers

11.16.2011
| 7035 views |
  • submit to reddit
Many blogs exist about personal (soft) characteristics of successful developers. Here is a short listing of some interesting links:

50 characteristics of a great software developer
Top 10 Traits of a Rockstar Software Engineer
Five essential skills for software developers
Manifesto for Agile Software Development
Manifesto for Software Craftsmanship

This one blog now is my personal view on that very topic. It's of course subjective to my own history and environment and I don't claim that the list is complete. Also, I do not have the discipline to always have all those characteristics a 100% myself. We're all humans, so don't take them to serious :-) Last not least: success must not be the target of your work. The target is to work on your own virtues, some of those virtues are the topic of this blog.

The will to be good at something

It's not easy to work as a developer! I say that for a couple of reasons that make our lifes a little harder compared to other professions. The fact - for instance - that the technology cycle in the IT world is very short, the actual knowledge becomes outdated in a few years. Therefore, we need to learn continuously - new things get important. To stay on top of things we really need the strong will to be good at our job. That's probably the most important characteristic to me: being an excellent knowledge worker with great technical abillities, and have the will to be that over decades!

To ask one's way

Because it's impossible to know everything to do the job, it's absolutely necessary that a developer finds its way through a new topic. How I typically do that is I use google and I talk to other experts to find out what they think. "I did not know what to do!" is not an argument for me. 'Cause if I didn't know enough about that new technology yet, I spent the energy that's necessary to learn what I need to know to do the job. We need to work through the learning curve and make the last-ditch effort to get good at what we're doing!

To make oneself useful


If I have some time left because I completed my tasks earlier then expected, then: I take a coffee and play tabletop soccer. I take a rest. Afterwards I think about what I could do that helps the team to achieve its targets, 'cause some of my team mates probably didn't finish! (at least if I didn't met them at tabletop soccer) If everyone's finished then I think about improvements to the process or team organisation. I make myself usefull.

To care

Some years ago I attended a software architecture course held by one of my idols Dana Bredemeyer. I had a discussion with him what it really takes to make a team successful or to be a successful team leader. He said: "Well, you need some people that really care!" I think there is a lot truth in that statement. If we do not care about quality, timelines, good team culture, respectful communication (!!), clean code, software-craftsmanship, if all this doen't matter to us, then I believe the probability is higher that we fail.

Being productive

Peter Kruchten put it right in his TAO for the software architect:

"Those who know don't talk.
Those who talk don't know.
Those who do not have a clue are still debating about the process.
Those who know just do it."

I am trying to be productive every week - at the end of a week I look back and I ask myself what I have produced. This could be paperwork, community days or (best!!) programming code.

Working solution-orientied

In many situations where people had trouble to achieve it's targets I saw them debating about all the problems and the difficulties to solve the issue. They blamed each other and discussed about THE PAST. I am trying not to do that, I don't blame others, I don't just look at the difficulties. I am trying to suggest solutions instead! And yes, there is always a solution to a problem. Most of the times there are at least three solutions.

Be good with people

Because our job typically involves to work in a (most wanted: cross-functional!) team, it's important that we're (more or less) good in dealing with other individuals. They have their own strengths and weaknesses, just like ourselves. It's important to treat all the team mates with respect, regardless of their technical competence or contributions. Of course, sometimes people deserve a clear statement, but try to do these things one-on-one. Make sure nobody looses his face. Attend the meetings at the coffe bar, be good at tabletop soccer and go out once in a while to have a beer with your team. You know what I'm talking about.

That's it. I am looking forward to your thoughts and comments!

 

From http://niklasschlimm.blogspot.com/2011/11/characteristics-of-superior-successful.html

Published at DZone with permission of its author, Niklas Schlimm.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Anilchandra Noo... replied on Wed, 2011/11/16 - 2:27am

This is fine grained article to the max what it means to be a real successful developer if one not having any of these it is time to change.

Niklas thanks for excellent article.

Somenath Mukhop... replied on Wed, 2011/11/16 - 4:30am

in one word its passion....

Lindsay Gordon replied on Wed, 2011/11/16 - 4:13pm

This is a great article and I think it is applicable to a lot of professions.  Thanks for sharing! 

Thien Nguyen replied on Thu, 2011/11/17 - 11:18am

Excellent article. As a Java freelance developper, must of the avise apply for me.

Michael Schenk replied on Tue, 2011/12/13 - 11:13am

I totally agree, Niklas.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.