Two weeks ago, I posted an entry based on a visit by Richard Rabins, in which he said: Software developers are not fungible commodities to be bought and sold. You can't grow or train great developers: they just happen. The emphasis on great is mine: it's something that several readers who contributed to the discussion seemed to miss. It was a good discussion, however, and one which bears a recap shorn of the inf Two weeks ago, I posted an entry based on a visit by Richard Rabins, in which he said: Software developers are not fungible commodities to be bought and sold. You can’t grow or train great developers: they just happen. The emphasis on great is mine: it’s something that several readers who contributed to the discussion seemed to miss. It was a good discussion, however, and one which bears a recap shorn of the infighting and personal invective.I asked two questions: Does it make sense to replace a productive but expensive experienced developer with an inexpensive developer fresh out of school? Does it make sense to replace your in-house developers with less expensive outsourced developers? Reader Bob Grommes answered: If anyone has improved their time to market or their quality with offshore development talent, I’ve never heard of it. And I’ve heard plenty of stories that are just the opposite. So in terms of real dollars and true costs I see no simple monetary savings either. Reader CharlieL added: We had an off-shore relationship for a while (that was managed by the vendor through a local PM) and it was great when around 4 p.m. (pacific time) I could send an email to the developer about a problem and leave at 5 p.m. and the next morning at 8 a.m. there would be new code that solved the problem. Basically, it was as if elves had done the work in the night, while I slept. Chip Overclock provided a link to an interesting essay of his own, “People Are Our Most Important Fungible Commodity”. Wilson Zorn took issue with Richard’s statement “You can’t grow or train great developers: they just happen.” He basically argued that training can create great developers. He also rather persuasively cited experiences where “so long as you pass discrete and well-managed tasks, you can get work done just as efficiently offshore as onshore.”C. Doyle argued: The key point is that macro-economics will eventually win out; regardless of where they are located, superior software developers can and eventually will get a comparable remuneration, as this InfoWorld article attests to: /article/07/05/29/riya-wage-inflation-sinks_1.html Dr. R. Bartel distinguished Technicians from Artists, and said: Schools can only teach the “Technician” aspect of programming. The “Artist” as in all art, is unique to an individual and can’t really be taught. In the “technician” aspect, nations such as India have done a good job in giving their graduates a foundation to work on. Finally, Chris Gerrard made the point: The idea that developers are fungible is rooted in the industrial model of efficient mass production of physical goods that underlies traditional business management…. Unlike industrial mass production, software development has no production component…. Developing software is design… Great developers are statistical anomalies, just as are great bakers, musicians, mathematicians, or anyone else who excels in a field that requires a very highly developed combination of specific talents, abilities, and skills. It’s certainly possible to educate and train someone, or a great mass of people, in the first order technical skills of programming. Some fraction of them can even be trained in second order skills. But no amount of training can create great developers from the large majority of any population. Garrard went on to address outsourcing: Fundamentally, developing software at a distance is difficult and expensive. Every unit of distance between the concept and the realization of the software imposes costs in terms of cost, quality, and time to delivery. The increase in cost is more than linear in relationship to the distance. And there are multiple dimensions of distance: geographic, time, language, cultural, experience, and so on. Outsourcing in the “classic” mode of hiring legions of low-cost foreign workers to work in place of local skilled developers is fundamentally flawed, and is beginning to lose its luster. And good riddance to it. I personally think that Bartel and Garrard are essentially correct. I also think that when Richard Rabins talked about a “great” developer, he was talking about what Bartel calls an “Artist”. The discussion is still open, however. Feel free to add your own opinions if you feel there’s another aspect of these issues that needs to be raised. Software Development