I’m not at all surprised that it would cause someone to shudder. The consensus opinion amongst software engineering people (as opposed to people who just code, and don’t really think about methodologies, or how to improve their effectiveness etc) is that “not planning == planning to fail” - and the corollary “planning to fail != failing…it just makes it more likely”. It’s not a unanimous opinion, and there are plenty of fair exceptions that get thrown around, but certainly it’s the dominant view at the moment.
rgrzywinski’s “I’ve had to deal with the side-effects of this approach…” is certainly one of the great reasons for not doing it. If I ever find a programmer working for me who does not plan, I fire them. It’s simple - they are single-handedly attempting to destroy my project, even though it’s probably unintentional (note: if the programmer dies tomorrow, and there are no plans for what they’ve been doing, then most of the salary and more importantly the time they’ve spent has just been lost. Project management cannot take place if staff behave in this way. As the PM on the job, I’m going to be fired if a programmer ever leaves and I cannot make the team recover in time to meet the deadline [not necessarily by dying, there are lots of reasons people leave mid-project in practice - e.g. IIRC Woz’s plane accident that left him effectively devoid of technical ability for quite a while could easily have meant Apple disappeared without a trace had it happened only a short time earlier]).
A quick aside about “probably unintentional” - I have actually worked on a project where 2 or 3 (we were never sure about the third one) extremely knowledgable people deliberately made sure that we could not fire them, because they were the only ones who could decipher their code. Fortunately, they got fired anyway, and the project sufficiently recovered after a six months to successfully ship. I’ve even seen a case (separate project, and I was an external consultant) where one guy went as far as writing his code in a shorthand of his own - he obfuscated every variable etc as he wrote it. I kid you not.
In practice, if you’re a skilled developer, you can get by without planning. And other people can probably read through your code and look at the comments, and fairly quickly work out what you were doing. However, there is a well-documented and considerable loss in efficiency from this. If it takes you 3 days to plan your code before you start, it’s going to take someone else about 3 weeks to fully decipher that plan if they’ve only got your code to go on. Obviously, the ratio varies considerably from project to project and industry to industry (and even from person to person) - but most of the time it’s a big ratio.
You also make every bug more expensive, in terms of money and/or time lost. The classic chart of when a bug can be fixed, as used in the software engineering disciplines for several decades, shows the progression of fixing a bug at each stage in the dev process, and goes something like this:
- Specification
- Design
- Prototype
- Gold
- Customer (i.e. it’s already been deployed, and you have to fix it at someone else’s server / PC / home / office)
Experimental data has shown that each stage increases the cost of fixing a bug by a multiple of 1.5 - 5 (IIRC). So, fixing a bug by writing a second prototype typically has cost you about 4 times as much as it would have if you’d fixed it at the Spec stage. And it could be as much as 25 times as much.
Now, that seems a fairly good reason to shudder when someone says they don’t usually plan their projects. I’d imagine that if someone really did shudder, it’s probably in sympathy or pity for the person who’s wasting so much of their time.
Personally, I don’t mind what other people do, unless I’m working with them, in which case I exert zero tolerance (I refuse to have my project screwed up by someone else’s anti-team behaviour). I try to educate people of the evils of not planning, so they can make an informed decision, and usually save themselves much time and hair-pulling, but I recognise that some people really don’t like it, and are more concerned with enjoying spending more time coding, even if it means it takes them longer to complete.