7 ms·
No Silver Programmers
- pius 19y agoCertainly food for thought. I think the author underestimates just how bad some programmers are, though. To me, his assertion that there is some arbitrary limit on the productivity differential between any two given programmers is much harder to prove than the assertion that there exist some programmers who are 20x better than others.
- eVizitei 19y agoThere are definately some programmers who are 20X better than others, but I think the authors point was that the 20X difference is between programmers who are 3X above average and programmers who are multi-X BELOW average. The myth is that there are some super-coders who are 20x better than your average decent programmer, and I think that would be difficult to substantiate.
- ojbyrne 19y agoNice article as far as it goes. I've always felt that the productivity of all developers is affected greatly by all the other mundane tasks that surround the programming - communications, deployment, answering the phone, logging in, futzing in general - and that they are much better targets for productivity improvement. That's why I find the recent rails vs. php deployment discussion very interesting. I've been working on a django app for a while, and while I enjoy the language and framework, I suspect any (slim) productivity increase I have gained will be negated by the deployment.
- gruseom 19y agoHe's right that almost all the discourse on this topic is anecdotal and that the literature basically sucks. It's surprisingly difficult to find hard evidence for the claims people make about software development. The only good, readable source I know is Robert Glass' Facts and Fallacies of Software Engineering, which systematically cites research, most of which is surprisingly weak.
- imsteve 19y ago> find me a peer-reviewed study of individual programmer productivity among professionals not students Often, five man development teams create products that are very successful while thousand man development teams create a product thats useless and basically has no value. Thus the five man teams were way more productive. This happens all the time. Also, the same principal can be seen on an individual level within projects. There ya go pal. It would be a waste to do a peer reviewed study just to confirm something so obvious. You could even say that they reviewers would be "less productive" if they spent their time doing so;)
- deleted 19y ago[deleted]
- marcus 19y agoHe lists C++ and C# as his favorite languages, and I tend to agree that with these languages you can't really be x100 more productive than the average competent programmer. That kind difference is only possible in languages that are more expressive & condensed, where you spend most of your time thinking not typing.
- imsteve 19y agoI'd program in raw machine code if it meant that I could live in HI.
- Tichy 19y agoCome on, that has to be bullshit. I sympathize with the new "power languages" hype, but it can't be that much of a factor. Even with C++, C# or Java, you spend most of the time thinking. You don't even type all that much, because of the IDE support... Actually I recently thought about the "dependency on IDE makes you miss out on cool languages argument", and you could basically just turn it on it's head: rejecting IDEs makes you miss out on a lot of cool features, too.
- marcus 19y agoSo on an every decent sized project in one of those languages most of the code is boilerplate code you didn't even write but which wastes your time and brain cycles when you tinker with the code. Another interesting statistics that has been researched throughly is that productivity in LOC/hour is pretty much constant for programmers in all languages, which pretty much translates into higher productivity with more condensed languages. Check out these links for some real data: http://norvig.com/java-lisp.html http://norvig.com/java-lisp.html http://wwwipd.ira.uka.de/~prechelt/Biblio/jccpprtTR.pdf http://wwwipd.ira.uka.de/~prechelt/Biblio/jccpprtTR.pdf http://www.flownet.com/gat/papers/lisp-java.pdf http://www.flownet.com/gat/papers/lisp-java.pdf And this research was on a toy problem, not a real world project, on those the differences greatly intensify.
- pg 19y agoWould he deny that there are good programmers who can do things that bad ones couldn't no matter how much time they were given? This is true in other fields; why should programming be any different? And if one programmer can be infinitely more productive than another, he can also be 20x more productive.
- greendestiny 19y agoYeah the problem is the scope of the problems he's imagining. Given a task that takes a great programmer several months to complete, I can easily imagine a team of average programmers taking man-years to complete it. The open-source community is full of such projects and before anyone says they are all copies, so are most average software company's products. There isn't much data on single average programmers taking years to do projects because they just don't work alone and on one project for that long. A mean measure probably isn't a good way to break down the difference as it's likely to be infinite far too often.
- acgourley 19y agoThey would only be 20 times better or infinitely better at those particular tasks though. That seems right to me, it seems like only really Hard problems allow people to show what they are made of, and the easier problems keep the pack more bunched together. It's an important distinction, because a lot of programming is not of the demanding sort described above. It might even be that for some jobs, in some job markets, you don't want to try to hire the best. The cost in salary, recruitment, lost time and turn over might trump the 2-3x gain a top level programmer would offer in a non-challenging environment.
- pg 19y agoPart of performing a task is redefining it.
- shawndrost 19y agoThere are tasks that are strictly defined from the outset: there is an existing code base and tech stack, and you must conform to certain company conventions, and the requirements are strict. I would guess this work constitutes 90% of paid development (and ~2% of useful code). I don't think your argument really applies to those tasks.
- reitzensteinm 19y ago20x is ridiculous - it's far too low. Look at the graph referenced - it describes, on a scale of hundreds of minutes, how long it took programmers to implement something to spec. My biggest problem with this is the time scale. More advanced programmers build generalized solutions to problems and build on previous abstractions. There's no clear limit to how clever someone can be while building abstractions, so the gap between programmers will become greater over larger time periods. Taking a sample of developers creating small, custom websites, better developers will have factored out a lot of functionality into a general purpose web development kit with metaprogramming by site #3 (i.e. created a Django, Rails). Is it unreasonable to accept that: 1) Creating a site with a decent web tool kit is 20x faster than rolling your own with mod_python, and 2) Metaprogramming for creating an (elegant) web tool kit is beyond the abilities of a section of programmers? Now, the barrier to picking up Django or Rails is much lower than writing one, so perhaps this advantage is somewhat less important in a world with open source and extensive libraries? Well, I would argue that in a way, the efforts of the creators of Rails and Django have been multiplied so many times by all the users that they, in effect, have increased global productivity by a factor so large it dwarfs the productivity of a single programmer - so their 'productivity', as measured by the impact they have on the world, is a hell of a lot more than 20x the impact of Mr Blub programmer in the cubicle next door. Why stop at frameworks? What about languages? What is Guido van Rossum's impact on global value delivered by programmers? What about the developers of the microchip? I'm pretty sure my personal productivity would be lower without that. The invention of the internet, which allowed for free sharing of knowledge? What would the productivity of a programmer who invents general purpose AI be? It really depends on how philosophical you want to get. So, sure, the difference between developers creating an application to spec on the time scale of hundreds of minutes is unlikely to be 20x. But that's a garbage metric, and as always, GIGO.
- deleted 19y ago[deleted]
- Tichy 19y agoWhat about PHP, though? The crappiest, least abstracting language seems to be the most productive one. Perhaps abstractions really are just bullshit? I like abstractions, but while I am busy thinking about my abstractions, the PHP coder has already churned out another three no-brainer pages.
- davidw 19y agoSilverback programmers: http://www.newtechusa.com/ppi/talent.asp http://www.newtechusa.com/ppi/talent.asp
- rapind 19y agoMaking any kind of assumptions like this is retarded. The coder umbrella covers too much. Assembly line coders in a large corp are completely different than a freelancer etc. Different skills, different motivators, just plain different. Comparing the two is like comparing two completely different fields... because they really are different fields. Like comparing automotive designers and mechanics. Coder is just too big of a blanket. Articles like this are irrelevant.
- cyanobyte 19y agoI am addicted to programming for startups. I have learned from 1st hand experience and from CVS logs that on most projects 99% of the check-ins and real coding is done by at most 2 guys (usually 1) on a 8-10 man project. I would say, even though I haven't done a study, I see the hard facts every time I check-in code. There really are programmers out there 20x-30x more productive than the rest.