赞
踩
hadoop 替代方案
“React.js is so much better than Angular”. “Java sucks, no one uses it anymore… we should use Golang”. “Pineapple is the worst pizza topping”. You’ve probably heard one of these very straight opinions. One option is the best, the other is the worst, X is better than Y and so on. But Java is still one of the most popular languages in the world. Angular gives a decent fight to React.js. Pizza with pineapple… well, that’s Ewwww.
“ React.js比Angular好得多”。 “ Java很烂,没有人再使用它了……我们应该使用Golang”。 “菠萝是最差的披萨馅料”。 您可能已经听过这些非常直接的意见之一。 一种选择是最好的,另一种是最差的,X优于Y,依此类推。 但是Java仍然是世界上最受欢迎的语言之一。 Angular对React.js进行了相当大的努力。 披萨配菠萝……恩,那是Ewwww。
Does that mean that more than half of the people are clueless? Or don’t know how to tell which technology is better or make the right choices? Maybe we should stop using terms like “better”, “worse”, “best” and shallow comparisons when evaluating alternatives. Instead, we should focus on the benefits of each solution, the disadvantages, and which one is a better fit for our specific problem.
这是否意味着超过一半的人一无所知? 还是不知道如何分辨哪种技术更好或者做出正确的选择? 在评估替代方案时,也许我们应该停止使用“更好”,“更差”,“最好”和浅表比较之类的术语。 相反,我们应该专注于每种解决方案的优势,劣势,以及哪种解决方案更适合我们的特定问题。
One way to do this is by creating an alternatives comparison table:
一种方法是创建替代比较表:
For example, let’s assume that we have a problem that can be solved in two ways. One is S.O.L.I.D and the other one is hackier. Some might say that we should always use a S.O.L.I.D solution, regardless of the circumstances. Does that mean that anyone who uses hacky code is a bad developer? I doubt it.
例如,假设我们有一个可以通过两种方式解决的问题。 一个是SOLID ,另一个是hackier。 有人可能会说,无论什么情况,我们都应该始终使用SOLID解决方案。 这是否意味着使用hacky代码的任何人都是不好的开发人员? 我对此表示怀疑。
Let’s put the alternatives in a table:
让我们将替代方案放在表中:
After composing this table, we can focus on the bottom line, and tie it directly to our goal.
组成这张表后,我们可以专注于底线,并将其直接与我们的目标联系起来。
An example of cases for “shipping as fast as possible, and we are ok with compromising on future quality” could be:
“尽可能快地发货,我们可以妥协地牺牲未来的质量”的一个例子可能是:
As you can see, using S.O.L.I.D is not always the better approach. If we care about code quality, we should definitely default to it, but we must make sure that we know the tradeoffs. Choose one solution over the other because you believe this is the best path to reach your goals. Don’t do it just because Uncle Bob or someone in your company said it’s better.
如您所见,使用SOLID并不总是更好的方法。 如果我们关心代码质量,则一定要默认使用它,但是必须确保我们知道这些折衷方案。 选择一个解决方案而不是其他解决方案,因为您认为这是达成目标的最佳途径。 不要仅仅因为Bob叔叔或您公司中的某人说更好。
In many companies, reviews (design reviews, product reviews, etc.) have the same ritual. The feature owner writes the spec. Their manager then reviews it. The group schedules a meeting to review the spec. More than once, there is a feeling that the purpose of these meetings is to get the stamp from the stakeholders rather than actually engage in an open discussion. The reasons why this can happen:
在许多公司中,评论( 设计评论,产品评论等)具有相同的习惯。 功能所有者编写规范。 然后,他们的经理对其进行审查。 该小组安排召开会议以审查规范。 人们不止一次地感觉到,这些会议的目的是从利益相关者那里获得印章,而不是实际参与公开讨论。 发生这种情况的原因:
Sometimes these meetings tend to be nit-picky. The conversation can focus on things that are not crucial for the feature success (“why do we use int32 and not int16?”, “strings or enums?”, “tabs or spaces?”).
有时这些会议往往挑剔。 讨论的重点可以放在对功能成功不重要的事情上 ( “为什么我们使用int32而不是int16?”,“字符串或枚举?”,“制表符或空格?”)。
The conversation on some details can take longer than expected. Time then runs out before the feature owner can cover the whole spec, sometimes even less than half of it. This can frustrating. Moreover, if a follow-up meeting is required, it can also postpone the decision making and the whole project timeline.
关于某些细节的对话可能花费比预期更长的时间。 这样一来,功能所有者就无法涵盖整个规格,有时甚至还不到一半,因此时间用完了。 这可能令人沮丧。 此外,如果需要跟进会议,它也可以推迟决策和整个项目时间表。
At my current company, we take a different approach. Reviews are made offline, using Paper (benefiting from its features like sharing, comments, tasks which makes the collaboration more efficient). Any other online editor can work.
在我目前的公司中,我们采用不同的方法。 可以使用Paper离线进行评论(受益于其功能,如共享,评论,任务,使协作更加高效)。 任何其他在线编辑器都可以使用。
For the design meetings, we use a different template. The decision maker chooses the 3–4 most important open questions that are critical to the feature’s success. They then compose an alternative table like we saw before. They can also recommend an alternative, but shouldn’t be very opinionated about it. The purpose of the meeting is to choose the proper approach based on the project goals.
对于设计会议,我们使用其他模板。 决策者选择3–4个最重要的开放性问题,这些问题对功能的成功至关重要。 然后,他们像我们之前看到的那样组成了一个替代表。 他们也可以推荐一个替代方案,但不要对此抱以为然。 会议的目的是根据项目目标选择适当的方法。
The meeting then turns from a monologue that is focused on “stamping” a solution to an open conversation about the best approach. The audience turns from being approvers to being advisors. The feature owner doesn’t need to “defend” their selected solution. It turns into a decision maker that bases their solution on the stakeholder advice. By setting time (10–15 min) for each question, you can make sure that you cover all open questions. A decision is taken by the feature owner when the time is up.
然后,会议从一个独白着手,该独白着重于“盖章”解决方案,然后是关于最佳方法的公开对话。 观众从成为批准者转变为顾问。 功能所有者无需“捍卫”他们选择的解决方案。 它变成了决策者,他们的解决方案基于利益相关者的建议。 通过为每个问题设置时间(10-15分钟),您可以确保涵盖所有未解决的问题。 时间到了,功能所有者将做出决定。
Making sure that everyone’s voice is heard, even the introverts, is just as easy as “Hey Jane, we didn’t hear your opinion, which option do you think will serve our goals? X,Y or Z?”
确保每个人的声音,包括性格内向的人都一样容易,就像“嘿,简,我们没有听到您的意见,您认为哪种方法能达到我们的目标? X,Y或Z?”
So next time you want to compare two or more alternatives, replace “React.js is better than Angular” with “React.js is easier to learn, more flexible, and is updated more frequently, so if we aim to quickly ramp up new engineers and move faster with the most top-notch technologies, this should be our choice between these two”.
因此,下次您要比较两个或多个替代方案时,将“ React.js比Angular更好”替换为“ React.js更易于学习,更灵活并且更频繁地进行更新,因此,如果我们希望快速推出新产品,工程师,并使用最先进的技术更快地移动,这应该是我们在这两者之间的选择。”
As for “Pineapple is the worst pizza topping” — maybe some things aren’t meant to have alternatives. ?
至于“菠萝是最糟糕的披萨馅料”-也许有些事情并不意味着可以替代。 ?
Thanks for spending 4 minutes of your time, until next time.
感谢您花费4分钟的时间,直到下一次为止。
-Alon
-阿隆
Special thanks to:
特别感谢:
Eric Suh who drove the creation of the engineering review process at Dropbox
埃里克·苏(Eric Suh)推动了Dropbox工程审查流程的创建
Pierpaolo Baccichet, Steve Eisner, Gal Zellermayer, James Cowling, and Devdatta Akhawe all of whom gave valuable feedback, both as early testers of the process and as reviewers
Pierpaolo Baccichet,Steve Eisner,Gal Zellermayer,James Cowling和Devdatta Akhawe作为过程的早期测试者和审阅者都提供了宝贵的反馈
Rina Artstain & Keren for proofreading, reviewing this article and giving awesome technical feedback
Rina Artstain & Keren 进行了校对,审阅了这篇文章并提供了很棒的技术反馈
hadoop 替代方案
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。