Live data from Hacker News

The Number One Trait of a Great Developer

tammersaleh.com

11–20 of 122 posts

Re: The Number One Trait of a Great Developer

#11

A star, in my book, is someone who gets the job done quickly, methodically, and maintainably. This is an old story, but I guess it has to be retold every few years, to inform newer developers and to remind older developers (and management).

Sadly, in most cases you can only choose two of these qualities.

Re: The Number One Trait of a Great Developer

#14
Dianne's solution creates a maintenance problem if the number of devices grows too much or if network stability is a problem, or if there is an expectation down the line of, for instance, push sync.

My point is not that her solution was not valuable, but that to suggest that the maintainability of the two solutions is black and white like this is wrongheaded.

The really unfortunate implication here is that learning new technologies is either something that shouldn't happen or something that shouldn't happen on the job. I'd say that something with these requirements would have been a perfect opportunity for Diane to, "learn postgres," if she felt that it would have been better. The extra day or two of effort would likely pay off – if not on this project, then on the next.

> but she also knew that anything much more complex would be beyond her current skills.

And with this mindset, her skills for the foreseeable future.

Re: The Number One Trait of a Great Developer

#15
This is a problem because writing working, maintainable code that solves the given problem rather than an imagined problem should be the trait of a competent developer.

I had the pleasure of going on a course run by a German developer recently, and his brutal focus on quality and maintainability made me rethink what we class as a good developer. Brutally in the article Jack is not a rockstar - Jack is incompetent. A great developer solves complex problems in a way that is maintainable - the problem is that most problems aren't that complex. Dianne however didn't do anything that made her "great" - any developer who can't do the kind of engineering practices she did should be fired.

Hacking on something in your spare time is completely different, but as soon as you want to work on something that others will work on as well you need to be into that engineer mindset. It's one of the things that impresses me about Patrick McKenzie's writing, and his experience of learning that the hard way in Japan.

Re: The Number One Trait of a Great Developer

#16
post #6

Maybe it's just because the post is out of date now (2011) but I'm not sure why "new technology", "rockstar" and "produces unmaintainable code" are all conflated together.

Because rockstar programmers tend to use the latest technology in bizarre ways which makes for unmaintainable code?

Does "rockstar" mean "bad" in this context? Because "using the latest technology for the sake of it" is not a trait of a good developer, and I have no clue what the hell "rockstar developer" means any more (unless they're also in a major rock band, then I know what it means).

Re: The Number One Trait of a Great Developer

#17
post #12

No, that's the number one trait of a great employee - and the sign of a leader. The number one trait of a great developer is literally their ability to quickly write amazingly elegant code and manage complexity.

... which is exactly what the OP is saying.

"Writing elegant code and managing complexity" means using proven and familiar technologies (or spending enough time to know them inside out).

If I could upvote the post by 10, I would - so true.

Re: The Number One Trait of a Great Developer

#19
post #4

Yes, yes, yes, and thrice more yes. We embrace complexity at our peril. Dullness is a virtue.

"Dullness is a virtue" It's not as simple as that though - it all depends on the context of the project. Sometimes it is perfectly OK to go crazy and use bleeding edge technology other times that would be daft - it all depends what you are trying to achieve mixed in, as the article says, with a heavy dose of judgement.

It's about how you use bleeding edge technology though, especially after playtime is over and you've established it does what you want. All too often the engineering of things like abstracting the bleeding edge tech, or documenting what is going on gets forgotten. Then some other poor soul is left to pick up the pieces when said bleeding edge tech released a breaking API change.

Re: The Number One Trait of a Great Developer

#20

Yes, yes, yes, and thrice more yes. We embrace complexity at our peril. Dullness is a virtue.

I think one of the big valuable traits of a good programmer is a real fear of complexity. But I don't think the biggest problem is the complexity that comes from "rockstars" and over engineering. I think it's a way bigger problem that complexity tends to grow uncontrollably as features are added and bugs fixed. Especially when the domain is poorly understood and when the team isn't focused on keeping a coherent and simple system.

This kind of creeping complexity isn't introduced by mavericks because it's fun. It arises because of a conservative tendency to never throw anything out, to avoid refactoring, to be afraid of changes and simplifications. And also because of simple incompetence in design. Special cases multiply, no fruitful abstractions are introduced, the team's language is confused.

Post reply on HN