I've been a professional web developer for over 13 years now. Technology has progressed, fashions have come and gone, expectations have changed accordingly. Time and again, however, I see projects running into the same carbon copy problems. I've ranted about this before elsewhere, but every time I find more variations on the same theme. This time I found them all in a single project.
The most common mistake I see is customers asking for features because they've heard a website is supposed to have them. Don't. Your website isn't there for the sake of it. Keep your objectives in mind.
(Originally written on 30 June 2007. Revised on 25 October 2008.)
This article is dedicated to all the programmers who are still not using a version control system. I know you are out there; I was one of you mere weeks ago. But that has changed, and believe me, it's a world of difference.
It's a baffling phenomenon that in today's society an individual, who might in other circumstances be considered smart and wise, can sit down in front of a computer screen and instantly lose every last shred of common sense he ever possessed.
-- Samuel Stoddard, Computer Stupidities
If you're a computer professional, you have been in this situation: one day, a person whom you know to be intelligent and educated needs to learn how to use a computer. And she just won't get it, no matter how hard you try. You may blame it on the computer being such a complex machine, or you being a bad teacher, but this doesn't explain why your other friend, who is not a genius either, had no trouble at all learning the very same skills from you.
This is in response to a lambda-the-ultimate post on literate programming, in which they wonder why it never caught on. Now, there are several possible answers to that question, and they give one or two good ones. But I think they are ultimately missing the point.
See, the idea of literate programming was born out of the well-meaning but ultimately misguided notion that programming is hard because of the notation. It's the same thinking that gave us pseudocode and UML. Did I mention 4GL languages? No, I didn't, because that particular idea died, thankfully, before I could be exposed to it (being young does have advantages, you know). The others survived enough for me to learn about them and to use them with abandon for a while. Then I asked myself a simple question. Why am I writing all my programs twice?