HACKER Q&A
📣 Scubabear68

How to keep your brain at the speed of development?


I have played many roles in software development (QA, support, development, sys admin, architect, strategist, manager) over a 30+ year career. My sweet spot is generally mixing up architecture and dev with an eye on strategy.

But my Achilles heel when developing a new system has always been slowing my brain down and saying “patience”. My default is for my brain to be boiling with ideas and visions for a “perfect” system (for some version of perfect), but you can only pump out code so quickly. When I let myself stay in this mode, I ended up with a mess of half finished code that is moving in 5 different directions because I am constantly thinking ahead way too far. And it is worse if I am collaborating on a team.

When I am able to be disciplined, when I force patience and cadence, things work out much better and I end with better code that can evolve over time.

But injecting that patience is so, so hard. Do others have this problem? If so, do you have strategies to deal with it? How do you force patience to get in a cadence for weeks, months, years of iterating on a system?


  👤 webmaven Accepted Answer ✓
I've found that there are a few delaying tactics and strategies that help by simply postponing writing code.

Test Driven Development and Behavior Driven Development (TDD/BDD) are probably the most widely used, and a relatively easy sell to other members of your team, but when your brain is really boiling over it may not be enough to keep you from writing tests that are too specific to the implementation you have in mind.

If that's the case, it can help to take a further step back and start by writing DocTests where the motivating narrative is interleaved with a basic exercise of the code as it is intended to be used (additional unit and integration tests are later added to cover corner cases that aren't part of the main narrative). This can productively be pushed further into an actual Documentation Driven Development process, especially if the code in question is intended to be used by external technical stakeholders.

Literate Programming (where a narrative and implementation are intertwined, rather than a narrative and tests) can also resemble this sort of process, but support in toolchains is uncommon.


👤 Jensson
> My default is for my brain to be boiling with ideas and visions for a “perfect” system (for some version of perfect), but you can only pump out code so quickly.

Why? What limits you from just coding faster? The hard part is figuring out what you want to code, after that you just write it. Just add the features you want, what is stopping you? Writing well architected code goes faster than writing a mess, so that isn't a hindrance, just stop writing messes and you will be faster, messy code is a sign of a messy mind.

Edit: I guess I answered my own question there. Your mind is full of messy ideas, when you try to code them you get messy code, and that is a problem. I'm not sure how to fix that, you'd need to go through the ideas and ensure you learn it properly so you don't have those messy ideas in the future.


👤 rubicon33
I think you already know the answer… you can speed up, but you risk quality.

I can get into a mind state where I basically just move fast. Don’t worry if the decision is “right” or if the software design is “optimal” just… GO.

It’s produced some bad code and it’s not optimal for times where I have lots of unknowns (ex: using a new technology). But if I’m using existing / understood tech, and need to move fast, I absolutely can at the cost of quality.

And frankly, that cost of quality isn’t actually as big as you think. So just do it.


👤 bick_nyers
You mentioned discipline, perhaps that is the answer. Cultivating discipline, patience, and ironclad consistency in your personal life will bleed over into your professional pursuits.

It's likely either that or you need to become a distinguished leader (dictator) so you can program your ideas through other people, multiplying the speed at which you can operate.


👤 yuppie_scum
Break your plans down into small tasks and focus on one task at a time

👤 gregjor
Weed? Edibles? Bourbon?