"Programming is the art of doing one thing at a time" (source: Working Effectively with Legacy Code by Michael Feathers). This applies to both the code itself and the act of programming. Don't refactor and add features at the same time. Keep your commits small. etc. In life, it's a kind of mindfulness mantra. "Do one thing at at time. Wherever you are, there you are."

Another adage that my dad taught me which comes up a lot in programming and in life:

"Slow down; you'll go faster" and "Do it right; do it once" (the latter is semi-equivalent to DRY "Don't Repeat Yourself" but also it about trying to find the right approach the first time)


I really liked the "Programming is the art of doing one thing at a time". Also "Slow down, you..." once again proves that having technical debts will decrease your project's pace.


I feel that I owe a great deal to programming. It really has taught me a general and systematic approach to problem solving:

  • When learning any new skill, focus on specific tasks: Rather than doing a lot of general reading, first pick a problem to solve, then do just enough reading to solve that problem. Next, pick another problem, and so on.
  • Break a complex problem down into smaller constituent elements: When getting confused, start with the simplest thing that you still don't understand.
  • When something doesn't work, systematically work through all possible combinations, starting with the simplest ones.
  • Never make assumptions about the nature or root cause of a problem. Let the actual evidence guide you. This last one I have to re-learn on a regular basis!

For me the most important one is: Things take longer than it seems at first look, so I try not to promise/plan based on my first estimation.


Making tasks small and easy to complete, which minding the big picture. This works for both

  • showing visible value to those that you're working with (working agile)
  • reducing complexity and improving motivation by seeing results quickly.

Refactoring is a difficult yet very necessary step in the development process


Continuous exposure to minor problems will eventually drive you mad unless you have a way to deal with them.

Keep calm and don't let the bugs eat your sanity.


It taught me that failing is fine, and that if you fail long enough, you will eventually succeed. I wish someone explained it to me when I wanted to start coding 5+ years ago.

Classic DEV Post from Oct 29 '18

What was your TDD aha moment?

TDD is not a one size fits all approach to software, but it's pretty damn usefu...

Behrad Khodayar
Software Engineer, +10 years experienced web developer. Blockchain enthusiast. Fan of Pragmatism & Productivity
Join dev.to

Guaranteed to make you a better developer or your money back