First off, if you haven’t read Steve Yegge’s latest blog post, a 15-page allegorical story entitled That Old Marshmallow Maze Spell (or, I suppose, at least tried to :p), this won’t really make much sense. Well, maybe it will. Anyway, I’m going to try and summarize it, and unmuddle it. For those who want to compare my interpretation to their own, I suppose.
For the purposes of this story, I will assume the viewpoint of Stevie’s first person.
I’ve been out of the loop for a few months. A bit busy, dealing with… things. I’ve just wandered back into the old watering hole – I think I’m more or less over it now. I’m feeling a bit older, and maybe a bit wiser. Everyone else, full of enthusiasm and spark – I certainly feel
much older than the passage of time would suggest.And here’s my old friend, Rauser. Garn, I haven’t seen him in months. He looks a bit older too. Turns out – he’s been gone a few months as well. Busy. With things. But now he’s back – and he feels up to telling his tale.See, Rauser had – indeed, still has – a client. His client has this old system, and it’s not a bad program. It works just fine. But it’s getting on in years, and it’s showing it. Little bits have been added on, by all sorts – and it doesn’t seem to “flow”. The client wants a new system. A complete rewrite. One that will fix all the problems with the old system, and add a number of new features.
The client really doesn’t understand what this will take. He’s well-intentioned, and all, but he doesn’t have the experience to know just how long developing an application of this size will take, nor how much it will cost. Fortunately, he’s willing enough to listen to Rauser’s advice on how much time it really will take.
Now, this is going to be a big and complex project. These sorts of things don’t always work. We all know that. Sometimes the client runs out of money. Sometimes a few of the workers get a bit fed up with the whole thing. Sometimes the client doesn’t think that the current team is doing a good job. And sometimes, despite everyone’s best efforts, nothing useful comes out the end. You need a lot of things to go right for this sort of project to succeed.
Rauser has this really interesting idea for developing this project. An exciting new architecture, one that’s never been tried before – not on anything of this scale, at least. The client is enthusiastic. He decides to give Rauser the architectural lead on the project.
Still, there’s a solid chance that this project will fail. That sort of thing happens in this industry.
Work on the platform begins. And it’s going well. Things are going together just right. And then the platform – the bit with Rauser’s exciting new architecture – is finished, on schedule. Now we just need the application 🙂 They still don’t have a full spec for the project, but it’s not actually due yet anyway. All seems good.
Months advance. Progress is going well on the new application. But rumours are starting to spread. Some say the application is going to be overdue. It doesn’t actually look that way, yet, but those rumours are still coming from somewhere. Suddenly, new features start being added to the spec. Noone really knows who’s driving this change, but they’re turning up nonetheless. Still, it’s not much. Noone really minds. Some of this stuff actually looks interesting, anyway.
Extra resources are being added to the project. Too fast. Communications are starting to break down. A few streamlined paths to the getting to work, however, are visible. But they’re becoming increasingly complex. People are starting to need a lot of training just to figure out what they’re supposed to be doing and figure out how it all works. Remember the Mythical Man Month! And these new features keep being added to the spec – faster and faster. And nothing can be done about them. They can’t be held off, or pushed to the side. They need to go in now.
Management is getting antsy. They’re starting to get worried that things aren’t coming together. Communications between management and the people actually working on the project are breaking down. They’re putting pressure on for deliverables to be delivered, ahead of the nominal schedule. Well, what the workers understood the schedule to be. It all seems so fuzzy now.
The spiffy new architecture is working fine, though it’s not without its own problems, let’s just say. It doesn’t quite support the full load of the application’s needs, and so there’s there are very haphazard additions to it that they need just to get the application built. But it’s starting to stress everyone out. Particularly as the spec keeps changing. The client was this now, and this, and then that.
The project’s on schedule, and yet Rauser is feeling pressured to put 20 hour days into it. Everything that is normally part of his personal life is being left behind. He no longer goes and sees friends, or for a walk, or down to the pub for a few drinks after work. There is no after work. There is just work… and sleep. But not enough of that, even.
There’s a vague hint that maybe the architecture was wrong. It’s still working, but everyone is under a lot of stress. People are beginning to suspect that the project is doomed. Rauser, feeling responsible, is overworking himself. He’s sleeping at work, only eating the company food, not leaving at all. Communication between workers and management is completely nonexistant – probably just as well, as no-one’s had time to shower – let alone shave – for a couple of weeks.
One of the developers has quit. It became too much for him. They’re all starting to wish that they had the guts to follow him. They’re all being killed by this project, by the stress.
A couple more people have now completely burnt out. They just don’t have the will to work on it anymore. They’ve left too, and this is starting to look more and more like a death march.
And now Rauser finally realises what is happening. He knows he’s just spinning his wheels. He realises where he’s got to, what it’s doing to him. And he returns to life. He starts sleeping properly again. He goes down to the pub. This sort of project can devour the people working on it, who aren’t quite prepared for this sort of thing, he’s realised. The workers are naïve. They accept the 20 hour days, no sleep, no personal life – it’s just a result of their own incompetence, right?
And Rauser resolves, he’s going to spend some time teaching the workers how to keep their work and personal lives seperate. And fixing up those things that have been becoming a problem. He’s going to build out the platform, so that it can properly support the application. He’s going to organise the lines of communication, and document the work to date so people can easily see where things belong. And he’s going to get the spec frozen. He’s tired of marshmallows all the time.
And now, I’m me again. This is already longer than I intended, and I haven’t really said it yet. The crowd from Monty Python and the Holy Grail are yelling at me to get on with it.I’m young at this. I’ve only been in this industry for… not yet even 3 years. But as I read through this, and wrote up my interpretation of it – I realised that I’ve already had one of these projects. Just the one, and a small one at that. I had my own little architecture, a clever one, a nice way of building a solution to solve the problem. I’ve had a never-ending queue of changes, blocking the path to getting the work finished. The platform was neglected until it became a bit of a haphazard mess, not capable of supporting all the changes that are being thrown on top of it. And the changes kept coming.I was lucky. I had some people around who yanked me out of the devouring project’s mouth before I got swallowed up. And yet I saw it. I saw what was down there. And I can see what other people’s wolves look like now.
This writing here is not as good, not as elegant as Steve Yegge’s. It’s a translation, not my own story, even if I’m not ready to tell that one just yet myself either. So, if you hadn’t finished it (or yet started it), go and read That Old Marshmallow Maze Spell. You’ve seen the movie, now read the book!