Robert Stackhouse wrote an excellent article on his blog titled Frameworks as a Means of Creating Transferrable Expertise. I started writing a response in the comments and ended up going off on quite a tangent. Thus, I’ve reposted parts of his article and my responses here, as well as some followup dialog.
It almost seems as if Microsoft and Sun and every other Framework author out there in the world figured out that training people is expensive, so let’s build a framework to reduce the cost of that training. It is much easier to spoon feed people than to teach them to think for themselves. Microsoft even went one step further and said, “Let’s go one better and try to get the poor schlep who doesn’t have 5 years experience to try to pay for the training themselves;let’s create a certification program.”
The alternative to Microsoft and Sun developing enterprise frameworks as large as .NET and Java is to have people still writing buffer overflows and string format vulnerabilities in C/C++. These frameworks have the huge benefit of making more secure code in many cases, as well as making it feasible for companies to even hire developers full time. If they figure that frameworks cut down development time, they are more likely to invest the money in IT in the first place, thus creating jobs for all of us.
I hardly think training is the issue here. If I had to chose between training someone to the point of proficiency in either .NET/Java or C/C++, I would chose a framework in a heartbeat. The time it would take for entry level programmers to learn C/C++ and the figure out how to be secure and develop worthwhile code would be prohibitive at best, and outright unfeasible at worst.
Certifications make sure people have basic skills and can as they claim. It all depends on the difficulty of the certification. I wouldn’t put much stock in someone with an MCP and little experience. Someone with an MCSD however I would give more attention, even if the relative experience wasn’t equal. The same goes for any IT sector – look at the Security+ (entry level) and the CISSP (serious professional).
Why is it that the same people who will ask every friend they have who the best mechanic in town is (instead of going straight to the Toyota dealer) will trust the word of a Microsoft certification over the word of a developer’s brethren or even his own code?
Again, this is context driven. Looking for a mechanic is a personal endevour that is something almost everyone deals with. Looking for a developer for a corporation is a different context entirely. By the same token, did you know that most of those dealerships won’t hire mechanics who don’t carry their companies certifications? Ford dealerships typically require a certification before they hire mechanics.
It again boils down to something akin to “you can at least perform at the minimum level we require, and we can teach you our development culture.” No two software projects are alike, but .NET is .NET, regardless of where it is used.
Granted not every development shop (even some of the ones who use Microsoft.NET) think this way. The only question is: would you rather have an employee who spends all day programing around the framework, or one that knows when to ditch the framework and look for another one or god forbid roll something from scratch?
The ones who know by instinct to ditch a framework for a more appropriate technology have most likely moved up the chain to a team lead position or management. I think we do have the problem of developers moving into management without having proper communication and management skills. We would almost never take a manager and say automatically that they would make a good developer, so why do we assume the opposite is true? Until our industry learns how to justify our software in the same manner that a machinist justifies a new lathe, we will always have this problem. I’ve seen this more times than I care to remember.
I also don’t really think we should be trying to optimize costs at a human level. Why don’t we instead invest in our employees, train them, and who knows maybe even wind up with a person who doesn’t hesitate to think for themselves and a little workplace loyalty in the end?
Again, look at it in context. Cost optimization at a human level goes on in every industry, not just software development. The salesman who sells two contracts a month will be replaced if he’s being compared to salesmen who sell 10 contracts a month. Can you guarantee that training him will ever pay off? This is the whole existance of HR and reorganization consultants. If you choose to ignore this area of optimization the organization may not recover and all the jobs will go away.
…all that being said, I agree that frameworks are not the holy grail. I think fast, core frameworks are the start and extensions to those are the way to go. There are jobs out there completely based on using things like Telerik controls, or Infragistics controls. These are build on top of a nice, extensible framework and they serve a purpose and create jobs. A company that would not be willing to develop that control themselves will be willing to pay for it and talent that can put it to efficient use for their purposes.
We are also still considered in the same boat as infrastructure services, which are not the same as software development. This is a fundamental flaw in my opinion. There are infrastructures (routers, servers, cabling, power) that is necessary AND a cost center. But software development produces “tangible” goods that can be used as a profit generator or at the very least an optimization of processes.
These are very different areas of IT but management still doesn’t separate them. We are getting closer with the advent of seperation between CIO/CTO, but few companies hire both. They are typically considered interchangable by uninformed upper management. Some even still put the CIO under the Finance department because they are seen as a cost center.