TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Thoughts on Software Quality

69 pointsby daveman692about 14 years ago

8 comments

epennabout 14 years ago
Resisting the knee-jerk urge to rewrite a piece of software from scratch is something that has taken me a while to master. I'm much more levelheaded about it now. I try to think through whether or not there is a legitimate reason for the rewrite. Sometimes that reason certainly exists, but I've found more often than not that doing so is overkill. It's a lesson that has certainly saved me a lot of time since and allows me to focus on more important tasks.
评论 #2461583 未加载
jpadvoabout 14 years ago
"Sustained software quality is an extremely difficult challenge." - (from the article)<p>Quality can mean a lot of different things. Elegant, simple to understand code. Adherence to current best practices. Modular. And the list goes on...<p>But the most important part of quality for actual users is that your software is solid -- it isn't going to break and cost them time or money. That kind of quality isn't particularly complicated to obtain -- it takes hard work, discipline, and prioritization, but there's nothing magical about it.<p>"When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through."<p>- Steve Jobs
评论 #2460812 未加载
mcavabout 14 years ago
One of the things that draws me to functional programming* is the relative freedom from side-effects. A poorly designed, tightly coupled system begs to be rewritten, but doing so would come at an enormous cost. If a system is designed to snap together, with easily interchangeable parts, it's easier to be satisfied with evolving the software one piece at a time.<p>Then, when the urge to rewrite something strikes, you can just rewrite that one component, knowing that everything else should work just fine.<p>* I haven't actually built anything substantial in a functional language, other than my blog (in Clojure), so I can't back this up with experience. But I think it's true.
评论 #2461392 未加载
chernevikabout 14 years ago
The author knows a lot more than I do. But I wonder. There's healthy frustration, which reflects a restless desire to fix _anything_ and thus can't measure the worth of anything, and unhealthy frustration, which despairs of ever making important improvement. Mistaking either for the other seems bad. If mature, talented people are losing interest in improvements because they seem futile, that seems like a danger signal to me.
vehementiabout 14 years ago
Good points to sate someone like me who gets pretty upset over lack of quality
warrenwilkinsonabout 14 years ago
Sometimes software stinks because it IS bad. Perhaps the software he is using grew from simple to complex and nobody did any housework, thus the smell. Maybe it does need some work.
评论 #2462055 未加载
DanielBMarkhamabout 14 years ago
<i>Coming back to the earlier examples, I think most of what we perceive as badness or decay are just emergent properties of a complex system in which we cannot focus on all aspects at all times</i><p>This is a key insight, and it usually takes banging your head against architectures you've created yourself a few times in order for it to sink in. Early on, you think that somehow there must be a "perfect" way of coding. So whenever the system gets a lot of cruft, you feel as if you made a mistake somewhere. The much more likely culprit is the impossibility of keeping enough of the thing in your head at any one time in order to keep it consistent.<p>I think FP helps with this a lot, and I think we're going to start seeing larger and larger systems moving to FP.<p>FP is going to bring it's own problems, though, which is why I think a hybrid FP/OOP model, with classes "growing" up from REPL constructs to meet contractual obligations is going to be the future. You'll code in FP, then wire in OOP.
评论 #2462043 未加载
评论 #2461957 未加载
HockeyBiasDotCoabout 14 years ago
Agreed.