3 ms·
"Build one to throw away" [1] - Fred Brooks Jim Coplien on how one of Dave Thomas' companies do software [2]: "They build a prototype, then they throw it away
by xjay 4y ago
"Build one to throw away" [1] - Fred Brooks
Jim Coplien on how one of Dave Thomas' companies do software [2]:
"They build a prototype, then they throw it away. They learn from the prototype. Then they build the product, and throw it away. And then they build the deliverable; and ship release 1, release 2, and release 3--and throw it away. Every third release, they are throwing things away. Do you think they have any problems with technical debt?"
[1] https://en.m.wikipedia.org/wiki/Fred_Brooks https://en.m.wikipedia.org/wiki/Fred_Brooks
[2] https://www.youtube.com/watch?v=gPP7Bleg214&t=2339s https://www.youtube.com/watch?v=gPP7Bleg214&t=2339s
[3] https://en.m.wikipedia.org/wiki/David_A._Thomas_(software_developer) https://en.m.wikipedia.org/wiki/David_A._Thomas_(software_de...
- sitkack 4y agoTo add to lore, https://www.folklore.org/StoryView.py?story=Negative_2000_Lines_Of_Code.txt https://www.folklore.org/StoryView.py?story=Negative_2000_Li... After he talked about throwing away code, he started hammering on the idea of understanding your domain. I don't think you can program without rich domain knowledge, if you are, then the software you write is very narrowly focused. My idea of programming has shifted quite dramatically over the last couple months towards almost a hyperfocus on the domain, the data representation of that domain and the hierarchy of abstractions that we use to represent the ideas in the domain and the physicality in the data (and some extent the algorithms). A computer program is a great way to let you know that you still have parts of the domain to understand. We should be working in systems that are finely tuned TO the domain, so that we can play with concepts as easy as declaring self evident facts, so that we can constantly be throwing it away.