Ask HN: What software engineering process for startups?
3 comments
In a current project I do mostly exploratory programming (figure out the code structure as I go), but I will probably also have automatic tests that exercise large chunks of the application at once, from user perspective, without going into any detail. These are supposed to serve as smoke tests, ringing the alarm if I broke anything big.
Exploratory programming to play with ideas and concepts and to quickly prototype and evaluate things.
Once a clear vision/direction is established, I switch to a more test driven development model more to ensure robustness and iron out errors than anything else.
Once a clear vision/direction is established, I switch to a more test driven development model more to ensure robustness and iron out errors than anything else.
agile/xp. release early. release often. a startup in its infancy needs to get the product out fast.
Typically you want to iterate fast, adding/changing features as necessary. Unit test make code harder to change (you may need to fix broken tests) but also more reliable (you can be pretty sure you didn't miss anything if the unit test all pass). If you have many people working on the same code, you typically need to agree to certain things ("architecture") in advance and set it in writing as a design doc. If it is just one or two guys writing code and talking to each other, isn't that too much overhead?
To set some baseline, Google apparently did design docs, code and design reviews, and unit tests from the start. OTOH, it seems PG doesn't write unit test, at least there were no unit tests in the Arc/Hacker News source code release. He obviously doesn't write specs or design docs as he prefers exploratory programming.
What do you practice and why?