March 11, 2012 at 11:23 pm
Comments posted to this topic are about the item Great Developers
March 12, 2012 at 1:04 am
Steve,
Interesting idea, but I am not quite certain. I would go one step further and say there is only room for one genius on a team, they can do some wonderful things, but they need other solid performers around them to deal with all the other stuff.
You are certainly right that they have to fit the team. Another thing is to let the team workout where to use them - others in the team will workout when to give them problems.
In one case I can remember the most valuable people on the team were not the "great developer", they were the guy who kept the day to day happening smoothly, and the guy who was almost a great developer, but was a great team player.
March 12, 2012 at 7:38 am
Bill Gates once said something to the effect of "A great developer is measured by the size of his/her toolbox." In my words, that simply means a great developer doesn't always try to reinvent the wheel. A great developer uses what is already at his/her disposal and he/she goes by a very simple rule whenever possible. KISS. Don't over-complicate the obvious and don't try to make a masterpiece out of it either. 😀
"Technology is a weird thing. It brings you great gifts with one hand, and it stabs you in the back with the other. ...:-D"
March 12, 2012 at 8:55 am
I think a great developer can partially be measured by how well or if he (or she) is willing to consider that his ideas are not automatically the BEST or only ideas.
Perfect example, in my view. A few years ago two developers, one SQL and the other more front-end oriented got together to design an application to support a very large application's configuration. Each had their own ideas as to how the thing should work, and there was some overlap right at the beginning but not more than about 25%. But both were not locked into their respective views and were willing to consider the others ideas. What came out of that was an application that didn't require a single front-end change for 5 years but the back-end/front-end interface was flexible enough to handle significant changes to the configuration requirements over that same 5 year period. And the only reason it was eventually changed was to handle configurations that were VERY different than anything previously used and to provide some reporting and search capabilities. All-in-all a very successful app..
While Steve also touched on the amount vs. quality of work. This makes me think about optimistic programmers who assume everything will go well everytime when unfortunately that is sometimes not the case. It takes longer to code for potential problems and takes a certain mentality to even consider where they might come from. Also a really good developer likely has a cache of scripts to call upon for many cases and those scripts can be modified for more specific cases.
Big picture understanding is also important. You might be coding this little piece of a wider project but if you understand how it fits in overall you might design it a little different to fit in better or be more flexible.
Self-direction also plays a big part. I knew a developer, nice guy, fairly good developer, not real inventive, not good with the big picture, and not self-directed. He could get the job done if you gave him direction but was a ship without a rudder without that direction. I'd categorize him as an average developer for these reasons.
There is certainly more than one category to determine whether they are poor, good, or excellent developers, but by definition there are gonna be a lot of average developers and only a few stars..
CEWII
March 12, 2012 at 9:10 am
Self-direction also plays a big part. I knew a developer, nice guy, fairly good developer, not real inventive, not good with the big picture, and not self-directed. He could get the job done if you gave him direction but was a ship without a rudder without that direction. I'd categorize him as an average developer for these reasons.
I agree, it really pays to be self-directed and a self-starter. I have worked with a lot of people in the past myself that basically stop in place if you don't tell them what the next step is, or they take months to do something that should have taken a week to do. But those people don't tend to be around for long anyway, unless of course they work for the government. 😀
"Technology is a weird thing. It brings you great gifts with one hand, and it stabs you in the back with the other. ...:-D"
March 12, 2012 at 9:57 am
As far as value of great dev vs good-enough goes, I would say it depends on what you're trying to do.
If your goal is to use technology in an irrational manner (creative, non-intuitive, innovative, artistic, et al, as opposed to conservative, normal, commodity, as a definition of rational vs irrational), then you need a genius dev or something comparable. If your goal is to build commodity software, perhaps just some tools used by your own offices, then you don't need to pay genius rates for good-enough work.
As far as 100:1 ROI, I guess that would depend on what the genius ends up doing. By its very nature, genius can't be predicted by non-genius, so assuming ROI predictions can even be made is a bit ludicrous.
- Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
Property of The Thread
"Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon
March 12, 2012 at 10:25 am
As with most open discussions, it appears that the definition is debatable. Personally, I believe that there are a few traits that are essential for a developer being above average:
Soft skills - No point doing the wrong things brilliantly or upsetting everyone.
Compliance - If you need to fit in with other things then you must be prepared to do so (not matter how bad the other thing is).
Bravery - Conviction in your own belief is essential e.g. if you truly something is important then you must be prepared to say so.
Knowledge - You must know your stuff.
Experience - You must know how to apply your stuff.
Consistent - You must be able to repeat your achievements.
Enthusiastic - You must want to do it well being able to is not enough.
Forward looking - You must want your efforts to succeed as much for tomorrow as for today.
I have come across so many developers who lack on so many of these but that does not make them worthless. There are plenty of good and average developers who lack something on this list but they are great team players, delivery on time and deliver quality. There are also some so called "guru" developers who expect to always get their own way and will bring down the team but care little about it because their little island of work is "brilliant".
When I am working within a team I prefer these so called average developers over egotistical "guru" coders. It is nice when you get great developers and I agree with Steve that they are worth grabbing when you can but I think one needs to be careful not to upset a productive team.
Gaz
-- Stop your grinnin' and drop your linen...they're everywhere!!!
March 12, 2012 at 10:28 am
A more important point is that removing 1 bad programmer is worth gaining 100.
Removal, of course, can be through an individuals change of practices and implementation through mentoring and training.
Gaz
-- Stop your grinnin' and drop your linen...they're everywhere!!!
March 12, 2012 at 10:58 am
I would agree that I don't need an egotistical developer on the team. However, that is different than a great developer. A truly great developer does several things that an average developer does not:
1) Shows others on team better (not just newer) ways of doing something that leads to smaller code print and thus fewer bugs/maintenance
2) Pushes the envelope for what a system can do by bringing creativity. This vision can't be replaced with "more medocrity"
3) Helps others to grow and learn by being the go to person and by showing by doing
4) Typically thinks about a system from a different standpoint which leads to revolutionary design as opposed to evolutionary design
All in all, a great developer still is a part of a team. They need to be confident without an over-the-top ego. I think back to some of the sports icons of my time. Larry Bird was an example of a standout that wasn't unbearable to be around.
March 12, 2012 at 11:06 am
Rob Nickolaus-860201 (3/12/2012)
I would agree that I don't need an egotistical developer on the team. However, that is different than a great developer. A truly great developer does several things that an average developer does not:1) Shows others on team better (not just newer) ways of doing something that leads to smaller code print and thus fewer bugs/maintenance
2) Pushes the envelope for what a system can do by bringing creativity. This vision can't be replaced with "more medocrity"
3) Helps others to grow and learn by being the go to person and by showing by doing
4) Typically thinks about a system from a different standpoint which leads to revolutionary design as opposed to evolutionary design
All in all, a great developer still is a part of a team. They need to be confident without an over-the-top ego. I think back to some of the sports icons of my time. Larry Bird was an example of a standout that wasn't unbearable to be around.
I agree with all four of the above and I would add a fifth one:
5) A truly great developer provides great documentation with his/her code as well. 😀
"Technology is a weird thing. It brings you great gifts with one hand, and it stabs you in the back with the other. ...:-D"
March 12, 2012 at 11:18 am
TravisDBA (3/12/2012)
Rob Nickolaus-860201 (3/12/2012)
I would agree that I don't need an egotistical developer on the team. However, that is different than a great developer. A truly great developer does several things that an average developer does not:1) Shows others on team better (not just newer) ways of doing something that leads to smaller code print and thus fewer bugs/maintenance
2) Pushes the envelope for what a system can do by bringing creativity. This vision can't be replaced with "more medocrity"
3) Helps others to grow and learn by being the go to person and by showing by doing
4) Typically thinks about a system from a different standpoint which leads to revolutionary design as opposed to evolutionary design
All in all, a great developer still is a part of a team. They need to be confident without an over-the-top ego. I think back to some of the sports icons of my time. Larry Bird was an example of a standout that wasn't unbearable to be around.
I agree with all four of the above and I would add a fifth one:
5) A truly great developer provides great documentation with his/her code as well. 😀
You are both right. I just wanted to point out that some amazing developers are useless in reality.
I do particularly like:
better (not just newer)
Gaz
-- Stop your grinnin' and drop your linen...they're everywhere!!!
March 12, 2012 at 11:28 am
I would definitely agree, particularly if all they are concerned about is their own job security. Then they don't usually share or document what they do.:-D
"Technology is a weird thing. It brings you great gifts with one hand, and it stabs you in the back with the other. ...:-D"
March 12, 2012 at 11:31 am
Interesting discussion. I'm not sure how to respond, because of all of the great feedback I've seen. I'd like to think that I'm a great developer (in the sense that you described it, Steve), but I'm probably not. I am the one that everyone here goes to, for information. Even though that is one person's qualifications for a great developer, in my case people come to me for help primarily because I've been here so long. I know the database and applications better than anyone else, due to longevity.
However, I have known a few great developers. They were truly brilliant. I can remember this one project I was working on several years ago (not at my current employer). I was stumped as to how to solve it. I didn't know a system very well at all and although I spent a month researching it, I couldn't find a solution. Finally they brought in another fellow ( forget his name) to help me. He didn't have any college education at all; had worked his way up from a computer operator position (this was on VAX'es). He had taught himself how to program and knew the system we were working with very well, due to having spent years at it. (It was a very large commerical product we purchased to help with manufacturing.) He came in and within a day had a solution which would work. I implemented it in about a week after that meeting. That guy was truly brilliant. However, he was very hard to work with. He "suffered no fools", as the saying goes, and because he was so smart most of us mere mortals were fools, in comparison. He was the sort of people you wanted on your team, to get you out of Gordian knots, but you never wanted to work with him. I agree with whoever said it, that I want someone who also has good soft skills. In my words, I would say someone who is brilliant, yet humble. Lacking that in a person, I'd rather have a good team of good developers around me, rather than 1 brilliant developer who treats others like dirt.
There is one caveat, though to what I've said. I've never had the pleasure of working in a company that produced outstanding things that took the market by storm. Therefore, I can't speak from experience. However, I wonder if these brilliant, antisocial developers aren't the ones who produce the truly great products, like iPhones, Windows , etc. Seeing what no one else sees and making it happen.
Kindest Regards, Rod Connect with me on LinkedIn.
March 12, 2012 at 11:56 am
Good points Rod. This kind of makes me think of Albert Einstein. He was probably the most brilliant mind the world has ever known, but his own son Hans couldn't stand him, and they were estranged from one another their whole lives and Albert left him very little of his inheritance. I guess you have to keep things in perspective as to what is really important in life. 😀
"Technology is a weird thing. It brings you great gifts with one hand, and it stabs you in the back with the other. ...:-D"
March 12, 2012 at 12:02 pm
So how does one know that the person they are inteviewing or meeting is a "humble genius" rather than an "overbearing rock star?"
Viewing 15 posts - 1 through 15 (of 46 total)
You must be logged in to reply to this topic. Login to reply