A classic blog post that still applies today.
I think this is the biggest one that many people don't realize. Not that they aren't good programmers, it's just that so many things are I/O bound, nowadays.CPU cycles are a precious commodity and your programming style and language reflects that belief.
There are plenty of problem domains where you have to worry a lot about CPU cycles (modeling/simulation, signal processing, OS kernels, etc), but you don't work in them. Like nearly every software developer, your biggest performance problems are all database and I/O related. The only effect of optimizing your code for CPU is to shave 2 milliseconds off the time to get to the next multi-second database query. Meanwhile your development has slowed to a crawl, you can't keep up with the rapidly evolving requirements and there are serious quality issues. But at least you’ll be saving lots of CPU cycles... eventually.
I wish some of the kids taking computer science classes at my school showed some of these symptoms. Unfortunately, they are still struggling with for loops in their second and third programming classes. All of these imply that you are, at least, a programmer. That's more than a lot of people with CS degrees can claim.
That's an interesting point. I've never considered it like that. At my school, you do have to take at least one language class before you delve into anything deeper, but one is clearly not enough. It's tantamount to taking a single semester of a foreign language that you've never touched before, then enrolling in a college writing course in that language.
Of course they are stupid. That's why you have to be smart for them. You shouldn't blame the customer for being stupid, you should accept it from day one, and design your UI around it.Your users are stupid. Really stupid.
You can't believe how stupid they are, they constantly forget how to do simplest things and often make dumb mistakes with your applications. You never consider maybe it's your application that’s stupid because you're incapable of writing decent software.