热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

从精益软件到精益思想

说起精益软件开发,这绝对算是一个老生常谈的话题了。所以在这里,我不想去谈论诸如“精益软件开发的几大原则”或是“精益软件开发的最佳实践”等陈词滥调;只是最近在同事的推荐下,拜读了一本有关IT

说起精益软件开发,这绝对算是一个老生常谈的话题了。所以在这里,我不想去谈论诸如“精益软件开发的几大原则”或是“精益软件开发的最佳实践”等陈词滥调;只是最近在同事的推荐下,拜读了一本有关IT运维方面的书籍(《凤凰项目》)。书中的故事十分有趣,同时又引人深思,细细品味后颇有感悟,对工作和生活上有了许多新的想法,于是便按耐不住写下此文。

Lean Thinking

写在前面

布伦特是一个有着十年以上开发及运维经验的高级工程师,无论是服务器宕机,发布失败还是线上出现bug等紧急情况,他总是第一时间着手处理,虽然有时并不按照公司的正常流程去提交变更申请,但他总能在大家一筹莫展时漂亮的完成任务。于是整个IT部门的领导和同事都非常的喜欢他,甚至其它和IT相关的部门有需要帮助时,也很愿意找他,布伦特也照样能够快速并且出色的完成。直到有一天,问题堆积的越来越多,布伦特终于忙不过来了,而除了他,在没有其他同事知道问题的来龙去脉,导致许多一级紧急事故无法及时处理,从而让公司损失惨重。这时,大家的态度骤变,都将矛头指向他,认为他没有尽力,并且开始抱怨他总是不按公司流程处理问题从而引发了许多其他问题。老板也不在赏识他,甚至觉得应该在他身边安排几个同事去取代他,而后辞退他。

什么是制约点

开篇的故事来源于《凤凰项目》,其实不难看出,故事中的布伦特对于整个IT部门来说极其重要,由于他掌握了大多数人所没有的资源,技术以及处理问题的上下文,并且没有及时与他人分享,从而让自己成为了问题的核心,事故的焦点以及部门的制约点。

而事实上,布伦特就是布伦特,他一直都在出色的完成任务,他一直都独享着所有一切的上下文,是“一直”让他变得无法取代,也是“一直”让他成为了那个制约点。

制约点总是那么的让人琢磨不定:一开始,它必定是一个舒适点,大多数人并不会在意它,因为总有那些或那个人去悄悄的关注它;慢慢地,你也许很需要它,你才发现束手无策,不得不求助于你身边那些悄悄的人,它又变成了一个痛点;最后,你还是在舒适点和痛点之间选择了前者,随着时间的沉淀,它终于成为了一个制约点。

寻找制约点

忘记是什么时候,耳边听到了一句“其实一切的一切,只是我们(devs)做的不够快,不够好”,此话虽然有些极端,但细细想来,似乎也颇具有几分道理。

但我觉得这不仅是一个个人问题,同时也涉及到了一个团队的运作方式。所以我也时常在想: 如果你是一名身处Agile Team,并且保持求知欲,富有激情,喜欢激辩的dev,那么怎样才能把交付做的又快又好呢?

问题的答案肯定不是诸如“多看书,多学习”等唐塞之言,因为我相信一个能问出如此问题的dev,并且“保持求知欲,富有激情,喜欢激辩”,那么他一定遇到了自身难以察觉的制约点。

所以,不妨从发现身边的痛点开始,学着在组内寻找自己的制约点吧。

解决制约点

如果将制约点看做是一个树根的话,那么起初它只是一个点,而后慢慢成长,具有枝干,渐渐的新的枝干上又有了其他的分枝,直到枝繁叶茂时,你才发现无法从根部去找寻任意一片叶子的路径,因为,它的层级已经太深。

因此解决它的最好办法就是将层级扁平化:当你发现并且解决了一个只有你知道的问题时,不要让自己成为那个制约点,学着share出去;当你发现在你所处的团队里有你的知识盲区时,不要让它成为你的制约点,主动求助,消除盲区;当你发现组内有共同的痛点时,及时的提醒,集思广益,避免它成为大家的制约点。

寻找下一个制约点

但我并不认为有制约点的存在就是坏事:人与人本身在能力偏好方便面就有差距,这就决定了每个人的知识体系大相径庭,所谓“术业有专攻,技术有偏好”是也。所以,制约点某种程度上代表着你的一个目标或者方向,解决制约点的过程就是拉平它对你的制约层级,弥补自身的不足,这就是进步。所以没有制约点就是原地踏步,为了更进一步,就得寻找下一个制约点。

因此,解决完“所有”(也许你认为的所有)的制约点并不意味着万事大吉,你应该继续寻找下一个制约点。

写在最后

受“精益软件开发”所启发,个人觉得所谓的精益思想,XP(极限编程思想),Agile(敏捷思想)都只是一种方法论,甚至可以说由它们衍生出的所谓的最佳实践也都是方法论。毕竟,具体到每一公司,每一个项目,每一个团队,这些准则都不可能完全匹配和适用,但若以此作为思想参考,就会不仅在工作中,而且在生活中感受到它的导向价值作用,从而事半功倍。

原文请戳


推荐阅读
  • 2023年最佳PHP开发学习路径推荐
    本文详细探讨了针对不同背景的学习者如何选择最适合自己的PHP开发学习资源,包括书籍、在线课程及培训机构的推荐。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • APM(Application Performance Management,应用性能管理)对于提供互联网服务的企业至关重要。本文将深入探讨APM如何帮助识别和解决导致用户流失的技术问题,以及它在提升整体用户体验方面的作用。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 热璞数据库与云宏达成兼容性互认证,共筑数据安全屏障
    热璞数据库与云宏信息技术有限公司近期宣布完成产品兼容性互认证,旨在提升数据安全性与稳定性,支持企业数字化转型。 ... [详细]
author-avatar
飞天兔g_653
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有