Developmental Decline
Everyone else seems to be doing it, so I’ll link to this interview with Bjarne Strostrup as well. Reading between the lines, he seems upset at the decline (or perhaps lack of improvement) in software quality (“looking at ‘average’ pieces of code can make me cry”) and judging from what I read online and what is taught at university, I have to agree.
It’s far too easy to simply point at the universities (as I do often) and say that they’re not teaching the right things, or they’re not teaching things correctly, or they’re glossing over important concepts such as pointers, memory management and those bit things. After all, who needs to know the difference between 1 and 0 to make software?
I’ll tell you. Anyone who gets a piece of paper or an entry in a database somewhere saying that they’re qualified to write programs or develop software needs to. Imagine going to a restaurant where the chef makes his meals without understanding what happens to egg when you cook it, or why the oven needs to be preheated. Even worse, imagine the chef simply pulls three ready-made ingredients off the shelf, puts them on a plate together, throws it in the microwave and serves it to you.
This is exactly how McDonalds operates. It’s quick, easy, and if 1 in 10 times the system doesn’t work properly and your burger is burnt then that’s what you live with. But that’s just the result, not the point. The point is nobody who works at your local Macca’s is a qualified, certified chef. Becoming a chef is hard work. It takes a very full-on apprenticeship and years of training. You don’t become a chef by flipping burgers. People who want a properly cooked meal will always go to someone who understands the cooking process, not just someone who uses it.
In much the same way, you don’t become an accountant by learning how to make Excel use IPMT and NPER to figure out your home loan repayments. Any qualified accountant should understand compound interest and be able calculate it with a basic calculator. Any institution which produces accountants that don’t know compound interest without a formula sheet or computer program shouldn’t be operating. Would you trust your money to an accountant lacking such a fundamental concept in their field?
It should be obvious by now where I’m going with this. A programmer who doesn’t know what pointers are, how they work and how to use them has no more right to a qualification than a chef who can’t chop vegetables. A software developer who has no concept of allocating and freeing memory should go back to school with the accountant struggling through interest rate calculations. A programmer who can’t even suggest what one and two’s-complement are, the difference between big and little endian and why an error in a recursive function may cause a stack overflow is not qualified.
Maybe I’m being too harsh. Maybe my standards are too high. But really, I wouldn’t give my car to a mechanic who doesn’t know what a spark plug does any more than I’d give my computer to a technician who thinks non-volatile means it won’t attack him without warning any more than I’d buy a program developed by a software engineer who thinks pointers are arrows telling him which way to go. You don’t earn a qualification flipping burgers; you earn a qualification by knowing your field thoroughly.
By the way, I haven’t filled this post up with analogies, I’ve filled it with examples. These are direct equivalents; I don’t believe I have contrived anything.
