TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

How do you determine where the lines between under and over engineering are?

4 点作者 jpmcglone超过 10 年前
I imagine a spectrum that goes from under-engineering(0) to right-engineering(5) to over-engineering(10), and I imagine the same situation falls on different parts of that line for different people!<p>So I want to know how you determine what &#x27;right-engineering&#x27; is, and how you cope with co-existing with under-engineers and over-engineers on your team.<p>Thanks!

5 条评论

AnimalMuppet超过 10 年前
To my mind, over-engineered means &quot;designed to solve problems that it won&#x27;t actually need to solve&quot;. Under-engineered means &quot;<i>not</i> designed to solve problems that it will actually need to solve&quot;. So it comes down to an accurate assessment of what problems the system&#x2F;program will have to solve.<p>The next question is, &quot;What is your time frame&quot;? (Dwolb already said this.) Is this system going to need to continue to work for a week, or for 30 years? You&#x27;re not going to be able to predict all the problems you&#x27;ll face in 30 years, so if that&#x27;s your time frame, you need to design something that&#x27;s flexible enough to be (somewhat) easily changed to handle the unexpected.<p>The next question is, &quot;What are the consequences of failure?&quot; You over-engineer software that flies in the space shuttle, because if the unexpected happens, your software has to continue to work, or people die. At that point, it&#x27;s not over-engineering - it&#x27;s necessary and appropriate. But it would be over-engineering to write software to the same standards, when the software is running a web page.
评论 #8357418 未加载
Dwolb超过 10 年前
I&#x27;ve never seen this clearly defined. At the root, criteria for engineering come from the intended uses. If the product is meant to last for 5 years and you design the product for 50 years, you&#x27;ve probably over engineered. If the product is meant to last for 5 years and you&#x27;ve designed for 6 years, you MAY have under engineered, given a statistical variance for failures over time (e.g too many failures happen at 4 years instead of 6)<p>So, an academic answer, it depends :)
评论 #8356839 未加载
loumf超过 10 年前
I judge it by how amenable the code-base is to the kinds of changes I need to make over time. Over and Under resist common changes in different ways.
评论 #8356900 未加载
bjourne超过 10 年前
There is no over and under engineering in software development. Can the software be written in a simpler way? If yes then it is not &quot;right-engineered.&quot; If no, then it is. Writing software is more similar to mathematical proofs (ask yourself, how do you know when your proof is done?) than bridge building.
评论 #8360433 未加载
评论 #8356863 未加载
jpmcglone超过 10 年前
<i></i>For the visual folk<i></i><p>Engineering:<p>[under(0) -&gt; right(5) -&gt; over(10)]