Hacker News new | past | comments | ask | show | jobs | submit login

Oh, I agree that you'll eventually be unable to maintain or improve a codebase built on coincidence, just as you will eventually reach the limits of a chemical process that uses onions. For example, your onion process will be inconsistent at some level, precisely because onions are a hack with a lot of potential side effects. What breed of onions, again? How big should the individual onions be? Don't onions vary according to the soil you grow them in?

So you'll probably have to take the onions out, sooner or later. But: You've got to be prepared for the real costs of that project. It is very, very tempting to tell yourself that your simple change is "obviously" going to be cheap. Particularly in software, which is not chemistry, let alone biology [1], and which is so close to being deterministic and consistent and provable -- after all, the individual components often are that simple (at least in the absence of cosmic rays and lightning strikes), and every complex program starts out simple and easy to change, and the complexity can grow so slowly that you barely perceive the day-to-day increase. So you can convince yourself that you know what's going on in a software system. And then, whoops, you make a change, and it has a side effect, which has another side effect, and then the bug reports come in, from users you may not have even realized you had.

---

[1] This is why it's great to spend a little time moonlighting as a biologist: You can practice living in a world without certainty. Biologists really don't know more than a small fraction of what's going on. Even individual bacteria are mysterious. If you've been raised on physics you will be shocked by biology. You really have to learn what controls and statistics and experimental design are about when you're trying to measure a biological system.




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

Search: