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

You've basically described the primary difference schools of programming thought. Should programming be the act of taking well-defined/understood requirements, a nice clean environment (and dependencies), careful thought, and producing a program that is correct by construction and has little need for debugging? Or is programming a messy affair of poorly defined requirements, crazy environments, and more exploratory, where debugging would then consume more effort than actual coding?

I believe more in the latter school, though of course, they are both extremes and I'm a moderate. The mud is unavoidable and we might as well build winches to pull ourselves out rather than spend time trying to carefully avoid it.

I haven't really seen such a clean divide. There is definitely a group of developers that prefer building over everything else. This group loves tooling because it enhances their ability to keep adding new things. I also suspect that this group is a product of their environment. They are exceptional at debugging because debugging is the primary way of working. A problem is to be understood and additions made, not changed. Change ruins their understanding.

But even this definition feels too confined. There have been some developers I worked with that must have started out this way and then learned 'engineering' practices. They were all exceptional to work with. I wish more of this group could get to that level. Hence my interest in putting bread crumbs on the path to learning, rather than yet another pill to lose weight fast.

There is definitely a big difference between an inexperienced developer and one who is experienced and follows rigid organization practices. But even these latter people probably debug a lot, you just don't see it from the outside.

Debugging is as close to experimental science as we get in computer science. It is the act of understanding a complex system, and even if we built that system entirely by ourselves (unlikely), it eventually "gets away from us" and takes on a life of its own. It is impossible to understand everything, and debugging is a great way of allowing us to forget details and uncover them later.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact