Sunday, April 15, 2007
Software Engineering Apprenticeships
- I personally would like to see fresh developers spend a year or two writing unit tests. Learning to break code and learning to thoroughly test before they were ever allowed to write stand alone code. The result would be better, well tested code code and developers who understood what testing took and knew how to do it.
I really hate when folks throw out suggestions such as the stuff above as it can't ever possibly happen due to economic reasons. Do you see any company regardless of their size (except possibly a software company) hiring a fresh developer and then not allowing them to code for a couple of years and only writing test cases? I wonder if folks ever acknowledge that the vast majority of software is not written by software vendors but by enterprises attempting to maintain code specific to their industry vertical?
I wonder if he also thinks that a business will believe there is more return on investment in terms of letting a person develop their discipline and get better at writing higher quality valuable working software over spending more time learning about the nuances of the business itself? Many business folk will tell you they want both. In all reality, the desire to write higher quality software is something everyone wants but no one is willing to pay for. This moves the responsibility of learning how to become a better developer to an after-hours pursuit in which the vast majority of folks in IT simply have zero interest in pursuing.
It gets even worse if you factor in India and outsourcing. What percentage of developers in India when they go home have both a computer and an Internet connection? I would like to propose that as a profession we drop the notion of writing test cases as an introductory thing and delay this to later. Instead, I am of the belief that before we write code, we should learn to read code. An art major doesn't attempt to paint a Picasso in the second week of class in his freshman year, yet all those idiot IT professors in universities start teaching folks to code without understanding what is good or bad. Code will get better once we acknowledge the need to kidnap universitity professors.
Maybe the profession needs to understand that there is a distinction between computer science and software engineering that is important. You absolutely, positively cannot be successful in teaching software engineering using tenured professors. Software engineering requires a perspective on the real-world that goes beyond academia and its thinking. Wouldn't it be interesting to take the CTO of several Internet startups who may have only a Bachelors and have them teach Master's level software engineering courses...
Links to this post: