新浦京81707con > 功能介绍 > 软件开发中的11个系统思维定律

原标题:软件开发中的11个系统思维定律

浏览次数:198 时间:2020-03-13

11 Laws of The System Thinking in Software Development

图片 1

The System Thinking Laws from Peter Senge’s book “The Fifth Discipline” applied to Software Development.

今天Leo给大家享受11软条件支付考虑定律,说实在的,那大概正是程序员之路的心得了,大概是颇负技术员都适用。

“作者会进一层努力地专门的学业”——一匹名称为博克斯er的马(出自George·奥Will的《动物农庄》)

Peter·圣吉在其撰写《第五项修炼》中涉及的系统思忖定律相符适用于软件开垦。

当解决难题时,大家会倍感很欢跃。大家常常不思虑后果。让人以为奇怪的是,大家建议的消除方案或许会产生反效果,并推动新主题素材。

Peter·圣吉在其文章《第五项修炼》中关系的系列思维定律相像适用于软件开垦。

1.Today’s problems come from yesterday’s solutions(**前些天的标题根源今天的减轻方案**).
We, humans, are happy when we solve problems. We often don’t think much about consequences. Surprisingly, our solutions
could strike back and create new problems.
当消除难题时,大家会以为相当慢乐。大家平时不考虑后果。令人深感意外的是,我们提议的减轻方案恐怕会
发出反效果,并带动新主题素材。
[1]A company decides to reward few key members of the very successful team with bonuses and promotions. The rest of the
      team feel unfairness and loss of motivation. Eventually tension between members is increased. The following projects are no 
      longer successful.
    作为对得到伟大成功的团伙的褒奖,公司调整为团队中的少数骨干成员发放奖金并进步职位。团队中的其
    他成员会以为失之偏颇,何况会丧失积极性。最终使集体成员之间的关系更是浮动,后续项目也就很难再取
    得成功。
[2]A project manager frequently asks developers to fix a new bug or work on urgent requests from customers. Developers do
      their best to fulfil these requests. Frequent distractions prevent them from finishing their main tasks for the iterations. Project
      shows only little progress.
      项目首席营业官频仍要求开拓者修复二个新的软件Bug,也许管理客商的热切供给,而开采者尽力知足那些必要。
      不过,过于频仍地分流精力会妨碍他们成就迭代进度中的主要任务。由此,项目张开比超级慢。
2.The harder you push, the harder the system pushes back(尽力越大,系统的反功效力也越大).

  • 作为对获取宏大成功的公司的表彰,公司决定为集体中的少数骨干成员发放奖金并进级职位。团队中的其余成员会感觉有所偏向,并且会丧失积极性。最后使协会成员之内的涉嫌越来越紧张,后续项目也就很难再一次取得得成功。

  • 项目首席营业官频繁必要开荒者修复一个新的软件Bug,大概管理客商的刻不容缓供给,而开拓者尽力知足那一个要求。可是,过于频仍地分流精力会妨碍他们成功迭代进度中的首要义务。因而,项目张开比一点也不快。

1. 明天的标题来自明日的化解方案(Today’s problems come from yesterday’s solutions)

We have this stubborn reaction to push our way through when things are not working out as we want. We charge without time to
stop, think and find better alternatives. Sometimes we solve problems, but often we find ourselves up to ears in the swamp of other
problems.
当职业的拓宽结果毫无如笔者辈所愿时,大家会固执地铁杵成针和睦的艺术。大家并没有的时候间来停下来思维并查找更加好的
代表方案,而是“一条道走到黑”地前行冲。一时候尽管减轻了难点,但屡屡又开采深陷于任何难点之中。
[1]Managers keep pushing people to work overtime and meet deadline when a system is far from completion. The number of bugs is
      increasing and overall quality is rapidly dropping causing more delays. More and more effort is required to launch the software system. 
     当一个系统远未成功时,组长日常会不停督促职员和工人加班地干活,何况须要有效期实现。系统bug数量的不仅仅
   扩张及全部质量的大幅下落,招致更加的多的误工。因而,需求做越多的行事来构造软件系统。
[2]Developers heroically stretch the same architecture for the new system requirements, which don’t fit into the old rigid way. They are
      so busy doing it that don’t have time to stop, analyze and change approach. The system degrades. 
      为了满足新种类的渴求,开采者勇敢的对原来的系统构造实行扩充,但笨拙陈旧的点子已经不可能满意这么些新供给。
   他们忙于做这事,以致于没偶然间停下来稳重剖析并且修正方法,进而以致系统品质下落。
3.Behavior grows better before it grows worse(福兮祸之所伏State of Qatar.
Short-term solutions give us a short break and temporary improvement, but don’t eliminate fundamental problems. These problems will make
situation worse in the long run.
短时间的设计方案,会给大家带给短暂的休养和现象的一时订正,不过不会从根本上搞定问题。那个主题材料终归会使情
况变得更糟。
[1]A company gives customers hefty discounts and run expensive advertisement – many people buy the software.
     Customers are unhappy after purchase, because software is unusable and unreliable. 
     公司为客商提供富饶的巨惠并投入巨额资金宣传,让无数人买入软件 。不过,客户购买之后非常不中意,因为软件十分的小概
   使用也不可相信赖。
[2]Management promises development team big bonuses if they finish system in time. A team work hard, but soon realize that it is impossible.
      Developers becomes cynical and unmotivated. 
     如果开辟小组能够定时完毕系统开荒,管理层承诺,假诺开辟公司能够按期完毕系统开辟,公司会提供大量的奖金。
   多个团伙开头着力的干活,但高速他们就开采到这是不容许达成的。于是开垦者变得消极并丧失重力。
4.The easy way out usually leads back in(最轻便出去的办法往往会形成再次回到来State of Qatar.
We learn few solutions in our life, which brought easy success earlier. We try to vigorously apply them in any situation disregarding particular
context and people.
在生活中学到的一些技术方案能够扶植我们随意地相同的时间更早的地获得成功。大家总是试图把它们强加到此外意况上,
而忽视了区别日常的背景以至相关人士。
[1]Agile coach is forcing full Extreme Programming implementation when developers are not ready to accept some practices as pair programming
      or TDD. It creates stress, conflicts and allergy to any Agile approach. 
      开拓者尚未曾未雨居安虑危策动好接收结对编制程序大概测量试验驱动开垦那样的奉行时,敏捷教练强行完成完全的终极编制程序。那会给别的
   敏捷方法带给压力、冲突甚至消极面影响。
[2]Developers apply design patterns everywhere unnecessarily complicating the system. 
      开垦者把设计形式应用到任何地点,那是不得要领的,何况那会让系统变得复杂。
5.The cure can be worse than the disease(医疗带给的结果只怕会比病魔引致后果更要紧卡塔尔国.
Some familiar solutions could be even dangerous like drinking beer while programming to reduce stress for unreal deadlines.
有一些眼熟的办法大概会更危险,比方在编制程序的时候喝果酒,来缓解不符合实际的天职期限带给的下压力。
[1]A company hires various contractors to work on core features, because doesn’t trust full-time developers. As a result, the system doesn’t
      have conceptual integrity, in-house developers don’t understand and cannot change it. Domain knowledge, interpretation and concepts are
      missing from the brains of company employees. 
      由于不信任全职开拓者,一家商城雇佣了大量的中间商来支付主题成效。结果,系统不持有概念完整性,自个儿公
   司的开荒者看不懂,况兼无法做出更改。所以,公司职工也不打听有关领域的文化、解释以至概念。
[2]Developers make many shortcuts, copy and paste code for similar functionality to please management and deliver first version fast. They
      do quick progress at the beginning, but code eventually becomes Big Ball of Mud. 
     开垦者会走走后门,拷贝相符成效的代码来赶过程,而且争取尽快发行第一个本子。他们一开端举办赶快,可是代
   码最终会产生大泥球(比喻系统布局不清楚卡塔尔。
6.法斯特er is slower(太急解决不了难题State of Qatar.
When we feel smell of success we start advance at the full speed without much caution. However, the optimal rate of growth usually is much
slower than the fastest growth possible.
当大家看来成功的晨光,大家会努力,不再讷言敏行。但是,最优增进速率经常会比恐怕的最快增加速率要慢得多。
[1]Managers add many people to already successful project. The overall progress becomes slower, because of communication overhead
     and loss of team coherence. 
     COO们往往为早就打响的项目增加很六人手,但完全进展就能够变慢,因为调换所用的花费扩展,以至团队成员之间
  失去默契。
[2]Developers quickly add new features to the system without proper refactoring and improving existing code. System becomes difficult
      to understand and modify. 
      在并未有对代码进行客观重构及校正的意况下,开辟者急速的为系统增多新的作用,会使系统变得难懂,并且难以改进。
7.Cause and effect are not closely related in time and space(在岁月和空间上,因果并不精心相关卡塔尔. We are good at finding causes to our problems, even if they are just symptoms and far from real root causes.
咱俩善用为出现的困顿搜索原因,尽管这个原因很牵强,並且未有是当真的根本原因。
[1]Development team stops accepting requirement changes from customers to finish a system in time. Customers are unhappy with delivered
      software. 
     为了准期实现系统,开辟企业不再选拔来自客商的须求变动。由此,客商对发行的软件倒霉听。
[2]After few incidents with a live system, management compel developers to get approval and write detailed technical specification before
      implementing any change in the system. Developers lose motivation for any improvements in the system and start procrastinating. 
    实时系统历经坎坷之后,经营层倒逼开采者同意,并且在给系统做出任何退换在此之前创作详细的手艺验证。结果开辟者
   失去了为系统做出其余修改的动力,并且带头贻误。
8.Small changes can produce big results-but the areas of highest leverage are often the least obvious(微小的转移能够产生明
显的遵从,但这种杠杆成效最大之处往往也最不明朗卡塔尔.

Most obvious grand solutions like changing company policy, vision or tag line often don’t work. Small ordinary, but consistent changes could
make a huge difference.
像改换集团战略、愿景或许广告用语那样明显况且关系首要的解决方案往往不起成效。相反,小而平凡,但不仅的改
变却会带给大不相符的成效。

当工作的举办结果毫无如笔者辈所愿时,大家会固执地细水长流团结的秘技。我们一直有时间来停下来思维并查找更加好的取代方案,而是“义无反顾”地向前冲。一时候即使缓慢解决了难题,但每每又开采深陷于其余主题素材之中。

当解决难点时,我们会认为很开心。大家日常不酌量后果。令人认为古怪的是,我们提出的缓慢解决方案恐怕会发生反效果,并带给新主题素材。

[1]Developers have everyday interactions with customer and make most decisions. As a result, customer needs are well understood, decisions
are better and solutions are optimal.

  • 当叁个种类远未成功时,老董常常会持续督促工作者加班地劳作,并且必要有效期达成。系统bug数量的源源不断增加及全体品质的大幅度下跌,以致越多的延误。由此,需求做越多的做事来计划软件系统。

  • 为了满足新系统的渴求,开垦者勇敢的对原始的系统构造进行扩大,但鲁钝陈旧的秘籍已经不可能满意这一个新需求。他们忙于做那事,以致于未有时间停下来细心深入分析何况更动方法,进而导致系统品质下滑。

    作为对获得伟大成功的团伙的表彰,集团调节为团队中的少数骨干成员发放奖金并晋级职位。团队中的其余成员会以为有失偏颇,而且会丧失积极性。最后使集体成员之内的关联特别浮动,后续项目也就很难再一次获得得成功。

开垦者天天都与客商拓宽沟通,而且做出大多数调节。由此,能够更加好地领会客户的供给、做出更加好的支配而且付诸最优
的解决方案。

短时间的解决方案,会给我们带给短暂的休养和情景的有时修改,可是不会从根本上解决难点。这个标题毕竟会使事态变得更糟。

    项目老板频繁须求开拓者修复叁个新的软件Bug,恐怕管理顾客的殷切要求,而开采者尽力满意这几个需求。可是,过于频繁地散落精力会妨碍他们做到迭代进度中的首要任务。由此,项目开展极慢。

[2]Developers build automated unit tests for each function in the system. As a result, design is flexible, people are confident, the system is fully
tested after each change.
开辟者为系统的每项作用设计自动化单元测量试验。由此,设计更加灵敏、大家更自信、系统在每此改正现在都能得到完全的测量试验。
9.You can have your cake and eat it too – but not at once(一山二虎能够兼得,但不是还要兼得卡塔尔国.
We often face rigid “either-or” choices. Sometimes they are not dilemmas if we change our perspective and rules of the system.
大家常常会见前蒙受刻板的“非此即彼”选取。假诺大家退换一下谐和的见识及系统法则,这几个选拔一时并不会使我们进退两难。
[1]Experience managers know that we cannot increase the number of features and reduce time and cost simultaneously. However, it could be
     possible to achieve if we just improve flow of ideas, find right people and avoid over-engineering. 
     经历丰裕的项目CEO知道扩大系统性子的多少与裁减时间和开荒不足兼得。可是,假使我们完善一下主见、搜索合适的人
   才何况幸免过度开拓,那也是唯恐成功的。

  • 商厦为买主提供方便的优化并投入巨资宣传,让不菲人购销软件 。可是,顾客选购之后很不知足,因为软件无法利用也不可信。

  • 经营层承诺,若是开拓协会能够按期完毕系统开采,集团会提供巨额的奖金。二个团组织初步着力的干活,但飞速他们就开采到那是不容许完结的。于是开采者变得消极并丧失引力。

2. 奋力越大,系统的反成效力也越大(The harder you push, the harder the system pushes back)

[2]Developers believe that they should follow either Transaction Script or Domain Model architecture patterns. However high performance
     solution in the complex domain can combine both for the best effect. 
    开垦者以为他们相应还是使用事务脚本,要么采纳域模型系统结构形式。然则,复合域中的高品质解决方案能够将两端结合,
  以获得最好质量。

在生活中学到的局地化解方案能够协理我们随意地同时更早的地得到成功。大家总是试图把它们强加到别的处境上,而忽略了特别的背景以致有关人口。

当职业的张开结果毫无如笔者辈所愿时,大家会固执地滴水穿石和睦的法子。大家并没有时间来停下来思维并索求越来越好的代表方案,而是“一条道走到黑”地前行冲。有的时候候纵然缓慢解决了难题,但频频又开掘深陷于任何难点之中。

10. Dividing an elephant in half does not produce two small elephants(把一只大象分两半不会得到双方大象卡塔尔.
Inability to see the system as a whole could often lead to suboptimal decisions.
没辙完全通晓系统,往往会做出次优决定。
[1]A manger evaluates developers based on the number of lines of codes they produce or points they implemented during iteration. Developers
     produce a lot of useless code. 
     项目老董往往由此转移的代码量和迭代进程中完结的效劳数来评估开采者。而开采者往往会变动多量无用代码。
[2]Management promises testers $5 dollars for any found bug in the system. Testers are no longer interested in cooperating with developers and
     prevent root causes of the bugs. Good and productive relations between teams disappear. 
     管理层承诺,每开掘一处系统bug,测量试验者将获得5澳元。测验者对跟开垦者合营不再感兴趣,而且不再计较破除产生bug
   的常常有因素。团队之间出色何况飞快的涉及未有。

  • 开拓者尚未有备无患好接收结对编制程序可能测量试验驱动开荒那样的实施时,敏捷教练强行达成完全的极端编制程序。那会给任何敏捷方法带给压力、矛盾甚至消极的一面影响。

  • 开垦者把设计格局应用到其余地点,那是冠上加冠的,而且那会让系统变得复杂。

    当三个系统远未到位时,老董平时会不停督促职员和工人加班地干活,而且供给限制时间完结。系统bug数量的缕缕增添及全体品质的大幅度下落,引致越来越多的延误。因此,需求做越多的干活来布置软件系统。

11. There is no blame(未可厚非卡塔尔国.
We like to blame and point fingers to other people or circumstances, sometimes we even believe in this. But we and cause of our problems are
part of the System.
笔者们钟爱归纳于客观条件,或对人家议论纷纷,甚至对此计合谋从。不过,我们友好甚至难点的由来都以系统的一有的。

微微眼熟的办法恐怕会更危殆,比方在编程的时候喝干红,来缓慢解决乱坠天花的职分期限带来的压力。

    为了满意新系统的必要,开辟者勇敢的对原始的类别布局进行扩大,但呆笨陈旧的方法已经无法满足这几个新必要。他们忙于做这事,甚至于没不常间停下来稳重解析并且修正方法,进而引致系统品质下落。

[1]It is Joe fault that the team didn’t release system this morning. He didn’t fix all the bugs overnight even though PM kindly gave him free pack
     of beer, T-shirt and pizza. 
    明日上午团队尚未公布种类完全部是乔的偏差。即便项目老总亲呢地为其提供了免费的白酒、背心以至披萨,他也未能在一
  晚上的日子内修复全数的后天不良。
[2]People don’t use a company’s excellent Web 2.0 social application. Users are simply stupid and don’t appreciate

  • 鉴于不相信赖全职开辟者,一家商铺雇佣了大气的承经销商来开辟为主成效。结果,系统不具有概念完整性,本身集团的开辟者看不懂,并且不只怕做出改良。所以,集团职工也不打听相关领域的文化、解释以致概念。

  • 开辟者会走近便的小路,拷贝相似功效的代码来赶进程,况且争取尽早发行第四个本子。他们一同首开展赶快,可是代码最后会化为大泥球(比喻系统构造不明晰State of Qatar。

3. 福兮祸之所伏(Behavior grows better before it grows worse)

     hard work. 
    大家不会利用一个厂商优越的Web 2.0社会化应用,客商垂怜简单实用的东西,而且不会领情你劳累专业的硕果。

当大家看来成功的晨光,大家会着力,不再戒急用忍。可是,最优增进速率日常会比大概的最快增进速率要慢得多。

短时间的缓慢解决方案,会给大家带给短暂的止息和现象的有时纠正,不过不会从根本上解决难点。那些标题究竟会使事态变得更糟。

So what(然后呢)?
These 11 laws of The System Thinking show that all our solutions have consequences, sometimes bad and unexpected. Systems around us are
what they are, and we shouldn’t blame, but learn them. To master The System Thinking and control these systems we should
以上11条系统思忖定律表明,大家提议的保有技术方案都会生出一定的结局,有的时候特别沉痛并难以置信。大家周边的种类本
就那么,大家不应苛责它们,而是要从中学习。要精晓系统思维形式并决定那一个系统,大家需求产生如下几点:
[1]understand what are the systems we are dealing with, either human or software. 
  要明了我们是在跟什么的系统打交道,是人可能软件;
[2]consciously learn relations, cause and effect chains 
    有发掘地学习相互关系、因果链;
[3]perceive the systems as a whole and as the part of other systems 
    把系统作为叁个全体,何况视其为其余系统的一片段。
There are many challenges to the system thinking. Many we can defeat with gaining and using knowledge how systems work. But the most serious
challenge is our own contradictory human nature. Our passions, emotions and instincts could easily defy the rational and systematic way of thinking.
First step to master the system thinking is to learn how to cooperate with ourselves.
系统思想方面有那些挑衅,通过得到而且采取有关系统职业方法的知识,大家得以摆平当中的许多挑衅。可是,大多数冷淡挑
战是大家人类与之相冲突的秉性。大家的激情、激情以至本能能够自便改造我们理智、条理鲜明的思考格局。明白系统思维方
式的首先步正是要学习如何跟本人搭档。

  • 经纪们往往为早就打响的品类高居不下超级多少人手,但完全进展就能变慢,因为沟通所用的花费扩充,以至团队成员之间失去默契。

  • 在还没对代码举行客观重构及校正的意况下,开辟者火速的为系统增添新的效果,会使系统变得难懂,何况难以改良。

    集团为购买者提供丰饶的优质并投入巨额资金宣传,让许两个人买卖软件 。不过,顾客购买之后特别不乐意,因为软件不恐怕利用也不可信。

Question: What is your experience with the system thinking (or absence) in software development?
在软件开采进度中,你有(或贫乏)哪些系统理念的行使阅世?

小编们擅长为现身的不便搜索原因,纵然那些原因很牵强,何况未有是真正的根本原因。

    借使开垦小组能够定期完毕系统开荒,管理层承诺,如若开采公司能够按期完结系统开垦,集团会提供大批量的奖金。多个协会初步努力的做事,但连忙他们就发现到那是不或许落成的。于是开垦者变得消极并丧失引力。

From :

  • 为了按期完结系统,开采协会不再接纳来自客户的供给变动。因而,客商对发行的软件不称心。

  • 实时系统历经坎坷之后,经营层反逼开拓者同意,并且在给系统做出任何纠正此前创作详细的技术验证。结果开荒者失去了为系统做出任何改过的引力,并且领头贻误。

4. 最轻便出去的主意往往会以致重回来(The easy way out usually leads back in)

像改换集团政策、愿景或许广告用语那样显然何况关系首要的缓和方案往往不起作用。相反,小而普通,但不断的变动却会带来大不相像的成效。

在生活中学到的部分建设方案可以支持大家随意地同期更早的地取得成功。我们连年试图把它们强加到任何情形上,而忽视了超过常规规的背景以致相关人士。

  • 开辟者天天都与客户进行交换,何况做出大多数垄断(monopoly卡塔尔国。由此,可以更加好地领略顾客的急需、做出越来越好的调节何况付诸最优的技术方案。

  • 开采者为系统的每项功效设计自动化单元测量检验。因而,设计越来越灵敏、大家更自信、系统在每此改良今后都能博得完全的测量检验。

    开荒者还从来不备选好接纳结对编制程序大概测量试验驱动开垦这样的执行时,敏捷教练强行达成完全的极限编制程序。那会给此外敏捷方法带给压力、冲突以致消极面影响。

咱俩平时会面前境遇刻板的“非此即彼”选用。即便大家转移一下温馨的见解及系统法则,这么些选取有的时候并不会使我们进退维谷。

    开荒者把设计格局应用到任哪里方,这是掘地寻天的,况兼那会让系统变得复杂。

本文由新浦京81707con发布于功能介绍,转载请注明出处:软件开发中的11个系统思维定律

关键词: 新浦京81707con 随笔 所有随笔 定律 思维

上一篇:你真的了解volatile关键字吗,Java并发编程

下一篇:没有了