Matt Ball

Posts tagged with “computer science”

December 8, 2008

What Haven’t You Tried?


Matt Gemmell wrote a fantastic essay on a disturbing phenomenon that seems to plague software development far more than most professional fields: Too many people just aren’t willing to figure things out on their own. Consequently, our field is full of “developers” who are really nothing more than Professional Copy-Pasters.

This strongly matches my experiences in University as well. Most Computer Science professors are well aware of the problem and, as such, try to force their students to learn the necessary problem-solving skills, usually by assigning projects which deal with material or concepts which haven’t been directly-addressed in class. The end result, however, is that students encounter something which wasn’t taught in class and immediately run to a TA for clarification. Rinse and repeat this cycle over the entire course, and you wind up with a huge percentage of students asking for help every time they encounter something they aren’t immediately proficient with.

This is especially evident the day before a large assignment is due. Walking by a TA’s office, there’s always a line of students waiting to ask last-minute implementation questions. So, while you have maybe 75% of the students asking things like “How do I use function X?” (a question whose answer is quickly found by a simple Google search), there’s a small group of students in the back of the line waiting to ask a legitimate question, which they’ve likely already wasted hours or days trying to figure out. And, since a TA will rarely tell a student to leave, the line gets longer and longer, and the students with legitimate questions waste even more time.

The end result is that many CS students never learn to figure things out on their own. After all, why try to debug that crash if the TA will do it for you? Why learn the ins-and-outs of Algorithm X if the TA will basically give you pseudocode. Expecting someone else to do things for you is no longer an ailment which plagues the informally-taught. The attitude prevails in more universities than anyone would think, due in large part to the babying nature of today’s Computer Science programs. Of course, there are plenty of us who make it through with a deeper understanding of systems and languages, complete with the necessary skills to expand our knowledge independently. But, it is my experience that, in the general case, the system fails far too often — It takes a certain amount of internal drive to avoid falling victim to the siren song of “do-it-for-me-itis,” and with today’s students being drawn to the field by the allure of fame and riches rather than by an interest and appreciation for the subject matter, students seem to be missing this drive more and more with each new class.

That isn’t to say that University CS programs are a waste of time — There are several subjects which I would have never been interested in, much less learned, on my own. But there is something fundamentally broken about the way software engineering is taught. The system is letting far too many students coast by without learning the necessary skills, and the future of the software industry will feel the effects.


3 Comments