Recently, I’ve been thinking a lot about the state of Computer Science education and how lacking I’ve found it. I studied CS at a top 5 national college, and I vividly remember the challenges and frustrations that I experienced. We’ve also been hiring entry level engineers and I’ve noticed that so many recent graduates come into the job market missing what I’d consider to be basic industry skills.
Well, that’s quite a list to be honest. It’s too big of a list to write all about here, so I’ll start with one of the more noticeable skills. I see so many recent graduates that have never worked on the same code for a period of more than a few weeks. Their coding experience from classes typically consists of several (i.e. 4-5) coding assignments over a single semester. To take the most forgiving scenario, students work on 4 coding assignments over a 16 week semester, and assuming that they start assignment #1 on the first day of class and that the last assignment is due during finals week, that’s only 4 weeks per assignment. And this is a very forgiving evaluation, typically coding assignments are due 2 weeks after assigned.
One top of the rapid turn around time on assignments, none of the assignments build on each other. After a student completes assignment #1, passes the tests, and submits it, the code is thrown away, never to be seen again. When assignment #2 comes, the students start over fresh, creating brand new source files from scratch.
Unfortunately, this doesn’t match the experience in any professional development shop. After all, roughly 75% of code still exists after one year. So the typical education experience is poorly preparing students for a real career in software.
Unfortunately there’s not much to be done. Until the state of CS education improves, employers will need to devote significant time to training entry level hires.
One thought on “Throw Away Code”