Comment by karmakaze

7 years ago

A counterintuitive thing I've discovered us that working fast let's you solve more complex problems. At first it seems that you should try to go slow to make sure that all the cases are properly treated. Proceeding this way can result in nearly endless refinements as you go and losing sight of the main goals from time to time and repeatedly forgetting exactly where you are in the grand plan and which direction/step you were headed.

Going fast doesn't allow for secondary concerns and produces a single simple solution. Of course you can now do everything else it needs that you think of but code written this way with a clear core path is so refreshing from bottom-up generation where every detail has equal importance.

I even recall a time where I was performing a cascade of rebases and merges across three git branches and 4 or more submodule branches. Each feature update/sync took so many tries to get right. I eventually got fed up and just brute-powered through it without prethinking it. Because it was a short time from start to finish I was able to clearly see each commit in each tree I was working on without a pause wondering where I was or doing next. It was also less error prone than going slow. It fact I just did the whole process twice in a fraction of the careful time and compared results. No diffs were taken as correct and any diffs were examined and the correct variant used.

Going fast doesn't allow for secondary concerns and produces a single simple solution.

That doesn't sound like going fast, so much as "the simplest thing that could possibly work." Once you have that running, you can see where the shortcomings are and start to fix those. That will often proceed faster than trying to envision the whole complex thing up-front. (And that often results in a complete, but illusory vision, which ignores something which only becomes apparent once it's realized.)

  • This is absolutely true. I'll usually have mulled over a problem for a long time before writing any code so have a sense of some of those other areas and have imagined mechanisms to handle some things. When it comes time to implementation, going fast focuses on the key ones.