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

That's exactly where I thought he was going...

I just recently started writing software >40 hours a week, and have been constantly torn between "getting things done" and "doing things right". The best way to program well might very well be a variation between the two modes.



The mantra from eXtreme Programming:

1. Make it work. 2. Make it right. 3. Make it fast. 4. Make it small.

#1 first, then if you have the need, #2. If you have a need, #3. If you have the need, #4.

It's a lot easier to make it right once you've made it work.


Actually, it's a lot easier to make it work if you've made it right to begin with. (That said, I've always found the best way to develop is to add functionality to a working program, no matter how small it starts out).


There are a few problems with this:

1. Sometimes, making it work is enough. (one time code and such) There's no reason, other than for practice, to waste time designing such cases.

2. You may find out that you're solving the wrong problem, and it's much easier to justify throwing out code that you didn't labor over an extensible design, etc. It's much harder to throw away wrong code that you've put work into the internal design.

3. This doesn't mean that you don't design the outward facing interfaces correctly. Thus, you have a good set of unit tests already set up, and you can quickly tell if something is working as you refactor. You have a good baseline with which to compare.




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

Search: