If Future You Saw Your Work, Would They Thank You or Curse You?
We should learn to communicate our thinking more
It was just after lunch when I saw Arun drawing a bunch of funky shapes on his computer. I went over and put a hand on his shoulder. "What you up to?"
"Demolition zones", he replied, eyes glued to the screen. These are areas that have to be agreed on by everyone - structural, civil and services. Each week, they come to me with all their areas and in return I give them back a consolidated zone.
Well and that makes sense, it would be pretty bad if you demolished the wrong part of the building. So, it's a huge coordination exercise. Each team must report any changes to these zones every week. And Arun has to manually sift through at least 10 drawings a week, figuring out what's changed and then redraw the demolition zones in Revit for everyone else to confirm.
"I'm pretty sure we can automate this," I told him. "I cannot make something for you today, but by your next update, I can have something working."
The First Version
And after about three days, I got a working script. It was rushed because this update was earlier than last week, since some last minute changes got introduced. So I didn't have time to clean up or apply a script template. But since the script was small, I didn't worry too much about it. Arun was also happy to run a small script on the model.
In the next coordination meeting, Arun told everyone about the new process that we'd made and how it's a click of a button now, instead of the usual one day of updating. Everyone was impressed, since they've also seen this week's update.
Now, they wanted more.
"Could we avoid all columns ? We spent a lot of time tracing around them"
"Could we create bays of zones ? The demolition will actually happen part by part and we were going to manually split them later"
Even though it meant more work, Arun and I were excited. Solving interesting problems beats manually drawing shapes any day.
Adding more features
We started adding the features to the script, I started with a way to avoid the columns. The script is a little bigger but still manageable.
We then sent out another update. Next, was adding bays which meant I needed more information from Revit. Again, very possible and no big deal. We sent out another update.
After a few more weeks of updates and features, we sent the last zones for the year because the office was going on break for Christmas. Everyone was still happy with what we been producing, it was quick, accurate and valuable to everyone.
After the break
Then, we came back from the break and got a new request from everyone.
"Can we put in something to avoid the footings ? "
Of course, we have done so much already. Why wouldn't we be able to do that ? Well, I fired up the script again and I swear, it looked like this:
It was chaos. I didn't even know where to start or what I was looking at anymore. It was so messy. Was that how we've been delivering the updates all this time ? I knew the script was messy, but I didn't think it was that bad.
Well looking back, I realised that every new feature and update we sent out was done in a rush. We were always scrambling to meet new demands. It also didn't help that we kept saying yes to them. We just got lucky that the script was still working, we really had not idea how it was working, it was just dangling by a thread.
I knew I couldn't keep working like this. I need to spend some time cleaning it. But that meant telling the project lead that I need more time which goes against the very value of this script in the first place.
So, I walked into his office to face the music. I told him that I have been haphazardly plastering new things on the script without thinking about the long term. I admitted that I was in such a hurry to impress people that I didn't think about the robustness of the script.
Of course, he was upset. But, he had a feeling that it was going to happen, he knew that I was adding way too many things way too quickly. Thankfully, he gave me some extra time to clean things up. Now the script looks like this :
And... we were back in action. Sending updates week after week. Except this time, we had a system and we knew exactly what the script was doing.
Final Thoughts
It's funny how a little time away was enough to make me forget the whole thing. The messy script was a reflection of the project at the time - also messy.
Ever since then, I always add in some time to organize any scripts that I am making unless it's really really urgent. And even then it has to be an emergency because organizing or refactoring is as important as writing the script itself.
It may seem neurotic but it's about bringing clarity to both your thinking and your process. You may get away with a messy script in the short term but it will come back to haunt you later.
There is a great quote about this :
Understand first that what we’re after is excellence, not productivity. Productivity is working hard. Excellence is working clean. - Work Clean
Sure, it's great to meet deadlines, to push out work as quickly as possible. But it's not good to do that at the cost of excellence. Organisation or cleaning is part of making our work excellent. It's bringing order to chaos. it's getting clear on exactly what works and what doesn't.
In computational design especially, where scripts often grow with each new project requirement, taking the time to clean your code isn't just good practice - it's essential for sustainability. That messy script might work today, but when you (or someone else) needs to modify it six months from now, you'll be grateful for the clarity that comes from clean organization.