Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Completely agree! This is my number 1 point on my own "I've developed SW for decades, here's what I have learnt"-post:

1. Start small, then extend. Whether creating a new system, or adding a feature to an existing system, I always start by making a very simple version with almost none of the required functionality. Then I extend the solution step by step, until it does what it is supposed to. I have never been able to plan everything out in detail from the beginning. Instead, I learn as I go along, and this newly discovered information gets used in the solution.

I like this quote from John Gall: “A complex system that works is invariably found to have evolved from a simple system that worked.”

From: https://henrikwarne.com/2015/04/16/lessons-learned-in-softwa...



I would say, that it is not so easy to make this from-small-to-big approach work. It requires planning ahead on another layer. When you develop something small, which is supposed to grow later, you need to make sure to not bake in assumptions, which do not hold for later versions. You need to keep the primitives flexible.

I see this as a basic skill, that we should aim to master at some point, even if we may never truly master this art.

If we do not move carefully around assumptions, we will have to refactor things later, which means more work. Of course moving carefully can also consume time. At some point it may become a tradeoff.


Your principles are better than the OP’s.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: