敏捷开发系列文章目录html
敏捷开发在国内是否是只是一个理想化的工做环境?程序员
常常有人问,大家搞敏捷开发工做量是由开发人员本身估的,而不是由经验丰富的技术主管估的,他们本身确定会把工做量估得很是大,那何时项目才作得完?大家天天开那么多会,怎么不把时间放在好好写代码上面?一个迭代这么短的时间既要作设计、又要编码、还要测试,这么急着作出的东西质量确定不高。系统设计确定得经验丰富的老手作更靠谱。每当我听到有人说这些问题,我就知道他确定没有真正的认识敏捷开发,若是真的有实践过,天然就会发现这些问题根本就不是问题,只是杞人忧天而已。编程
敏捷开发也快搞了快一年了,以为应该把这一过程当中的理解与经验得好好总结一下写下来,还有就是又有一个新团队由传统方法正在向敏捷转型,因此这些经验也能够帮助你们学习一下。框架
采用敏捷最直接的结果就是,开发产品的效率确实提高了好多倍对比传统模式,为何这么说,咱们团队10我的花了8个月时间开发完成一个系统并完成上线使用,而这个系统在一个朋友公司也有在开发,他们早一点开始,20-30我的花了2年多的时间尚未彻底搞出来,固然他们用的是传统的开发方式。学习
传统开发方式之前工做多年也都是采用它,当初也没以为它哪里很差,反正你们都这么作的,有问题也以为正常,你以为他是瀑布模式又不像,我以为应该就是做坊模式吧,一直待得也是这种不大的小公司,确实比较像东莞那边的小厂子小做坊,不像大公司那样有太多的制度和流程,目标就是把当前的项目作好作完。中间也在外包工做作过几个月,很是不适用,第一感受就是太不自由了,连网都不能上就是按照文档码代码就好了,并且要码得一丝不苟,当初就以为这种开发模式确定不适合国内的软件公司的。测试
什么机会接触到敏捷了,就是去年去了新公司,上市公司,自己是不作软件的,准备从设备生成转到行业服务,须要更多的借助互联网、IT数据,因此新成立的团队来作,原本就是从零开始嘛,没有历史包袱,并且上市公司又多金认识高国际化,因此直接把国外敏捷开发的理念引进过来,就请了有名咨询公司帮助团队创建起敏捷开发,因此就有幸开始接触了最早进与最原滋原味的Scrum,为何说是原滋原味,由于后来也接触了一些国内其它的敏捷咨询团队,好多都是根据国内状况本地化了,因此不是原滋原味了,好比改良后的敏捷没有了估点的过程,而是直接按工时进行估算。编码
刚开始接触敏捷时候就以为这种方式不靠谱,由于太理想化,好比说老板接了一个项目规定在固定时间必须完成,否则这个项目确定就没戏,按照项目的工做量的话在正常状况下确定是完不成的,按照传统的方式就是老板动员你们在这段时间你们拼一拼,多加加班仍是有可能完成的,固然也有多是完不成的,那就得继续加班到完成为止。而按照敏捷的方式就不是这样处理了,按照团队的速率估算结果完不成,那就得必须告诉老板,要么增长迭代周期,要么减小功能,由于给我这么多量,但个人饭量就只有这么大,那么开始以前就必定得说清楚,并且只能这么作,不能加班,由于长期加班会破坏团队的习惯。因此在当时想来哪一个老板会跟你讨价还价,直接就压下来了,这真的是一种理想方法而已,在团队中是行不通的。spa
本身也是一直都有参与一线编码的工做,我一直认为开发程序是一种脑力智慧,应该是一种颇有乐趣的事情,并且刚开始也是体会过这种乐趣,后来工做久了深陷一个又一个的坑中,爬都爬不出来哪来的乐趣可言,程序员变成了码农。后来尝试敏捷后,就是它会营造一种环境,让你又从新回到以前对于编程的那种乐趣。因此敏捷与传统最大的区别就是工做时的环境彻底不同,传统是让你忍过了一个煎熬,接着又要迎接下一个煎熬,而敏捷就是让你感觉到编程的乐趣,回归到让你用编程智慧来解决问题,而不是头痛各类项目带来的坑。设计
说道编程乐趣得好好说一下,从毕业实习出来到公司上班,一直从事医疗软件开发至今已经10来年了,因此除了这份工做可以养家糊口以外,本身对于编程也是出于热爱,否则也坚持不到如今。这么多年来,半路转行的同窗同事大把。刚从学校出来就立刻投入一线编码,让本身开发的功能客户立刻就能用到是很兴奋的事情,本身编写的代码可以卖钱,系统商业化,以为本身太牛逼了。可以加入公司一开始就能参与核心功能的开发也是进入公司的时机巧,咱们一块儿8个同事入职是因为公司遇到分拆的危机,虽然公司只有几十我的,可是技术老总带着一批骨干跑出去单干了,致使公司一会儿空缺一批开发人员,而后就把咱们招了进来,进来后就每人分配一个子系统,半个月来熟悉系统,而后去医院支持上线,记得当初接触第一子系统就是门诊医生站。那时候的人仍是单纯些,咱们8个新入职的同事一块儿研究代码、讨论代码、修改代码,基本那段时间都是很晚才回家,可是没有以为很辛苦或不值得。由于你们都是新来的,因此没有什么新老员工的隔阂,交流起来没什么顾虑,玩玩一些问题能够讨论半天,本身弄懂了一个什么控件、什么功能立刻分享给你们,因此在很短期内你们的进步都很快。如今招聘一个新人培养半年都不必定可以承担起系统,可是不到一个月的时间各自都能镇守一方。有时候想一想到底什么缘由,是如今的小朋友太笨?确定不是,人家比咱们当前可灵泛多了。我以为一是乐趣主导那种学习环境,再就是恰好遇到大量老员工出走的情形。如今的新人来到公司,确实感受不到一点编程的乐趣,没有学习的乐趣那么他进步慢那就必然了。为何环境会变成这样,就是由于原来的老人们以为本身走来遇到的问题太多,而后就制定一堆制度来解决这些问题,慢慢的这些制度原来越多就造成了一种呆板坏境,而失去原来本该有的乐趣。好比如今新人进来通常都不会直接把新功能分配给他,由于没有经验担忧写的代码不行,到时候仍是得重写。甚至碰到极端公司,把开发任务像工厂流水线作鞋同样,拆分红不少个部分,而后让新手对着填空,并且每一个任务都精确到小时,这样按小时来核算你的工做量,月底工资绩效跟这个工做量挂钩,你说你在这种环境下工做还有什么乐趣而言。而站在公司的角度确实控制了项目风险、控制了人力成本,但这家公司也就变得没有创意、没有冲劲,也不可能作得更大。后来加入的全部公司基本上都走入了这个怪圈,直到尝试了敏捷开发一段时间后,才感受到你们才有了一些编程的乐趣。敏捷这种思想不是一会儿就改变了你认识,而是慢慢的慢慢的改变了你的习惯,让你冲破以前的枷锁,一点一滴的体会到编程的真正乐趣,从而让团队进入一种状态、创建一种默契。说得确实有点玄,作到确实也不容易,并且个人这条路径也不必定适合你,因此我就只是把个人故事讲出来,做为一个引线让你思考,从而找到你本身的方法。htm
说到公司对待新人的方式,传统团队和敏捷团队确实有很大的差异,传统模式为了让新人更快的上手,通常会给新人安排一个师傅带着,让师傅给新人制定学习计划指导人家,因为师傅手上原本就有作不完的工做,通常头个把月都是丢一堆文档代码让新人看,而后试着给他安排几个简单的功能作作,最后发现新人作出来的东西不行,还得本身从新修改一遍,师傅就以为带人太麻烦了没有帮到本身的忙,反而占用本身更多的时间,因此就搞得老人通常都不太愿意带新人,就算公司出政策给带新人的师傅额外的补贴,但这种方式也是解决不了根本问题,新人的学习周期仍是很长,基本上一年半载都难独立承担开发任务。而敏捷团队不会这样,没有师傅徒弟,也不讲究新人老人,你们在团队中都是平等的,新人刚加入团队就会跟你们一块儿进入迭代开发,根本没有说先熟悉一段时间,只是说在领用故事的时候,新人只算一半的点数用来下降这个迭代失败的风险。这样新人一进来就有开发任务,一会儿就进入一个主动学习的状态,会主动向团队成员的学习,团队成员也会主动帮助他,由于他完不成,那就是整个团队的迭代失败,由于敏捷只考核团队不会针对我的进行考核。这样新人在这种环境下,通常通过2,3个迭代就会成长起来,适用团队的开发节奏,若是3个迭代尚未适用的话,那就是这我的可能不适合这个团队。还有一个问题就是怎样保证新人开发的功能不会出现质量问题,致使返工,好比新人不熟悉业务功能设计考虑不够周全,不太熟悉开发框架代码编写不够规范等,这些问题都会影响产品的质量,而敏捷开发最重要的目标就是保证产品质量,因此这些问题在敏捷过程当中都有对应的解决办法,好比设计问题会有设计评审,代码问题有代码评审,团队里的成员会在这些环节里帮助你把关,总之你在团队产生的东西都不是一我的的东西,都是整个团队的东西,人人都会关心。