Live data from Hacker News

The Number One Trait of a Great Developer

engineyard.com

21–30 of 72 posts

Re: The Number One Trait of a Great Developer

#21
I think the truth of this article depends on the size of your team.

If you're hiring only one to a few developers, it's likely that you need your employees to self manage. They need to strategize, have realistic expectations, and fulfill them to the best of their abilities. "Dianne," the good developer, demonstrates these skills. So, judgment is important from this kind of developer.

However, I think that "Dianne" would be best suited to a more managerial position, focusing on her strategy skills and ability to relay needs to other developers. Handing off the implementation details to a team of rockstars, with deep and varied proficiencies, would make for a spectacularly complementary team.

And in the latter case, your best developers are - and should be - rock stars. You need to consider not only how you want your code to scale, but how your company will.

Re: The Number One Trait of a Great Developer

#22
post #13

This article is totally true, but almost impossible to act on. It's very very hard to differentiate people who have a passion for doing good work and people who just like to play with the latest trendy technology. Especially since the latter is often just an immature stage of the former.

I'm not sure I agree. Resume-driven development or novelty-driven development seem to stand out pretty boldly in my opinion.

I'm always impressed by developers who systematically explore new technologies as part of their "non-commissioned" time. I'm a huge proponent of this.

Re: The Number One Trait of a Great Developer

#23
I agree with the gist of this article, but there is an opposite side to this piece as well.

We do need those developers that pick the most wild, crazy, and bleeding edge technologies. New technologies shouldn't and certainly don't solve every problem out there, but they often tackle a couple of really interesting areas quite well. At the very least they allow us to question and rethink our current development stacks. Also, being one of the first to adapt to a technology has it's benefits, not saying that it justifies the risk, but it should be considered.

Also I think node js and cassandra are pretty easily maintainable, but thats not really what this is about :)

Re: The Number One Trait of a Great Developer

#24
post #11

Earlier quoted context omitted.

Sure, but I wonder if two years in Ruby, or any language, is enough? A superstar dev might go out and try a lot of the new, cool stuff, even when it is needed. But it seems that that developer would also have a grasp of the common characteristics of bad technology. So I think there are at a minimum two good traits of a great developer. The rockstar-like quality of having the skill, curiosity, and breadth of knowledge…

Two years? I think you can learn everything you ever needed to know about a language in a much shorter time period than that.

Totally agree. For example, if a web dev wants to try a new language/framework, he or she can be competent in a few weeks and well-versed in 3-6 months. No?

Re: The Number One Trait of a Great Developer

#26
What this article is saying is you need someone with experience to make the right judgement. This means you need to find someone that has already gone on the 5-8 year roller coaster that a developer goes through. This from the 'just get something working', to astronaut over-architecture, to practicality that might come with running many projects and being through many successes and failures.

A good developer might be at any stage in that process and it is really a timing thing. Typically after 10 years most developers have this as long as they have not become too pessimistic and have experienced many platforms, not religious to any of them.

Experience with a beginners mind that is willing to innovate still, is the perfect balance of a 'great' developer.

Re: The Number One Trait of a Great Developer

#27

How do you know/decide what a "good" solution is? It all depends on what you already know and what your team is best at. And although a "simple" solution may look like the best choice, it too can have the same problem of maintainability.

I agree with the first point. Development is usually a team effort. Effective teams generally play of their strengths. This is probably more important than having a rockstar on board.

Isn't simple code inherently more maintainable. I can see it having the problem of lacking scalability, but prematurely building in scalability is the root of all evil...

Re: The Number One Trait of a Great Developer

#28

The article is a good example of a false dichotomy. http://en.wikipedia.org/wiki/False_dilemma

What dichotomy? Are you being misled by the fact that the article uses only two examples? That's a rhetorical shortcut, not a proposed dichotomy. The article does not actually claim that "those who use Sexy Tech X tend to have bad judgement" or anything like that. What it says is that folks with good judgement use appropriate tools for appropriate reasons, which may be situational.

