At the end of part 1, I was frothing at the mouth about the “we’re not a trade school” attitude of many computer science departments and professors. My take on it: even if teaching software development is not a priority, it’s still not an excuse for doing a bad job. It’s sort of like an art school only teaching art history, but refusing to show students how to competently apply oil to canvas.
Software Development Literacy: Application Types
When we get fresh recruits out of college or grad school, one of the things they struggle with, in addition to people skills, process, programming languages, and technologies, is a lack of literacy in application types — Desktop, Web, Mobile, etc. If they’ve written them, they’ve written little toy applications to a professor’s specifications. That’s not good enough to get a true feel for what each type is about.
If you point a developer, someone who has developed web applications for 10 years, at a desktop application, they will feel a little lost. They may start to focus on this shiny snarl of MVC, something they’ve seen only pale imitations of in their web work, and will forget some of the lessons of multi-tiered applications that they learned in the web world. It’ll take a 6 month timeframe to get comfortable with this new type of application.
I’d like to see more comp sci graduates come out of school well versed in at least two application types. There are a few notable examples of professors who have their students produce a non-trivial piece of software for the open source world, but they are exceptions. Of course, non-trivial software has to be developed in more than 15 weeks and by more than one person. In the next part of this diatribe, I’m going to focus on the other missing piece: people and team skills — why comp sci grad students generally don’t have it.
Related Services: Custom Software Development, Agile Development

