Architecture Modernization Execution: When did estimates turn into deadlines?
架构现代化的执行:估算何时变成最后期限?
Tip: In complex software modernization projects treat estimates as guidelines, not deadlines.
提示:在复杂的软件现代化项目中,应将估算作为指导原则,而不是最后期限。
Can I please return to my vacation days in early October?
我能在十月初恢复休假吗?
After my unforgettable and fun vacation in Seoul and Sokcho, my original plan was to write about Systems Thinking and the book I read, "Zen and the Art of Motorcycle Maintenance" by Robert Pirsig.
在Seoul 和Sokcho 度过了难忘而有趣的假期之后、我最初的计划是写系统思考和我读过的罗伯特-皮尔希格(Robert Pirsig)的《 禅与摩托车保养的艺术》一书。
But all it takes is a moment, which has lasted more than two weeks, and I feel my life has turned upside down. The last two weeks have been quite literally a car wreck.
但这一切只需要一瞬间,而这一瞬间已经持续了两个多星期,我觉得我的生活已经天翻地覆。过去两周简直就是一场车祸。
First, the Sunday before the US elections, while pulling over for a paramedic, I got rear-ended by a monster pickup truck. I am fine, thankfully, but my car still is not.
首先,在美国大选前的那个星期天,我在为一名医护人员停车时,被一辆怪兽皮卡车追尾。幸运的是,我没事,但我的车还没好。Second, I really believed that the company I work for, the New York Times, would avoid the ULP strike by the tech workers by agreeing to a fair contract before the US elections. That did not happen. And I don't want to discuss the US election results because that hurt will not go away anytime soon. Meanwhile, my colleagues and I went on an 8-day ULP strike. Since the company refused to bargain with us while we were on strike, we decided to end the strike and return to work earlier this week. We would like to get the contract we deserve soon.
其次,我真的相信我所供职的《纽约时报》会在美国大选之前达成一份公平的合同,从而避免技术工人的u乐国际pt老虎机罢工。但事实并非如此。我不想讨论美国大选的结果,因为这种伤害不会很快消失。与此同时,我和同事们进行了为期 8 天的 ULP 罢工。由于公司拒绝在我们罢工期间与我们谈判,我们决定结束罢工,于本周早些时候返回工作岗位。我们希望尽快得到我们应得的合同。I am trying very hard to return back to functioning, I must be succeeding because here I am, able to write some words!
我正在努力恢复正常工作,我一定是成功了,因为我现在可以写一些文字了!
Estimates - Is it an Art or Science?
估算--是艺术还是科学?
My car has been in the auto body repair shop for the past two weeks, and I am still trying to get an estimate of its damages. I am learning that it's an interesting domain:
过去两周,我的车一直在车身修理厂,我仍在努力估算它的损失。我发现这是一个有趣的领域:
First, the insurance adjuster submits what they think is the damage to the car to the repair shop. Let's say this is $15000
首先,保险公估人向修理厂提交他们认为的汽车损失。假设损失为 15000 美元Next, the repair shop submits what they think is the damage back to the insurance company. Let's say it's $18000, and the shop estimates it would take 30 days to fix it.
接下来,修理厂将他们认为的损失情况反馈给保险公司。假设损失为 18000 美元,修理厂估计需要 30 天才能修好。Eventually, the insurance adjuster and the repair shop expert meet to assess the damage together. Let's say the insurance adjuster approves this new estimate from the repair shop. The repair shop then starts with the repair process. At least this is my understanding so far.
最后,保险理算员和修理厂专家会聚一堂,共同评估损失。假设保险公估人批准了修理厂的新估价。然后,修理厂就开始进行修理。至少这是我目前的理解。
Unforeseen Issues 不可预见的问题
But what if there is damage that can't be seen yet? Let's say the repair shop is in the process of doing the repairs they notice additional damage. Or they put the car on the frame machine to see if there is damage to the frame. In a unibody frame, it's not just the point of impact of the frame; some of the effects can also transfer to the back of the frame. So they'll have to inspect it to assess the full damage. They might start unassembling the car and notice more damage that was not originally on the estimate. Now what?
但是,如果有一些损伤还看不出来呢?比方说,维修店在维修过程中发现了额外的损坏。或者他们把车放在车架机上,看看车架是否有损坏。在非承载式车架中,不仅仅是车架的撞击点,一些影响也会转移到车架背面。因此,他们必须对车架进行检查,以评估全部损坏情况。他们可能会开始拆卸汽车,并注意到更多原先估价中没有的损坏。现在怎么办?
Emergent Solutions 新兴解决方案
Let's say, based on the new findings, it's going to cost an additional $20,000. They now need the approval of the insurance company to proceed. So they write up the new findings with the new cost and send a supplemental repair for approval. The insurance company will determine whether, at this point, it still makes sense to proceed with the repair or call it a total loss. And, of course, there are guidelines and rules to determine that. Let's assume it's not a total loss. The insurance company then approves the additional cost of repair.
比方说,根据新的研究结果,需要额外花费 2 万美元。现在他们需要保险公司的批准才能继续。因此,他们会写出新的结论和新的费用,并发送一份补充修复申请以供批准。此时,保险公司将决定是继续维修还是将其列为全损。当然,确定这一点是有准则和规则的。假设不是全损。保险公司会批准额外的维修费用。
Real Talk or Crazy Talk?
真话还是疯话?
Can you imagine if the insurance company started arguing with the repair shop, asking them—no—telling them that they would only pay the $18,000 and not the additional $20,000 because that was the original estimate? Does that sound ridiculous to you? It does to me, too. Thank heavens, reality does not operate like this.
你能想象如果保险公司开始与修理厂争论,要求他们--不--告诉他们他们只支付 18,000 美元,而不支付额外的 20,000 美元,因为那是最初的估价吗?你觉得这听起来可笑吗?我也觉得荒唐。谢天谢地,现实并非如此。
Isn't Complex Software Architecture Modernization the same?
复杂软件架构现代化不也一样吗?
When you are in the process of modernizing legacy software, you are in the realm of complex software. When you look at it from the outside, you see some obvious things, and based on experience and expertise, you come up with an initial estimate. This is the repair shop's original estimate of $18,000
当你正在对传统软件进行现代化改造时,你就进入了复杂软件的领域。当你从外部观察时,你会看到一些显而易见的东西,根据经验和专业知识,你会得出一个初步估算。这是维修店最初估算的 18,000 美元
As you are in the process, you start uncovering additional complexity. This complexity could be similar to some hidden damages the repair shop discovered after un-assembling the parts, or this could be significant frame damage that the repair shop discovered. What do you do? You need additional approvals to proceed at this point.
在这个过程中,你会发现更多的复杂性。这种复杂性可能类似于修理厂在拆卸部件后发现的一些隐藏损坏,也可能是修理厂发现的车架严重损坏。你该怎么办?此时您需要获得更多批准才能继续。
Good Leaders Ask the Right Questions
优秀领导者提出正确的问题
The right questions are asked if you are in a healthy software development environment when you bubble these problems up. How complex is this problem? What are the different ways of solving this? What are the tradeoffs? Are there workarounds or alternate solutions to this?
如果你处于一个健康的软件开发环境中,当你提出这些问题时,就会问到正确的问题。这个问题有多复杂?有哪些不同的解决方法?有哪些折衷方案?是否有变通方法或替代解决方案?
Suppose the questions start leading to how you did not see this complexity, how you missed this, why it is taking so long, and you are beholden to the original estimated dates? May the force be with you and your team to give you the strength to see this through. Hopefully, your modernization journey will be a short and successful one.
假设问题开始指向你如何没有看到这种复杂性,你如何错过了这一点,为什么要花这么长时间,而你却受制于最初的预计日期?愿上帝与你和你的团队同在,给你力量去完成这项工作。希望您的现代化之旅短暂而成功。
To Proceed or call it a Total Loss?
继续还是宣告全损?
I have been involved in both types of modernization projects. Cases where the supplemental cost gets approved, and work proceeds until the next step, rinse and repeat until the project has come to completion. I've also seen total loss, i.e. the project got canned because it was too expensive to proceed, and it would cost more than it was worth. It's not easy deciding this, and there are frameworks and decision workshops to try and choose the direction.
我参与过这两类现代化项目。有的项目补充费用获得批准,然后开始下一步工作,如此反复,直到项目完成。我也见过全盘失败的情况,即项目被取消,因为成本太高,无法继续进行,而且会得不偿失。做出这样的决定并不容易,有一些框架和决策研讨会可以尝试选择方向。
Is this a complex context or a complicated context?
这是一个复杂的背景,还是一个复杂的背景?
I urge you to read the excellent article from David J Snowden and Mary E Boone on, “A Leaders Framework for Decision Making”. Using the Cynefin framework, motorcycle maintenance or auto repair might fall under the complicated context. In order to fix the car, the expert technician, after having listened to how the collision happened, also has to analyze and test multiple factors, such as unseen damage, frame damage, etc., to determine the best course of action for the car.
我建议您阅读大卫-斯诺登(David J Snowden)和玛丽-布恩(Mary E Boone)撰写的出色文章, "领导者决策框架" 。使用 Cynefin 框架,摩托车保养或汽车修理可能属于复杂情境。为了修好汽车,专业技师在听取了碰撞发生的经过后,还需要对多种因素进行分析和测试,如看不见的损坏、车架损坏等,以确定汽车的最佳行动方案 。
However, in a complex context, you can only decide whether or not it is right or wrong in hindsight, i.e. after you've tried the thing. Does this jive more and more with complex legacy modernization software projects? I.e. you try something and learn that the integration you thought would work doesn’t work or you uncover a completely new behavior you never knew existed and you now have to account for it?
然而,在复杂的情况下,你只能在事后,也就是在你尝试过之后,才能决定它是对还是错。这是否与复杂的传统现代化软件项目越来越吻合?也就是说,你尝试了一些东西,然后发现你认为可行的整合并不奏效,或者你发现了一种你从来不知道的全新行为,而你现在必须对其进行解释?
There is no fixed path when modernizing a complex legacy system. There is no rulebook to follow. You try, experiment, discover, solve, and move on to the next piece until you're done.
在对复杂的遗留系统进行现代化改造时,没有固定的路径。没有规则可循。你需要尝试、实验、发现、解决,然后继续下一个环节,直到完成为止。
Denial - Anger - Bargaining - Depression - Acceptance??
否认--愤怒--讨价还价--抑郁--接受?
When modernizing applications, if we understand that this effort falls somewhere between Complex and Complicated Contexts, we can implement the right sort of gauges to see how to proceed and determine success. Applying the process of estimates for a complex context is wrong. It’s like trying to use a hammer as a solution for every screw or a lug nut! Sometimes you need a screwdriver and sometimes you need a wrench!
在对应用程序进行现代化改造时,如果我们知道这项工作介于 "复杂环境 "和 "复 杂环境 "之间,我们就可以采用正确的衡量标准来确定如何进行并确定成功与否。将估算过程应用于复杂环境是错误的。这就好比试图用锤子来解决每一个螺丝或螺母!有时你需要一把螺丝刀,有时你需要一把扳手!
Curveballs in modernization projects are just a reality. You can't foresee every outcome ahead of time. No amount of upfront analysis would lead you to a perfect data model. There will be new learnings almost every step of the way. Data Models will have to change based on the complexity you have uncovered. So it's a matter of when, not if, for curveballs. When a curveball hits and the estimate changes, take a step forward instead of getting angry or blaming folks or trying to do a what-if analysis on how best to bring the schedule in.
现代化项目中的 "曲线球 "只是一个现实。你不可能提前预知所有结果。再多的前期分析也无法为你带来完美的数据模型。几乎每一步都会有新的收获。数据模型必须根据您发现的复杂性进行更改。因此,对于 "曲线球 "来说,问题在于何时出现,而不是是否出现。当出现 "曲线球 "并导致估算发生变化时,要向前迈出一步,而不是生气或责怪他人,或试图对如何更好地实现进度进行假设分析。
When you’re dealing with curveballs, which Ron Westrum’s defined model of culture does your organization adopt? Power-Oriented where messengers who inform about the curveballs are shot and failure leads to scapegoated, Rule-Oriented where the messengers who inform about the curveballs are ignored and failure leads to justice or Performance- Oriented where the messengers who inform about the curveballs are trained and failure leads to enquiry?
当你面对曲线球时,你的组织会采用哪种Ron Westrum定义的文化模型 呢?是权力导向型,即通报曲球的信使会被枪毙,失败者会成为替罪羊;还是规则导向型,即通报曲球的信使会被忽视,失败者会被绳之以法;还是绩效导向型,即通报曲球的信使会受到培训,失败者会被询问?
As long as the problem you're trying to solve is still relevant and still meets the business needs, take it one step at a time. Ultimately the software you are trying to modernize is for users.
只要你要解决的问题仍然相关,仍然能满足业务需求,那就一步一步来。归根结底,您试图现代化的软件是为用户服务的。
Tip for Leaders Leading Modernization Initiatives
给领导现代化计划的领导者的提示
To quote from the same article, "Leaders who don't recognize that a complex domain requires a more experimental mode of management may become impatient when they don't seem to be achieving the results they were aiming for. They may also find it difficult to tolerate failure, an essential aspect of experimental understanding. If they try to overcontrol the organization, they will preempt the opportunity for informative patterns to emerge. Leaders who try to impose order in a complex context will fail. Still, those who set the stage, step back a bit, allow patterns to emerge, and determine which ones are desirable will succeed".
引用文章中的一段话:"如果领导者没有认识到,复杂的领域需要一种更具实验性的管理模式,那么当他们似乎没有取得预期结果时,他们就会变得不耐烦。他们还可能发现难以容忍失败,而失败是实验理解的一个重要方面。如果他们试图过度控制组织,就会扼杀信息模式出现的机会。试图在复杂环境中强加秩序的领导者也会失败。然而,那些能够搭建舞台、稍稍后退一步、允许模式出现并确定哪些模式是可取的领导者则会取得成功"。
A New Hope 新希望
Either way I will be ok, whether the repair company is able to fix my car or the insurance company deems it a total loss. The system works. I wish I could say the same for modernization projects and the awful industry practice about how much ceremony we attribute to estimates, completely forgetting that an estimate means an approximate of the actual. I hope more and more software companies and leadership use the proper framework for measuring success. I hope this leaves you with some ideas on implementing changes or at least questioning the practices if they seem wrong.
不管是修理公司能修好我的车,还是保险公司认为我的车全损,我都不会有事。这个系统是有效的。我希望我可以对现代化项目说同样的话,也希望我可以对我们将多少仪式归功于估算的可怕行业做法说同样的话,因为我们完全忘记了估算意味着实际的近似值。我希望越来越多的软件公司和领导层使用正确的框架来衡量成功与否。我希望这篇文章能为您提供一些实施变革的思路,或者至少对那些看似错误的做法提出质疑。
"I've wondered why it took us so long to catch on. We saw it, and yet we didn't see it. Or rather we were trained not to see it. Conned perhaps into thinking that the real action was metropolitan and all this was just boring hinterland. It was a puzzling thing. The truth knocks on the door and you say, "Go away. I'm looking for the truth." And so it goes away. Puzzling."
"我一直在想,为什么我们花了这么长时间才明白。我们看到了,却没有看到。或者说,我们被训练得看不到它。也许我们被蒙蔽了,以为真正的行动在大都市,而这一切只是无聊的腹地。这是一件令人费解的事情。真相来敲门,你却说 "走开"。我在寻找真相"然后它就走了令人费解"
― Robert Pirsig - 罗伯特-皮尔希格
I deeply regret to hear about your car accident. I am thankful that there were no personal injuries in this unfortunate incident.
听到您遭遇车祸,我深感遗憾。我很庆幸在这次不幸的事故中没有造成人员伤亡。
The Essence of Software Modernization
软件现代化的本质
Complex software modernization projects cannot be measured solely by budget compliance. Just as unexpected damage can be discovered during car repairs, software modernization processes may reveal complexities that were not initially apparent.
复杂的软件现代化项目不能仅以预算合规性来衡量。正如在汽车修理过程中可能会发现意想不到的损坏一样,软件现代化过程也可能会暴露出最初并不明显的复杂性。
Value-Centered Decision Making
以价值为中心的决策
The core of modernization projects lies in delivering tangible value to end users. While budget serves as an important indicator for project progress, it should not be the only consideration. Meeting actual user requirements, ensuring long-term system sustainability, and achieving business objectives are far more crucial.
现代化项目的核心在于为最终用户提供实实在在的价值。虽然预算是衡量项目进展的一个重要指标,但它不应是唯一的考虑因素。满足用户的实际需求、确保系统的长期可持续性以及实现业务目标更为重要。
The Significance of Leadership
领导力的意义
Effective leaders understand that complex modernization projects require an experimental approach. Rather than enforcing strict control, it's essential to create an environment where natural patterns can emerge. This is achieved through an iterative process of trying, learning, and adapting.
高效的领导者明白,复杂的现代化项目需要一种实验性的方法。与其实施严格的控制,不如创造一个能让自然模式出现的环境。这可以通过尝试、学习和调整的迭代过程来实现。
Leaders who recognize the complexity of modernization projects understand that success comes from allowing patterns to emerge naturally rather than imposing rigid control structures. They create an environment that encourages experimentation and learning, understanding that this approach leads to more sustainable and effective solutions.
认识到现代化项目复杂性的领导者明白,成功来自于让模式自然形成,而不是强加僵化的控制结构。他们创造一种鼓励实验和学习的环境,因为他们知道这种方法能带来更持久、更有效的解决方案。