I spent last night commiserating with my friend Denny Boynton and a couple of Computer Science students who are attending the Mix conference in Las Vegas. The discussion eventually came around to a critical evaluation of computer science curriculum available to students in our colleges and universities. The conclusion we came to is that we’re just not paying enough attention to instilling good software engineering principles in our future developers.

Most students aspiring to have a career in software development are going to end up slugging line of business code for their employer some day. A few others will be the developers of our future operating systems, compilers and server software. Why is it then that we teach them all the same way? You might argue that the average student doesn’t know where they will end up post-graduation and that we should take the opportunity to create well-rounded students who have a depth of knowledge about low level computing semantics as well as high level languages and abstract design concepts.

I believe the problem with that logic is we’re missing the boat on instilling good software engineering practices in our future developers before they get into the bad habits most of us in the field have struggled to overcome. Kids coming out of school today study compiler theory and operating systems. They know how to create a database schema and they might even have some experience writing PHP code or building RIA’s with Flash. What they are lacking is the knowledge they need to to apply patterns to their work or to create new patterns for others to apply. They don’t think about bullet-proofing their systems before they start writing business logic. These are skills that they learn on the job – mostly through trial and error. I’m pretty sure that I don’t want the developers at my bank figuring it out as they go.

There are a million ways to solve this problem and I wrote this post more for awareness than anything else. This is probably the most ignored issue in our industry and it’s something  we as the stewards of the craft need to start discussing.