Breder.org

Make the work easy, then do the easy work

What I often find distinguishes more experienced from less experienced software developers is the skill of the former to avoid falling into rabbit holes.

This requires framing the problem as a composition of simpler subproblems with simple and known solutions.

Instead of bravely tackling the obvious big problem head on, approach from the outer edges, achieve some easy victories, gain some experience, and progressively tackle harder problems. It's not only smoother and less risky, but also faster in the general sense.

Make your first task “How can I make this easier?”, “What's the next step in making this easier?”, “How can I track daily incremental progress?”.

Don't get caught up in bikeshedding. Progress has to be made. Just be willing to take “making later progress easier” also as a sign of progress.

Breaking it down is the only way of making a large and complex problem tractable.