研究价值领域软件开发(译文)
By S.F.
本文链接 https://www.kyfws.com/news/software-development-as-a-research-in-domain-of-va/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 22 分钟阅读 - 10621 个词 阅读量 0研究软件价值领域开发(译文)
原文地址:https://www.codeproject.com/Articles/5250053/Software-Development-as-a-Research-in-Domain-of-Va
原文作者:Łukasz Bownik
译文由本站翻译
前言
The article discusses the similarity between software development and applied research and draws conclusions from it. 本文讨论了软件开发与应用研究之间的相似性,并从中得出结论. In this article we look at three major symbiotic organisms: customer, business, and developer. We look at how Flexibility impacts Profit, Predictability and Growth. Discuss how a lack of business vision impacts the need for Growth, and how this negative impact propagates along relation lines. We also look at the most common values satisfying the presented needs in context of software, and the stages of software solution development and scientific research. 在本文中,我们研究了三种主要的共生生物:客户,企业和开发人员.我们研究灵活性如何影响利润,可预测性和增长.讨论缺乏业务愿景如何影响增长需求,以及这种负面影响如何沿关系线传播.我们还将着眼于满足软件环境中提出的需求的最常见的价值,以及软件解决方案开发和科学研究的阶段.
(Disclaimer) 免责声明
(This article is my personal opinion about the nature of software development. This is not intended to be a scientific paper so many statements are intentionally bold and direct to make the text short. I did my best to present the nature of software development based on my own observations and available sources, but I am not a business theoretician, science philosopher nor sociologist, and I may be totally wrong. Additionally, this probably does not apply to all kinds of software (e.g., embedded), but in my opinion, covers at least the business application development process. Moreover, this article is unavoidably written from the developer perspective, though I would like to know other perspectives as well.) 本文是我对软件开发本质的个人看法.这并不是要成为科学论文,因此,许多陈述是故意加粗和直接的,以使文章简短.我尽力根据自己的观察和可用的资料来介绍软件开发的性质,但是我不是商业理论家,科学哲学家也不是社会学家,所以我可能是完全错误的.此外,这可能不适用于所有类型的软件(例如嵌入式软件),但我认为至少涵盖了业务应用程序开发过程.此外,尽管我也想了解其他观点,但从开发人员的角度来看,本文不可避免地是写成的. (This article gives context to the previous one:) 本文为上一篇文章提供了背景信息: (The Psychological Reasons of Software Project Failures) 软件项目失败的心理原因 ((reading recommended).) (建议阅读). (”) " **(Our real discoveries come from chaos, from going to the place that looks wrong and stupid and foolish.”) 我们真正的发现来自混乱,来自到看起来错误,愚蠢和愚蠢的地方." (―) ―(Chuck Palahniuk) 查克`帕拉纽克(Chuck Palahniuk)
(Acknowledgments) 致谢
(I’d like to thank Mr.) 我要感谢先生. (Gerard Garcia) 杰拉德`加西亚 (for all the valuable comments he provided.) 对于他提供的所有宝贵意见.
(It All Start With Needs) 一切始于需求
(According to) 根据 (Wikipedia) 维基百科 (,) ,(“A*) “一种**(*need*) 需要**(*is something that is necessary for an organism to live a healthy life. […] in the case of a need, a deficiency causes a clear adverse outcome: a dysfunction or death […], a need is something required for a safe, stable and healthy life […]”*) 是生物体健康生活所必需的. […]在需要的情况下,缺乏会导致明显的不良后果:功能障碍或死亡[…],需要是安全,稳定和健康生活的必要条件[…]” *(*. In the case of software development, there are three major symbiotic organisms (also called stakeholders) coexisting together and benefiting from a developed solution, which I define as*) .就软件开发而言,共有三种主要的共生生物(也称为利益相关者)并存并受益于已开发的解决方案,我将其定义为**(*software and any other supporting artifacts*) 软件和任何其他支持工件**(*(documents, procedures, policies, …). These organisms are:*) (文件,程序,政策^).这些生物是:
-
(customer – an entity or entities, whose needs drive the development of a solution, and who benefits from deploying it;) 客户–一个实体或多个实体,其需求驱动解决方案的开发,并且受益于部署该解决方案;
-
(business – an entity or entities, that benefit from providing a solution (owner, shareholders, management, …);) 业务–受益于提供解决方案的一个或多个实体(所有者,股东,管理层等);
-
(developer – an entity or entities that benefit from building the solution (programmers, architects, analysts, quality engineers, …).) 开发人员–受益于构建解决方案的一个或多个实体(程序员,架构师,分析师,质量工程师等).
(There can be more organisms, like for example “operations”, but I’ll keep three for simplicity.) 可以有更多的生物,例如"操作",但是为了简单起见,我将保留三个. (Each of these three organisms has its own set of needs which should be satisfied with the solution provided by the company.) 这三种生物中的每一种都有其自己的一套需求,这些需求应由公司提供的解决方案来满足.
(Figure 1. The needs of stakeholders.) 图1.利益相关者的需求.(For a) 为一个**(*customer*) 顾客**(*, the most important needs the solution must satisfy are:*) ,解决方案必须满足的最重要需求是:
-
(Utility) 效用(– which denotes how well the solution solves a problem the particular customer has. In case of software, a utility can be decomposed into provided functionality, convenience, performance, reliability and so on) –表示解决方案解决特定客户的问题的能力.如果是软件,则可以将实用程序分解为所提供的功能,便利性,性能,可靠性等.
-
(Flexibility) 灵活性(– which denotes how well the solution adapts to the new challenges that customer faces. It can be generally expressed as a readiness and response time to change requests) –表示解决方案如何适应客户面临的新挑战.通常可以表示为更改请求的准备时间和响应时间
-
(Affordability) 负担能力(– which can generally be expressed as a need to achieve a positive return of investment) –通常可以表示为实现正投资回报的需要
(For) 对于**(*business*) 商业**(*, the most important needs the solution must satisfy are:*) ,解决方案必须满足的最重要需求是:
-
(Profit) 利润(– measured with financial benefit required to maintain business) –以维持业务所需的财务利益计量
-
(Predictability) 可预测性(– which denotes how stable the internal and external environment of the company is) –表示公司内部和外部环境的稳定性
-
(Growth) 成长性(– which prevents stagnation and decay) –防止停滞和衰减
(For a) 为一个**(*developer*) 开发商**(*, the most important*) ,最重要 (needs) 需要 (*the solution must satisfy are:*) 解决方案必须满足以下条件:
-
(Income) 收入(– for support of the life and well-being of the developer (corresponds to two lowest levels of) –为了支持开发人员的生活和福祉(对应于两个最低级别的 (Maslow’s hierarchy) 马斯洛的阶层 ()) )
-
(Autonomy) 自治(– which can be translated to the need of having control over the environment (corresponds to the second level of Maslow’s hierarchy)) –可以转化为对环境进行控制的需求(对应于Maslow层次结构的第二层)
-
(Mastery) 精通(– which involves the improvement of one’s skills (corresponds to the two highest levels of Maslow’s hierarchy) and performing quality work) –这涉及到技巧的提高(对应于马斯洛等级的两个最高级别)和执行高质量的工作
-
(Purpose) 目的(– which translates to a need for) –转化为对 (higher meaning, justification of undertaken efforts, and improvement of the future) 更高的意义,所做努力的正当理由以及对未来的改善
(All these needs have to be satisfied to some extent by software solution for this symbiosis to flourish. Failure to satisfy some needs results in failure to satisfy others causing a potential domino effect and an end of symbiosis.) 所有这些需求都必须通过软件解决方案才能在某种程度上满足这种共生的需求.无法满足某些需求会导致无法满足其他需求,从而导致潜在的多米诺骨牌效应并终止共生.
(No Need Is an Island) 不需要是一个岛
(Needs are related in a manner that when one need gets satisfied, the potential ability to satisfy another need is amplified. On the other hand, failure to satisfy one need causes potential failure to satisfy another. An example of a relation would be higher Flexibility enabling an increase in Profit, as more features can be sold to customers.) 与需求的关联方式是,当一个需求得到满足时,满足另一个需求的潜在能力就会增强.另一方面,不能满足一个需求导致潜在的不能满足另一个需求.关系的一个例子是更高的灵活性,这可以增加利润,因为可以将更多功能出售给客户. (The following figure presents this concept, where ovals represent needs, lines represent relations and arrows denote the direction of (potential) positive or negative amplification (assuming all other factors constant).) 下图显示了此概念,其中椭圆表示需求,线表示关系,箭头表示(潜在)正或负放大的方向(假设所有其他因素不变).
(Figure 2. Relations between needs (for explanation see Appendix)) 图2.需求之间的关系(有关说明,请参见附录)(As mentioned before, the amplification may be negative. In this situation, a failure to satisfy one need causes failures to satisfy others. The following example diagram (which is a derivative of Figure 2) shows, how low quality of code fails to satisfy the need for Flexibility. This causes ripple effects on the whole set propagating along relation lines. The negative impact is denoted by the intensity of the grey color (more gray equals more impact), and the process is divided into stages marked by red vertical lines as impact takes time to propagate losing its value along the way.) 如前所述,放大可能是负的.在这种情况下,无法满足一个需求会导致无法满足其他需求.下面的示例图(图2的派生图)显示了低质量的代码无法满足灵活性的需求.这会对整个集合沿关系线传播产生波纹效应.负面影响由灰色的强度表示(更多的灰色等于更多的影响),该过程分为红色垂直线标记的阶段,因为影响需要时间来传播,从而损失了其价值.
(Figure 3. An unsatisfied need and its consequences (one of the possible expansions of the graph from figure 2)) 图3.未满足的需求及其后果(图2中图的可能扩展之一)(Low quality is generally attributed to a code that is difficult to understand and modify. This impacts) 低质量通常归因于难以理解和修改的代码.这会影响**(*Flexibility*) 灵活性**(*, as a company is not able to react quickly to changing customer needs.*) ,因为公司无法快速响应不断变化的客户需求.**(*Flexibility*) 灵活性**(*impacts*) 影响**(*Profit*) 利润**(*,*) ,**(*Predictability*) 可预测性**(*and*) 和**(*Growth*) 成长性**(*, as the product may lag behind the competition, budgets and schedules get overrun and the ability to adapt to new markets or generate product spin-offs is lowered. Lower*) ,因为产品可能会落后于竞争产品,因此预算和进度计划将被超支,适应新市场或产生产品衍生产品的能力将降低.降低**(*Profit*) 利润**(*impacts*) 影响**(*Affordability*) 负担能力**(*as the company’s ability to compete with the price is reduced. It also impacts*) 因为公司与价格竞争的能力降低了.它也会影响**(*Utility*) 效用**(*as new features, optimizations or other improvements get delayed. It also impacts*) 随着新功能,优化或其他改进措施的延迟.它也会影响**(*Income*) 收入**(*since a tight budget may force the company to reach for the cheaper workforce or cut existing benefits. Lower*) 因为预算紧张可能会迫使公司寻求廉价的劳动力或削减现有收益.降低**(*Profit*) 利润**(*impacts*) 影响**(*Autonomy*) 自治**(*, because when the budget gets tighter, control mechanisms get tighter as well. Finally, it impacts*) ,因为当预算收紧时,控制机制也会收紧.最后,它会影响**(*Mastery*) 精通**(*, when training opportunities diminish and the pace of work gets more important than quality. Lower*) ,当培训机会减少并且工作节奏变得比质量更重要时.降低**(*Predictability*) 可预测性**(*impacts*) 影响**(*Income*) 收入**(*in a sense that the company tends to cut development costs to increase the financial buffer. It also impacts*) 从某种意义上说,该公司倾向于削减开发成本以增加财务缓冲.它也会影响**(*Autonomy*) 自治**(*as the natural management reaction is to increase planning, reporting, and accounting accuracy. Lower*) 因为自然的管理反应是提高计划,报告和会计准确性.降低**(*Growth*) 成长性**(*or stagnation impacts*) 或停滞影响**(*Mastery*) 精通**(*. When no growth is planned, short term stop-gap solutions are more appreciated. Finally, lower*) .当没有计划增长时,短期的权宜之计解决方案将受到更多的赞赏.最后,降低**(*Utility*) 效用**(*and*) 和**(*Growth*) 成长性**(*impact*) 影响**(*Purpose*) 目的**(*, since developers lose the feeling that they are building something useful for the future.*) ,因为开发人员会感觉不到他们正在为将来构建有用的东西. (*The presented example is actually*) 所提供的示例实际上是**(*simplified*) 简化的**(*since some relations have been omitted for clarity. In a real situation, the feedback gets propagated along all lines (see Figure 2) until corrective action is taken or the company gets in trouble.*) 因为为清楚起见已省略了一些关系.在实际情况下,反馈会沿着所有方向传播(请参见图2),直到采取纠正措施或公司陷入困境为止. (*Another*) 另一个**(*simplified*) 简化的**(*example below shows how a lack of business vision impacts the need for*) 下面的示例显示了缺乏业务远景如何影响对**(*Growth*) 成长性**(*, and how this negative impact propagates along relation lines. I’ll leave the proof of this process as an exercise to the reader (using the table from Appendix).*) ,以及这种负面影响如何沿关系线传播.我会将这一过程的证明留给读者作为练习(使用附录中的表格).
(Figure 4. Another unsatisfied need and its consequences (one of the possible expansions of the graph from figure 2)) 图4.另一个未满足的需求及其后果(图2中图的可能扩展之一)## (From Needs to Values) 从需求到价值观 (In the context of software development, let’s define value as anything that satisfies a need (which is somewhere between ethical definition of) 在软件开发的背景下,让我们将价值定义为满足需求的任何事物(介于 (value) 值 (and economic definition of) 的经济定义 (utility) 效用 (). The better something (an artifact, event, process, material object, etc.) satisfies a need, the higher value it represents.) ).某种东西(工件,事件,过程,物质对象等)满足需求越好,它表示的价值就越高. (The most common values satisfying the presented needs in context of software can be summarized as follows (the list is not exhaustive, and many values usually satisfy more than one need):) 可以满足以下在软件环境中满足当前需求的最常见值:(列表并不详尽,许多值通常满足一个以上需求):
-
(for Utility – software functionality, operation speed, usability, low failure rate, low defect rate, user training, alignment with business process) 适用于实用程序–软件功能,操作速度,可用性,低故障率,低缺陷率,用户培训,与业务流程保持一致
-
(for Flexibility – readiness to accept change requests, speed of development, quality of communication) 灵活性–随时准备接受变更请求,开发速度,沟通质量
-
(for Affordability – affordable license price, stable pricing, flexible pricing) 经济适用性–许可价格合理,定价稳定,定价灵活
-
(for Profit – raw monetary value, stability of profit, customer retention rate) 利润–原始货币价值,利润稳定性,客户保留率
-
(for Predictability – transparent development process, employee retention rate, customer retention rate, stability of cost, readiness to accept change requests, speed of development) 可预测性–透明的开发流程,员工保留率,客户保留率,成本稳定性,准备接受变更请求,开发速度
-
(for Growth – customer base growth, product portfolio growth) 增长–客户群增长,产品组合增长
-
(for) 对于 (Income) 收入 (– raw monetary value, the regularity of payments, benefits) –原始货币价值,付款规律,收益
-
(for Autonomy – transparent scheduling, work time flexibility, trust) 自主权–透明的计划,工作时间的灵活性,信任
-
(for Mastery – training, appreciation of quality, freedom of initiatives) 精通–培训,对质量的欣赏,倡议的自由
-
(for Purpose – alignment with personal values, appreciation from a customer, appreciation from business) 出于目的–与个人价值观保持一致,客户的赞赏,业务的赞赏
(The goal of a successful symbiosis is to produce as much value as possible for all three organisms while) 成功的共生目标是为所有三种生物尽可能多地创造价值.(keeping the optimal balance) 保持最佳平衡(among all of the needs.) 在所有需求中.
(Software Development as Research Activity) 作为研究活动的软件开发
(In order to find values that may best satisfy stakeholders’ needs, software development team has to actively search through and evaluate all possible solutions. As needs change over time, there is a constant interactive pursue after a moving target. Because of this, software development resembles applied scientific research, where exploring the unknown creates something new (otherwise existing software would be reused). Software development process phases can be mapped to phases of) 为了找到最能满足利益相关者需求的价值,软件开发团队必须积极搜索并评估所有可能的解决方案.随着需求的变化,目标不断变化.因此,软件开发类似于应用科学研究,其中探索未知事物会产生新的东西(否则将重用现有的软件).软件开发过程阶段可以映射到以下阶段 (scientific research) 科学研究 (, though vocabulary used by both communities is different.) ,尽管两个社区使用的词汇有所不同.
(Figure 5. Software development vs scientific research process stages.) 图5.软件开发与科学研究过程阶段.(The stages of software solution development and scientific research resemble each other in the following manners:) 软件解决方案开发和科学研究的阶段在以下方面彼此相似:
-
(bid or feature request) 出价或功能请求(, being initial observation of customer’s need, is equivalent to interpretation of observation (what we actually see) in scientific research) 对客户需求的初步观察,等同于科学研究中观察的解释(我们实际看到的)
-
(requirements/business analysis) 需求/业务分析(, being the problem bounding phase, is equivalent to formulation of the right question that properly nails the observed problem) ,即问题界定阶段,等同于正确地解决观察到的问题的正确问题的提法
-
(design + implementation) 设计+实施(phase is equivalent to hypothesis proposal and making predictions of how to satisfy customer’s needs and with what consequences. It is a rapid iteration of mental construction and mental experiments, that explore the multidimensional space of possible solutions using) 阶段等同于假设提议,并预测如何满足客户的需求以及带来的后果.这是心智建设和心智实验的快速迭代,它使用以下方法探索了可能解决方案的多维空间 (heuristics) 启发式 (. This similarity is clearly visible, when one observes how design and code (being essentially the same at different layers of abstraction) tend to verify and influence each other rapidly until the work is finally considered finished.) .当人们观察设计和代码(在不同的抽象层上基本相同)如何趋于迅速相互验证并相互影响,直到最终认为工作完成时,这种相似性就清晰可见.
-
(finally,) 最后,(deployment) 部署(is an experiment that verifies hypothesis and predictions, mostly expressed in a form of software. Technical and functional assumptions get verified, and new change requests get formulated.) 是一项验证假设和预测的实验,通常以软件形式表示.技术和功能假设得到验证,新的变更请求得到制定.
(Taming Chaos) 驯服混乱
(Research, being by its nature a) 研究,就其本质而言 (creative) 创意的 (process, is) 过程,是 (inherently unpredictable and cannot guarantee success) 本质上是不可预测的,不能保证成功 ((as having good ideas is never guaranteed). Since software development strongly resembles (or to state it boldly, actually is) an applied scientific research, uncertainty is inherent to both the overall process and to every phase of software development.) (因为绝不能保证有好的想法).由于软件开发与应用科学研究非常相似(或大胆地说,实际上是),因此不确定性对于软件开发的整个过程和每个阶段都是固有的. (A bid or feature request is often an) 出价或功能请求通常是 (open-ended question) 开放式问题 (that can be answered only approximately considering the amount of information possessed at this stage. Ironically, scope and cost are usually fixed at this stage, when a project is just a ”guess”. The duration and effects of this phase cannot be predicted and is strongly affected by number of parties involved, geographic location, communication effectiveness, business strategies, economic state and other.) 仅在考虑现阶段所拥有的信息量的情况下才能回答该问题.具有讽刺意味的是,通常在这个阶段,当一个项目只是一个"猜测"时,范围和成本是固定的.此阶段的持续时间和影响无法预测,并且会受到参与方数量,地理位置,沟通效率,业务策略,经济状况等的强烈影响. (The requirements/business analysis is iterative by nature, as one loops until some acceptance threshold gets satisfied which is usually just a collective “gut feeling” of participants (sometimes called) 需求/业务分析本质上是迭代的,因为一个循环直到满足某个接受阈值为止,这通常只是参与者的集体"直觉"(有时称为 (minimum viable product) 最低可行产品 (). Requirements completeness is always an open-ended problem anyway, no matter how much time is spent on analysis. The duration (number of iterations) and effects of this phase is strongly affected by a number of parties involved, geographic location, weather, availability of domain experts, communication effectiveness, tools availability or competence of experts (it happens that customer designates the least competent person as a domain expert).) ).无论花费多少时间进行分析,需求完整性始终是一个开放的问题.此阶段的持续时间(迭代次数)和影响在很大程度上取决于所涉及的各方,地理位置,天气,领域专家的可用性,通信有效性,工具的可用性或专家的能力(碰巧,客户指定能力最弱的一方)领域专家). (The duration and outcome of design + implementation depends on quality of requirements, communication, skills, quality of existing code and design, and) 设计+实施的持续时间和结果取决于需求的质量,沟通,技能,现有代码和设计的质量,以及 (competence of participating people) 参与人员的能力 (. This stage requires high dose of) .这个阶段需要高剂量 (creativity) 创造力 (,) , (conscientiousness) 尽责 (and) 和 (openness) 开放性 (, and is impacted by the same issues as the previous one.) ,并且受到与上一个相同的问题的影响. (The unpredictability of deployment phase duration and outcome comes mainly from inability to enforce pace of adoption by customer, but communication makes a big impact as well.) 部署阶段持续时间和结果的不可预测性主要来自无法强制客户采用采用的步伐,但是沟通也产生了很大的影响.
(The Production Line Fallacy) 生产线谬误
(Many companies make a mistake thinking that the construction of software-based solutions is like) 许多公司误以为基于软件的解决方案的构建就像 (mass production of cars) 批量生产汽车 (. The issue is that production of cars is the process of making many instances of a known thing (body, engine, wheels, etc.) with some variability in terms of features and materials. The problem is generally well understood and scoped, methods well mastered and standards externally enforced. Because of that, many managers make a mistake that applying a well-defined process to software development will eventually lead to success. They think that strict adherence to currently fashionable process (eg.) .问题是汽车的生产是制造许多已知事物(车身,发动机,车轮等)的实例,这些事物在功能和材料方面都有一定的可变性.通常可以很好地理解和解决该问题,可以很好地掌握方法,可以从外部实施标准.因此,许多经理犯了一个错误,即将定义明确的过程应用于软件开发最终将导致成功.他们认为严格遵守当前流行的流程(例如 (SCRUM) SCRUM (), by a hoard of) ),by积 (pigeonholed production-line) 木桶生产线 (workers will lead to success.) 工人将导致成功. (In the light of what was said before, this is a fallacy as) 根据前面所说的,这是一个谬误,因为**(*no process can substitute peoples’ intelligence, knowledge, experience and dedication*) 任何过程都无法替代人们的智慧,知识,经验和奉献精神**(*. Moreover, an inappropriate process can suppress all these required qualities, resulting in worse results than no process at all. Translated into the realm of research this means that no amount of ordinary Joes, following even the most sophisticated process, can substitute one*) .而且,不合适的过程会抑制所有这些必需的质量,从而导致比根本没有过程更糟糕的结果.转化为研究领域,这意味着即使经过最复杂的过程,也没有任何普通的乔斯能替代一个人. (Einstein) 爱因斯坦 (*, because “*) ,因为" (*One machine can do the work of fifty ordinary men, [but] no machine can do the work of one extraordinary man*) 一台机器可以完成五十个平凡人的工作,但没有一台机器可以完成一个平凡人的工作. (*”, where a software-factory-line can be imagined as a machine itself. On the other hand, if one finds*) “,可以将软件工厂生产线想象成机器本身.另一方面,如果发现**(*intelligent, knowledgeable, experienced and dedicated people*) 聪明,知识渊博,经验丰富且敬业的人**(*and*) 和 (present them a goal) 给他们一个目标 (*, they will usually come up with a reasonable*) ,他们通常会提出合理的建议**(*minimal process*) 最小的过程**(*that will lead them there*) 会带领他们到那里**(*without much supervision*) 没有太多的监督**(*.*) .
(Best Effort Everywhere) 全力以赴
(Software development similarly to applied scientific research is a) 与应用科学研究类似的软件开发是(best-effort process with unpredictable time frame and results. There are risk mitigation techniques that can be used () 尽力而为的过程,其时间表和结果无法预测.有一些可以使用的风险缓解技术( (off-the-shelf components, design patterns, best practices, quality enforcement, project review procedures, short iterations) 现成的组件,设计模式,最佳实践,质量执行,项目审查程序,短期迭代 (, insurance, overbidding, etc.), but) ,保险,竞价等),但**(*inherent uncertainty cannot be eliminated*) 固有的不确定性无法消除**(*. This suggests that management strategies applied to both scientific research and software development should be similar and based on employing, the*) .这表明,应用于科学研究和软件开发的管理策略应相似,并且应基于使用 (right people) 合适的人 (*, providing appropriate means and*) ,提供适当的手段和 (managing risk) 管理风险 (*.*) .
(P.S. Beware of False Values) 附言提防虚假值
(*Approaching software development from value perspective may have some dangerous consequences if not done carefully, because there are some values that turn out to be false and eventually deadly when adopted by enterprise.*) 如果不仔细地进行操作,从价值的角度进行软件开发可能会带来一些危险的后果,因为有些价值在企业采用时被证明是错误的,最终是致命的. (*One of such values, often stated explicitly in corporate code of conduct, is courtesy, understood as the showing of politeness in one’s attitude and behavior toward others. Courtesy is important value in social terms as it fosters stability of society by preventing uncontrolled explosions of aggression. The problem is that enterprises and societies operate in different realities. For a society, it is more important to be stable than efficient, because (at least in the contemporary world) societies do not reside in a Darwinian world of*) 礼貌通常是在公司行为准则中明确指出的一种价值观,被理解为对他人的态度和行为礼貌.礼貌在社会上具有重要价值,因为它通过防止不受控制的侵略性爆炸来促进社会稳定.问题是企业和社会在不同的现实中运作.对于一个社会而言,稳定而不是效率更为重要,因为(至少在当代世界中)社会并不存在于达尔文式的世界中 (natural selection) 自然选择 (*. Companies on the other hand, live in a competitive world of aggressive natural selection called “*) .另一方面,公司生活在充满挑战的自然选择竞争世界中,这种竞争称为” (free market) 自由市场 (*”. In such a world, it is far more important to be efficient than polite. A healthy company shall always praise*) “.在这样的世界里,有效率比有礼貌更为重要.一个健康的公司应该永远赞美**(*constructive argument*) 建设性论点**(*over*) 过度**(*polite consensus*) 礼貌的共识**(*, as the first leads to creative solutions and the last to*) ,因为第一个导致创意解决方案,最后一个导致 (skilled incompetence) 技术能力不足 (*.*) . (*NOTE: You might be interested in my following article “*) 注意:您可能对我的以下文章” (The Oath Triangle) 誓言三角 (*” where I discuss the moral virtues that shall underpin commercial software development to ensure healthy cooperation.*) 在这里,我讨论了道德的美德,这些美德将支撑商业软件开发以确保健康的合作. (NOTE: You might also be interested in my article ‘) 注意:您可能也对我的文章感兴趣 “The Surgical Team” in XXI Century) 二十一世纪的"外科团队"( (’ where I present how to structure succesful software development team.) 在这里,我将介绍如何构建成功的软件开发团队.
(Appendix) 附录
(The following table explains the relations between needs as defined in the second chapter.) 下表解释了第二章中定义的需求之间的关系.
(Need-to-need relation) 需求关系 | (Amplification of Success) 扩大成功 | (Amplification of Failure) 失败放大 |
---|---|---|
(Affordability → Growth) 负担能力→增长 | (Low or flexible prices foster market share growth) 低廉或灵活的价格促进了市场份额的增长 | (High or inflexible prices hamper market share growth.) 高昂或僵化的价格阻碍了市场份额的增长. |
(Affordability → Predictability) 可承受性→可预测性 | (Low or flexible prices make solution immune to market turbulence) 低廉或灵活的价格使解决方案不受市场动荡的影响 | (High or inflexible prices make solution vulnerable to market turbulence) 高昂或僵化的价格使解决方案容易受到市场动荡的影响 |
(Autonomy → Flexibility) 自治→灵活性 | (High developer autonomy fosters a creative approach to change) 高度的开发者自主权促进了创新的变革方式 | (Low developer autonomy hampers creative approach to change) 开发人员自主权低下会阻碍创新方法的变革 |
(Autonomy → Growth) 自主→成长 | (High developer autonomy fosters creative approach to product(s)) 高度的开发者自主权促进了产品的创新方法 | (Low developer autonomy hampers creative approach to product(s)) 开发人员自主权低下会阻碍产品的创新方法 |
(Autonomy → Mastery) 自治→精通 | (High developer autonomy motivates skill improvement) 高度的开发人员自主权可促进技能提升 | (Low developer autonomy hinders skill improvement) 开发人员自主权低,阻碍了技能的提高 |
(Autonomy → Utility) 自治→实用程序 | (High developer autonomy fosters a creative approach to customer problems) 高度的开发人员自主权可以培养出解决客户问题的创新方法 | (Low developer autonomy hampers creative approach to customer problems) 较低的开发人员自主权阻碍了解决客户问题的创新方法 |
(Flexibility → Growth) 灵活性→成长 | (The ability to change opens opportunities to grow.) 改变的能力为成长提供了机会. | (Inability to change wastes opportunities to grow.) 无法改变就浪费了成长的机会. |
(Flexibility → Predictability) 灵活性→可预测性 | (Ability to change makes effort more predictable) 变革能力使工作更加可预测 | (Inability to change makes effort less predictable) 无法改变使努力难以预测 |
(Flexibility → Profit) 灵活性→利润 | (Ability to change encourages customers to pay for change) 变革能力鼓励客户为变革付费 | (Inability to change discourages customers to pay for change) 无法更改不鼓励客户支付更改费用 |
(Flexibility → Utility) 灵活性→实用程序 | (Ability to change allows keeping alignment with customer needs) 变更能力允许与客户需求保持一致 | (Inability to change prevents keeping alignment with customer needs) 无法更改会阻止与客户需求保持一致 |
(Growth → Mastery) 成长→精通 | (Expansion motivates developers for self-improvement) 扩张激励开发商自我完善 | (Stagnation demotivates developers for self-improvement) 停滞不前会激励开发人员自我完善 |
(Growth → Purpose) 成长→目的 | (The expansion gives developers the feeling of building future) 扩展使开发人员有建立未来的感觉 | (Stagnation deprives developers of the feeling of building future) 停滞使开发人员失去了建设未来的感觉 |
(Income → Flexibility) 收入→灵活性 | (High salary motivates developers for taking initiative and long term thinking) 高薪激励开发人员采取主动和长期思考 | (Low salary demotivates developers for any actions beyond the minimum) 低工资激励开发人员采取任何超出最低限度的措施 |
(Income → Predictability) 收入→可预测性 | (High salary motivates developers for taking initiative and long term thinking) 高薪激励开发人员采取主动和长期思考 | (Low salary demotivates developers for any actions beyond the minimum) 低工资激励开发人员采取任何超出最低限度的措施 |
(Income → Utility) 收入→效用 | (High salary fosters active approach to customer problems) 高薪鼓励积极解决客户问题 | (Low salary hinders active approach to customer problems) 低薪妨碍了积极解决客户问题 |
(Mastery → Affordability) 精通→负担能力 | (High skills reduce the time of development) 高技能减少了开发时间 | (Low skills prolong the time of development) 低技能会延长开发时间 |
(Mastery → Flexibility) 精通→灵活性 | (High skills foster technically flexible solutions) 高技能助力技术灵活的解决方案 | (Low skills hamper technically flexible solutions) 低技能阻碍了技术上灵活的解决方案 |
(Mastery → Predictability) 精通→可预测性 | (High skills make development easier) 高技能使开发更轻松 | (Low skills make development difficult) 低技能使发展困难 |
(Mastery → Utility) 精通→实用 | (High skills allow meeting customer needs) 高技能可以满足客户需求 | (Low skills allow only what is currently doable.) 低技能只允许当前可行. |
(Predictability → Autonomy) 可预测性→自治 | (Stable companies are more willing to trust developers) 稳定的公司更愿意信任开发人员 | (Unstable companies are more willing to control developers) 不稳定的公司更愿意控制开发商 |
(Predictability → Growth) 可预测性→增长 | (Stable companies can plan long term growth) 稳定的公司可以计划长期增长 | (Unstable companies tend to secure existing market positions) 不稳定的公司倾向于确保现有的市场地位 |
(Predictability → Income) 可预测性→收入 | (Stable companies can afford higher salaries and benefits) 稳定的公司可以负担更高的薪水和福利 | (Unstable companies save on salaries and benefits) 不稳定的公司节省薪水和福利 |
(Profit → Affordability) 利润→可承受性 | (Rich companies can compete with the price) 富公司可以与价格竞争 | (Poor companies cannot compete with price) 贫穷的公司无法与价格竞争 |
(Profit → Autonomy) 利润→自治 | (Rich companies are more willing to trust developers) 富裕的公司更愿意信任开发人员 | (Poor companies are more willing to control developers) 贫穷的公司更愿意控制开发商 |
(Profit → Growth) 利润→增长 | (Rich companies can plan long term growth) 富裕的公司可以计划长期增长 | (Poor companies struggle to secure existing market positions) 贫穷的公司努力争取现有的市场地位 |
(Profit → Income) 利润→收入 | (Rich companies can afford higher salaries and benefits) 富裕的公司可以支付更高的薪水和福利 | (Poor companies save on salaries and benefits) 贫穷的公司节省薪水和福利 |
(Profit → Mastery) 利润→精通 | (Rich companies can afford training and invest in quality) 富裕的公司可以负担得起培训并投资于质量 | (Poor companies save on training and quality) 糟糕的公司节省了培训和质量 |
(Profit → Utility) 利润→效用 | (Rich companies have means to develop costly features) 富公司有能力开发昂贵的功能 | (Poor companies do not have means to develop costly features) 贫穷的公司没有能力开发昂贵的功能 |
(Purpose → Flexibility) 目的→灵活性 | (Appreciation fosters a creative approach to change) 欣赏会激发创造性的变革方法 | (Lack of appreciation hampers creative approach to change) 缺乏欣赏会阻碍创新的变革方法 |
(Purpose → Growth) 目的→成长 | (Appreciation fosters a creative approach to product(s)) 赞赏促进了产品的创新方法 | (Lack of appreciation hampers creative approach to product(s)) 缺乏欣赏会阻碍产品的创新方法 |
(Purpose → Mastery) 目的→精通 | (Appreciation motivates developers for self-improvement) 欣赏激励开发人员自我完善 | (Lack of appreciation demotivates developers for self-improvement) 缺乏欣赏会削弱开发商的自我完善能力 |
(Purpose → Predictability) 目的→可预测性 | (Appreciation motivates adherence to schedules) 欣赏促使人们遵守时间表 | (Lack of appreciation demotivates adherence to schedules) 缺乏欣赏会阻碍人们遵守时间表 |
(Utility → Predictability) 实用程序→可预测性 | (A solution that meets customer needs has strong market position) 满足客户需求的解决方案具有强大的市场地位 | (A solution that fails to meet customer needs has a weak market position) 无法满足客户需求的解决方案市场地位很弱 |
(Utility → Profit) 效用→利润 | (A solution that meets customer needs can be sold for more) 可以满足客户需求的解决方案可以出售更多 | (A solution that fails to meet customer needs to be cheap to justify a purchase) 无法满足客户需求的解决方案必须便宜才能证明购买合理性 |
(Utility → Purpose) 效用→目的 | (A solution that meets customer needs gives developers the feeling of being useful) 满足客户需求的解决方案使开发人员感到有用 | (Solution that fails to meet customer needs deprives developers of the feeling of being useful) 无法满足客户需求的解决方案使开发人员失去了有用的感觉 |
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
Intermediate 新闻 翻译