What colour is your parachute?
You know the old saying:
A mind is like a parachute: it works better when it's open.
So: what's with the black-and-white sounding statements I make about subjects like people
("no methodology can save a project staffed with under-performers") or local variables ("bad") or even static typing
("useful, but it doesn't prevent errors that endanger my projects")?My World
I write about my experience, what has worked for me and what I think will continue to work for me. I'm not presenting a unified theory of everything. I know for a fact that my world is different from your world
Case in point: everything I write is from the perspective of small teams of skilled practitioners. Yes, I know that there are people who try to build big pieces of software with one hundred and eighty programmers. I'm not one of them. Furthermore, I have absolutely no interest in trying to find techniques or tools that "scale" to hundreds of programmers.
I assume you have a modicum of intelligence and an open mind. I assume you will temper my blacks and whites, you will think them over, and you will figure out whether or how they apply to you.
I did some programming in Scheme a long time ago. Then I learned Java. One day I was responsible for writing approximately four hundred classes in a Struts application. I wrote a code generator that wrote the classes for me. The code generator actually worked off of an Excel spreadsheet that some business analyst used for writing business rules.
Java and Scheme are different worlds. But if you squint a little, and tilt your head just so, you might see some common ground.Bippety Bop, Bang!
When I write something and say "this is a guideline, use it in these situations but eschew it in these other situations, and temper it with this technique," everyone reads it, nods, and forgets about it. No impact. No passion.
When I say "this is bad, and that is good
," I get fan mail. I get hate mail. I get flowers at work. I get dog poop in a burning paper bag on my door step. (Well, not enough fan mail, no flowers, and hardly any hate mail. I'm not that good at writing.) But I get one more thing that I can't ignore: the posts incite debate
. People argue for and against. With themselves. With me. With each other.
Because "considered harmful" essays are, by their nature, so incendiary, they are counter-productive both in terms of encouraging open and intelligent debate, and in gathering support for the view they promote. In other words, "considered harmful" essays cause more harm than they do good...
And to me, that's the point. If you are motivated enough to say, "Reg, your idea is no damned good because of A, B, and C,
" I think we're making some progress. We're talking. We're thinking for ourselves. We don't have some corporation with a billion dollar marketing budget telling us how to program and what's important in our lives.
Do you really think there are no mutable local variables in my code
? Come on. But... don't you think I sincerely try to use alternatives whenever I can do so without crippling the code? Yes, I use alternatives in most cases.University Politics
Sometimes the debates over these things get heated. This is a problem. I think it happens because people have difficulty understanding and articulating their own values
. So I say something about static and dynamic typing,
and I get people saying I'm stupid
or a poor poor programmer
(both possibly true).
What's going on? I think that people have some personal investment in these things. We're a little tribal. We think that because we have stars on our bellies
, we're better than those without stars. Then someone says "stars are no dammed good."
What happens? We get hot and bothered, because we think that person was really saying "you and your entire value system are no dammed good." But we can't say that, because we're pretending this is about productivity, and methodology, and scaling to two hundred programmers.
That's a shame, because getting in touch with what's really important to us and shaping our lives around it is so incredibly important. I really wish more people could be like this fellow a few desks away from me who programs in .NET because that's where he thinks the money is.Flames
I had a manager once. He was my boss's boss. When someone presented him with an idea, he would ask for proof it would work. If you wanted to try anything new, he demanded that it be risk-free. You could spend months getting the kind of data he demanded to prove that you couldn't fail.
Now, I don't think he was a malicious man. I doubt he even knew that he was the organization's number one idea shooter-downer. Too bad.
Anyways, a lot of people do this. If they see something new, they seize upon its flaws at once. They point out the missing bits. "It's just superstition, there's no proof that Ruby is more productive or that smaller programs are less buggy, or that static typing eliminates critical bugs, or, ...
Well maybe so, but do you really think the people complaining about Cargo Cult Programming are rigorous scientists when they look at their own practices? No, they have a blind spot. The finicky rejection of ideas only applies to other
And especially ideas that question some of the ideas that they already have.