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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

Engineers who won't commit

53 点作者 kiyanwang大约 1 个月前

15 条评论

dogleash大约 1 个月前
My opinions became trusted in decision making because I spoke up only when I had well-founded thoughts on things I understood. Now that I&#x27;m looked to for opinions on a wide breadth of topics, apparently &quot;let&#x27;s find (or train) someone qualified and ask them instead&quot; is not a decision anyone wants.<p>Telling me to just be as useful as a generalist doesn&#x27;t work when it was the specialization that made me worth listening to. It&#x27;s a setup for failure. And I know the platonic ideal of management understands the team has different capacity on different topics and yadda yadda yadda, but I have a job in reality.
评论 #43687422 未加载
评论 #43680813 未加载
评论 #43681004 未加载
CharlieDigital大约 1 个月前
I think author misses some points:<p>1. Sometimes engineers are right to be non-committal if the non-functional requirements are not yet fully known because the business side simply hasn&#x27;t really fully scoped their NFRs which can often make a big difference in the design of the system.<p>2. Many orgs have a poorly managed culture around disagreements on technical design and some folks just don&#x27;t want to put up with that kind of friction when the difference between using approach A or B is real, but not going to topple the project either way so why waste that energy fighting that kind of battle?<p>EDIT: Simple analogy<p><pre><code> &gt; Say we must choose where to get dinner. Japanese or Indian. Without constraints, I do not care. But if Antoine and Lin are coming and Antoine has a shellfish allergy while Lin is a vegetarian, I now want to commit because I like their company and Indian is the better choice. Why make a fuss about Japanese or Indian if I do not care unless there is actually a real reason to pick one over the other? Either is fine with me; I just want to go out to dinner and have a good time. I am happy with either Japanese or Indian! </code></pre> Do you see the difference? If Antoine and Lin are not coming, I will eat anywhere; I don&#x27;t care -- let&#x27;s have a good time! If Antoine and Lin are coming, I think we should pick Indian because they have requirements that we should consider -- let&#x27;s have a good time!<p>It&#x27;s like asking me to choose GCP, Azure, or AWS. Does it really matter if there&#x27;s no constraint? I can and have delivered systems on each of these platforms. Am I cowardly for not committing and not being a diehard for one of these when there are no NFR&#x27;s that favor one over the other?
评论 #43680839 未加载
评论 #43680836 未加载
评论 #43680403 未加载
评论 #43680706 未加载
hakunin大约 1 个月前
I find there&#x27;s a good way to not commit, slightly different from this article.<p>There&#x27;s a non-committal way of designing software that I think we should all strive to follow. It&#x27;s not things like &quot;let&#x27;s use an ORM so that we can swap the database later&quot; or &quot;let&#x27;s write abstractions over everything so we can swap everything later&quot;. It&#x27;s more that you&#x27;re trying to keep the code as simple and static as possible, naively doing the exact business function, and rarely generalizing. There are a few practices I&#x27;ve picked up over the years for non-committal architecture of this kind (for example: doing more at &quot;build&quot; time, passing the functions what they need instead of what you have, keeping IO in shell layer, and a few more). The goal is not to end up with a codebase that has foretold all the possible futures, but that implements just what it needs to do now in the most straightforward way, such that it&#x27;s easy to read, understand, and change. I think this kind of non-commitment is the ideal to strive for. The less committed you are in this way, the easier it remains the change the codebase as it evolves, the less shackled it is with over-engineered &quot;solutions&quot;.<p>It&#x27;s deceptively hard to do this in practice. Everybody wants to implement their over-engineered &quot;system for doing a thing&quot; layered on top of the programming language. Sometimes we forget that the programming language itself is a great tool for expressing business logic.
yen223大约 1 个月前
If you have trouble committing to an option, it&#x27;s usually because the options are equally good <i>as far as you know</i>.<p>There are two ways to go about this:<p>1. If the stakes are low, you can just pick one option at random and commit to it.<p>2. If the stakes are high, come up with a way to reduce your uncertainty around the options. Set a time limit, and perform an experiment that will inform your decision. If that experiment doesn&#x27;t conclusively settle the options, just pick one and commit to it.
评论 #43680887 未加载
评论 #43680888 未加载
Cthulhu_大约 1 个月前
I found using &quot;architectural decision records&quot; to be helpful; it&#x27;s not a panacea and I&#x27;m sure there&#x27;s other approaches, but the gist of it is that you make a document, write down your thought processes, consider the different options (demonstrate you did your homework), and get the team together to proverbially shake hands on it.<p>It&#x27;s not set in stone; if anything, the writing reflects &quot;what we know right now&quot; about a problem and its possible solutions, but it&#x27;s a message to the future when either the context of the problem changes, the problem is better understood, the underlying assumptions and&#x2F;or requirements change, or something changes in the solution.<p>It&#x27;s both committing to a thing &quot;in the moment&quot;, while leaving it open for updating down the line. It&#x27;s much preferable to someone just picking something because of gut feeling &#x2F; hype &#x2F; assertiveness &#x2F; cool factor which is how a lot of projects end up in the bin after a few years.
评论 #43680884 未加载
freetime2大约 1 个月前
&gt; Well, it depends: there are many strong technical reasons on each side, so it’s better to keep an open mind and not come down on either side.<p>My heuristic in this case is just to go with whatever option is simpler, and gives us the most flexibility to course correct in the future if we turn out to be wrong.<p>Basically make it clear that in the absence of sufficient data to decide on the best course of action, we are being intentionally non-committal. Then outline what new information would be required for us to make a more informed decision one way or another (e.g. an actual customer asks for the hypothetical feature that we are discussing, or performance is insufficient, etc), and what actions and effort we would need to change course. When put like this, I find that everyone in the room usually ends up pretty satisfied with the plan.
Const-me大约 1 个月前
Some technical decisions aren’t that important.<p>A trivial example, I have very strong preference on using tabs instead of spaces for indentation. However, I don’t force people on my team to also use tabs because I realize that’s subjective, and doesn’t affect the product we’re developing. These white spaces are ignored by the compiler after all.<p>The tricky part is estimating consequences of these technical decisions. If you’re more or less confident in your estimations, and you believe the technical decision being made has severe consequences (not just to the product, in the long run development process is equally important), only then is the time to commit.
评论 #43680769 未加载
评论 #43680708 未加载
评论 #43680660 未加载
评论 #43680767 未加载
评论 #43680645 未加载
pjc50大约 1 个月前
&gt; &quot;If you don’t take a position, you’re tacitly endorsing the decision that eventually gets made&quot;<p>This is important in a lot of situations, not just engineering.<p>Variants of cut-and-choose can be useful here. If you flip a coin to make the decision for you, do you object to its outcome? If so, you&#x27;ve picked the other one.<p>It&#x27;s also worth having a discussing about responsibility, power, and accountability here. Conventional management structures are supposed to align this, but that rarely corresponds to reality.
michaeljx大约 1 个月前
We have 5 different engineering teams in our company.<p>The 4 are being led by benevolent-dictator-type of engineers, the 5th by a person extremely non-commital. This person avoids exerting any technically authority, so as not to disturb the team&#x27;s balance. All decisions are made democratically, all votes being equal regardless experience&#x2F;seniority. Same goes when being called for estimates.<p>Two of the 4 teams have become so big and independent, that the dictator-leads no longer need to participate in the d2d operations&#x2F;decisions, to the point where they now work mostly on individual RnD projects.<p>The other 2 are small specialized teams, whose members have become domain experts in specific areas, to the point that they can talk with the business and move on development, with little need of interaction with their lead, and absolutely no need for a PM&#x2F;PO layer.<p>The only team that struggles to perform is the one with the non-commital lead. It became so bad, that the current discussion is to dissolve the team, and have it&#x27;s members&#x2F;responsibilities be absorbed by the 2 big ones.
评论 #43680896 未加载
评论 #43680913 未加载
karmakaze大约 1 个月前
Whenever I face this, in my own analysis or others, I apply the &quot;let&#x27;s find out&quot; tactic. Instead of doing nothing I&#x27;ll propose that we do X which I surmise as an option that a) is non-destructive and reversible, b) has a chance of working out. [You can add your own criteria, e.g. fast&#x2F;easy, simple, etc] At the very least we&#x27;ll learn something. When someone else is stalling, I&#x27;ll phrase it something like &quot;Unless someone has specific reasons against investigating X, I propose we prototype it and see where it goes.&quot; If still unsure, prototype Y. <i>After that you usually realize there&#x27;s not much point prototyping yet another an simply choose one and see how far it can go.</i>
simonw大约 1 个月前
Almost all software engineering systems are reversible. If a decision can be unmade later I find is a <i>lot</i> easier to accept committing to a decision despite not yet being 100% confident it&#x27;s the best approach.<p>This works in collaborative decisions too: if someone still has doubts, ask them to &quot;disagree and commit&quot; to the new direction but promise them that you&#x27;ll evaluate if it is working out in a fixed time period - drop something on the calendar in two weeks time for example.<p>Indecision paralysis is much more harmful to a project then picking an option that later turns out to be suboptimal.
评论 #43681005 未加载
exiguus大约 1 个月前
I strongly support this approach. By voicing my thoughts, including any weaknesses and unknowns, I invite others to contribute their insights. This not only helps to address gaps in my knowledge but also encourages a collaborative environment where other engineers can engage in discussion and decision-making. I believe this dynamic is a sign of a healthy workspace, where open communication and teamwork are valued.
InDubioProRubio大约 1 个月前
Passive Non-Comittance (I will need more information, more prediction power, more certainty about future events) ironically is still more expensive, then active Non-Comittance (We just built all the implementation-components in such a way they can be exchanged later).
hinkley大约 1 个月前
The flip side of this is that engineers who won’t commit aren’t trusted and thus have low status on the development team. It’s easy enough to get promoted over them if they haven’t been Peter Principled yet.
t0mek大约 1 个月前
Famous example from the pop-culture is Burr vs Hamilton:<p>&gt; If you stand for nothing, Burr, what&#x27;ll you fall for?