I'm not making a rhetorical argument. You should take me seriously.

The article stereotypes "rock star" developers as being obsessed with using the latest tools and compares them to more "average developers" who (it is claimed) better know their limits and ship more maintainable products.

I believe that this is a false dichotomy.

There are plenty of "rock star" developers who ship maintainable products which use appropriate technology. There are far more "average developers" who ship awful, barely-functional code because they're only able to use a limited set of technologies.

Re: The Number One Trait of a Great Developer

#29
post #11

Earlier quoted context omitted.

Sure, but I wonder if two years in Ruby, or any language, is enough? A superstar dev might go out and try a lot of the new, cool stuff, even when it is needed. But it seems that that developer would also have a grasp of the common characteristics of bad technology. So I think there are at a minimum two good traits of a great developer. The rockstar-like quality of having the skill, curiosity, and breadth of knowledge…

Two years? I think you can learn everything you ever needed to know about a language in a much shorter time period than that.

If you are already an expert programmer who knows a few similar languages, then sure.

If you are already an expert programmer who knows different languages, then two years may be enough, or it may not.

If you are not already an expert programmer, then two years is unlikely to be enough. Peter Norvig suggests it may take ten years to become an expert: http://norvig.com/21-days.html

Example: I have been programming for a little over ten years (though not all of that time was professional programming); have a degree in software engineering; have worked in telecoms, web development and recently in embedded systems; have used C, C++, Java and Python professionally; I am a self-described language enthusiast who likes to tinker with, try out and apply a variety of languages (factor, scheme, clojure, prolog, ocaml, haskell and a few more to a lesser extent). BUT I still learn new things about the languages I use. I still feel I have a lot more to learn. I first started using Python in 2001 or 2002 and I still find myself learning useful new things.

So, sure, you can learn enough to effectively use a language in a lot less than two years, but I think it will take a lot lot longer to learn "everything you ever needed to know about a language".

Re: The Number One Trait of a Great Developer

#30
This post just listed traits very prominent in hackers - deep fascination for technology, perfectionism, need for deep focus and few distractions, concern for efficiency - and wrapped this package under the label of "lack of judgment".

The problem I have with such generalization is that these scenarios are always a bit caricatural and are usually presented in a way that nicely fit the argument.

The experimental developer is required to build simple stuff, but goes to extremes just because he wants to toy with new technology, while the great one is praised for her conservative approach. It also helps that she asks exactly the right questions and receives the right answers.

“How many devices do we expect to have?” “Well, we hope to sell 500 in 12 months.” “How often will they need to report in?” “Roughly once an hour.” “How reliable is the network?” “It’ll use WiFi, so fairly reliable.”

In reality, sometimes you ask these questions, you get very accurate answers and based on that, you pick some technology that you believe will spot on address the problem. You might even make the judgment call that you have enough wiggle room to include one or two new concepts you've been curious about, that are yet still very relevant to the task at hand.

Then something happens mid-project and it turns out that what was originally requested wasn't actually what was needed. How many times has that happened?

Two possible conclusions in these situations, for either developers:

- the "rockstar" either looks like a god, for having foreseen some problems, or he'll be the guy who brought a tank to a knife fight.

- whereas the "great developer" will just look incompetent, or she'll just be, well, great.

Judgment is a nice trait for a good developer, but it is subjective. There are some hits and some misses.

What I believe makes a _great_ developer is the fact that they might work to push their own boundaries, which is the reason you're interested in them in the first place, but most importantly, when they do, they stand by their work.

I can't embrace a definition of a great developer, where the primary quality is to avoid causing trouble for the company, the project, the team or their boss. That has almost nothing to do with the discipline. You're describing a "great employee" or a "great team player".

The exact description of a great developer given in this article might absolutely not work in other environments, where developers are required to push the envelope and think outside the box. In such context, your great developer might be thought of as mediocre at best.

Post reply on HN