恶魔:“软件技术的变化如此之快,势不可挡,这是它的本性。继续用你熟悉的语言作你的老本行吧,你不可能跟上技术变化的脚步。”编程
你不须要一口气爬上10楼,而须要一直在攀登,因此最后看起来就像只要再上一二层。若是你对全部这些技术都一无所知,想要立刻登上这10楼,确定会让你喘不过气来。并且,这也会花很长时间,期间还会有更新的技术出现。框架
现今有不少方法和工具能够帮助咱们继续充电:工具
天使:“跟踪技术变化。你不须要精通全部技术,但须要清楚知道行业的动向,从而规划你的项目和职业生涯。”单元测试
恶魔:“不要和别人分享你的知识——本身留着。你说由于这些知识而成为团队中的佼佼者,只要本身聪明就能够了,不用管其余失败者。”学习
团队中的开发者们各有不一样的能力、经验和技术。每一个人都各有所长。不一样才能和北京的人混在一块儿,是一个很是理想的学习环境。开发工具
在一个团队中,若是知识你我的技术很好还远远不够。若是其余团队成员的知识不够,团队也没法发挥其应有的做用:一个学习型的团队才是较好的团队。测试
当开发项目的时候,你须要使用一些术语或者隐喻来清晰地传达 设计的概念和意图。若是团队中的大部分红员不熟悉这些,就很难进行高效的工做。再好比你参加了一个课程或者研讨班以后,所学的知识若是不用,每每就会忘记。因此,你须要和其余团队成员分享所学的知识,把这些知识引入团队中。网站
找出你或团队中的高手擅长的领域,帮助其余的团队成员在这些方面迎头遇上(这样作还有一个好处是,能够讨论如何将这些东西应用于本身的项目中)。插件
“午饭会议”是在团队中分享知识很是好的方式。在一周之中挑选一天,事先计划午饭时汇集在一块儿,这样就不会担忧和其余会议冲突,也不须要特别的申请。为了下降成本,就让你们自带午饭。设计
每周,要求团队中的一我的主持讲座。他会给你们介绍一些概念,演示工具,或者作团队感兴趣的任何一件事情。你能够挑一本书,给你们说书哦其中一些特别内容、项目或者实践。不管什么主题均可以。
从每周主持讲座的人开始,先让他讲15分钟,而后,进行开放式讨论,这样每一个人均可以发表本身的意见,讨论这个主题对于项目的意义。讨论应该包括所能带来的益处,提供来自本身应用程序的示例,并准备好听取进一步的信息。
这些午饭会议很是有用。它促进了各镇团队对这个行业的了解,你本身也能够从其余人身上学到不少东西。优秀的管理者会重用那些能提升其余团队成员价值的人,所以这些活动也直接有助于你的职业生涯。
天使:“提供你和团队学习的更好平台。经过午饭会议能够增进每一个人的知识和技能,并帮助你们汇集在一块儿进行沟通交流。唤起人们对技术和技巧的激情,将会对项目大有裨益。”
恶魔:“那就是你一向的工做方法,而且是有缘由的。这个方法也很好的为你所用。开始你就掌握了这个方法,很明显它是最好的方法。真的,从那之后就不要再改变了。”
随着科技进步,曾经很是有用的东西每每会靠边站。它们再也不有用了,它们还会下降你的效率。对于大多数的商业应用,技术已经有了巨大的变化,再也不像过去那样,到处考虑内存占用、手动的重复占位及手工调整汇编语言。
Expensive mental models aren't discarded lightly
丢弃已经会的东西并不容易,不少团队在犹豫。在学习一门新技术的时候,多问问本身,是否把太多旧的态度和方法用在了新技术上。打破旧习惯很难,更难的是本身尚未意识到这个问题。
这也不是说你真的要彻底丢弃它们。其实,根据具体状况还能够运用旧知识。
应该力求尽量彻底转入新的开发环境。例如,学习一门新的编程语音时,应使用推荐的集成开发环境,而不是你过去开发时用的工具插件。用这个工具编写一个和过去彻底不一样类型的项目。转换的时候,彻底不要使用过去的语言开发工具。只有更少被旧习惯牵绊,才更容易养成新习惯。
天使:“学习新的东西,丢弃旧的东西。在学习一门新技术的时候,要丢弃会阻止你前进的旧习惯。”
恶魔:“接受别人给你的解释。别人告诉你问题出在了什么地方,你就去看什么地方。不须要再浪费时间去追根究底。”
前面谈到的一些习惯是关于如何提升你和团队的技术的。下面有一个习惯几乎老是有用,能够用于设计、调试以及理解需求。
假设,应用系统出了大问题,它们找你来修复它。但你不熟悉这个应用系统,因此他们会帮助你,告诉你问题必定是出在哪一个特殊的模块中——你能够放心地忽略应用系统的其余地方。你必须很快的解决这个问题,由于跟你合做的这些人耐心也颇有限。
当你受到那些压力的时候,也须要会以为受到了胁迫,不想去深刻了解问题,并且别人告诉你的已经够深刻了。然而,为了解决问题,你须要很好的了解系统的全局。你须要查看全部你认为和问题相关的部分——即便其余人以为这并不相干。为了解决问题,你须要知道许多可能的影响因素。当找人询问任何相关的问题时,让他们耐心的回答你的问题,这是你的职责。
或者,假设你和资深的开发者一块儿工做。它们可能比你更了解这个系统。但他们也是人,有时他们也会忘记一些东西。你的问题甚至会帮助他们理清思路。你从一个新人角度提出的问题,给他们提供了一个新的视角,也许就帮助他们解决了一只使人困扰的问题。
“为何”时一个很是好的问题。事实上,在一本流行的管理图书《第五项修炼》中,做者建议,在理解一个问题的时候,须要渐次地问5个以上的“为何”。它是很好的方式,进一步挖掘简单直白的答案,经过这个路线,设想就会更加接近事实真相。
真的吗?为何呀?
为何呀?
天使:“不停地问为何。不能只知足于别人告诉你的表面现象。要不停地提问直到你明白问题的根源。”
恶魔:“咱们很长时间没有进行代码复审,因此这周会复审全部的代码。此外,咱们也要作一个发布计划了,那就从星期二开始,用3周时间,作下一个发布计划。”
在许多不成功的项目中,基本上都是随意安排工做计划,没有任何的规律。那样的随机安排很难处理。你根本不知道明天将会发生什么,也不知道什么开始下一轮的全体“消防演习”。
可是敏捷项目会有一个节奏和循环,让开发更加轻松。例如约定30天以内不该发生需求变化,这样确保团队有一个良性的开发节奏。这有助于防止一次计划太多的工做和一些过大的需求变动。
咱们先来看某个工做日的状况。你但愿天天工做结束的时候,都能完成本身的工做,你手上没有遗留下任何重要的任务。固然,天天都能这样说不现实的。但你能够作到天天下班离开公司前运行测试,并提交一天完成的代码。若是已经很晚了,而且你只是尝试性地编写了一些代码,那么也许最好应该删掉这些代码,次日从头开始。这个建议听起来十分极端,但若是你正在开发小块的任务,这种方式很是有助于你管理本身的时间:若是你工做的时候没有一个固定的最终期限,就应该好好想一想了。
敏捷开发者能够从多方面获得反馈:用户、团队成员和测试代码。但时间自己就是一个很是重要的反馈。
你可能不知道完成全部的任务须要多少个迭代,但每一个迭代必须是短时间的、有限的,而且要完成具体的目标。
迭代的时间是固定的,但在一个具体的迭代中完成哪些功能是灵活的。类似地,你会为设计讨论会设定时间期限,会议结束必需要作出最终的设计决策。
当你遇到艰难抉择的时候,固定的时间期限会促使你作决定。你不能在讨论或功能上浪费不少时间,这些时间能够用于具体的工做。
站立会议最好天天在固定的时间和地点举行,好比上午9点左右。要养成这样的习惯,在那时就准备好一切参加站立会议。
最大的节拍就是迭代时间,通常是1~4周的时间。无论你的一个迭代是多长,都应该坚持——确保每一个迭代周期的时间相同很重要。运行有规律的开发节奏,会更容易达到目标,并确保项目不停地前进。
天使:“解决任务,在事情变得一团糟以前。保持事件之间稳定重复的间隔,更容易解决常见的重复任务。”