敏捷开发让他成为行业第一
这是一个敏捷开发助力传统企业成功实现业务升级和转型的案例,有典型行为,有难点、痛点及解决方案,还有经验总结,无论你是在寻找敏捷开发的服务团队,还是搜罗敏捷开发的实践经验,都能有启发。如果你暂时没时间看,可以先收藏,或者刷到文末花3分钟浏览一下新华社的专题视频报道。
老唐是一家水产养殖技术服务公司的老总,有想法,也很有魄力。他在2015年年初找到我们,说要做一个智慧养殖平台,实现智能化养殖。这是我们第一次接触水产行业的客户,当时完全没有任何相关经验和概念,而老唐第一次给我们的需求文档是他自己写的,只有两页A4纸,基本上只是个业务层面的需求纲要。
做软件工程师十几年了,这种一上来就要“开荒”的情况对我来说并不陌生。很多客户最初对自己的需求都不太明确,只有一个想象中的轮廓而已。老唐还算好的,他对自己这个产品要做成什么样子,总体的方向是很清晰的。为了进一步明确需求,我们请他来公司当面沟通,一起分析细化需求方案。
老唐不愧是水产养殖业的专家,跟他学习水产养殖的知识并不太难,经过沟通,很快我们就了解了他的业务需求和做这个项目的目的。
智能养殖平台蓝图
原来对水产养殖来说,水质是一个非常关键的条件,养殖过程中水产品的死亡率和水质直接相关,水质不好,不但养出来的水产品不好吃,而且还很容易生病或死亡,一旦水产品大量死亡,养殖户就血本无归了。因此,水产养殖一直属于高风险行业,国内的水产养殖户有相当多都是亏损的,特别是一些养殖大户,一个鱼塘有几十亩、上百亩,一旦出问题,即便不倾家荡产也会元气大伤。
而老唐的公司就是为养殖户提供技术咨询服务的。以往他们的服务都是靠技术员的经验提供现场咨询。比如一个县安排几个技术人员,接到需求随时赶去现场。但这样技术员的大部分时间和精力都花在了路上,一天跑不了几个地方。而且当技术员赶到现场时,往往又发生了新的状况,解决问题不及时,还很被动。随着业务范围和业务量的增长,他们的工作效率和即时性越来越“捉襟见肘”了。
同时,仅靠人的经验,服务的精确性也不高。比如说水质测量有个关键指标叫溶氧量,指的是水中氧气的溶解量,是生物在水中生存的重要指标之一。溶氧量的含量随着水温、大气压力及水之盐度而异。这个指标光靠人眼是看不出来的,没有办法直接判断。当看到有鱼死了,才发现问题,那已经晚了。
远程监测水质、在线提供咨询服务还只是老唐想通过智慧养殖平台实现的功能之二,他希望这个系统能够做到:只要用手机登录APP,养殖区水温、盐度、溶氧量和PH值等参数指标就能一目了然;一旦出现问题,系统可通过智能手机自动报警;通过系统收集的水质数据库,他们可以通过云计算对数据进行深入分析,及时向客户预警……
两篮鸡蛋合而为一
整个需求沟通的过程,实际上是在持续中进行的。在了解了需求的目的和意图之后,我们对于这个需求该怎么实现,即具体的技术方案,还是有不少疑问,感觉有些环节可能存在风险。其中,最大的风险在于要跟硬件通信集成。
老唐在找我们之前,就已经开始了硬件系统的开发,是责成另一家公司做的,我们当时并不知道硬件做到什么程度,老唐本身也不懂技术,所以他也很难说清楚。但有一点他很明确,就是软硬件最后肯定要结合在一起。我猜测他当初是不愿意把所有的开发工作都给一个公司去做。
尽管我们知道与硬件集成是这个项目最大的风险所在,但也是项目成败的关键,因此,我们向老唐说明了利弊,强调软件、硬件的集成需要开发双方的密切配合,最后他把硬件供应商介绍给我们,由我们跟硬件供应商在技术方面进行具体的沟通。
开始,我们跟硬件供应商之间,果然出现了一些合作的障碍。现在回想起来,其实就是磨合期,也正常。我们当时始终秉承一个态度,就是对客户负责,解决问题。不去纠结某项工作到底是谁的责任,出了问题该归谁解决……我们只是尽可能努力把自己的事情做好,从客户利益出发,从系统调试效果最佳的角度出发。实际上我们帮助硬件供应商解决了很多问题。
这里简单解释一下为什么说软硬件联合调试是项目中最大的难点,因为修改通信协议,让这个通信协议稳定下来,在软件、硬件之间能走通,并且要准确,还能应对所有可能的变数(天气、环境、人为因素等),必须要软硬件的联合反复调试,这很费时间。无论哪边的设计修改,另一边也要相应地修改。
软件硬件之间的通信协议,通俗地讲主要就是一条一条的指令,比如软件服务器发一条指令给硬件,硬件设备那边要回应一个什么消息,整个通信协议,就是由好多这样的请求响应构成的。软件硬件的联合调试,主要就是调试这些指令的正常运行。
如果从用户的角度理解,举个例子,用户通过手机APP向服务器发了一个读取数据的指令,硬件系统就会把当时的水质数据传回来,这个系统读取数据的频率是比较高的,大概是几分钟一次,几乎是实时的数据,所以每隔几分钟在APP上就可以看到池塘里每个监测点的水质数据,这是最基本的一个功能,就像是人的眼睛。
老唐他们这个系统的软硬件通信协议,原来是硬件供应商设计的。经过长达四、五个月的联合调试,我们这边的软件开发人员给硬件供应商提出了很多建议,最后这个通信协议非常完善。虽然双方都很辛苦,但结果很令人满意,后期的合作也越来越顺利。
硬件软件要结合起来,能够跑通是老唐最最关心的问题,当看到我们团队确实解决了这一问题后,他心里边儿最大的石头就落地了,他变得很放心,很信任我们的团队。后来他告诉我,其实研发这套系统他们公司内部的意见并不统一,董事会中也有异议,因为投入很大,又涉及到业务转型的成败,是他力排众议,顶着所有风险坚决执行的。与我们的合作让他少白了几根头发。
共同学习 共同成长
软硬件系统调通了,接下来是数据分析。有时候系统取回来的数据,会显得很奇怪,我们就要分析为什么?是硬件的问题还是软件的问题?还是通信协议的问题?是环境的影响还是人为的影响?我们不但要取回数据,而且要能解释这些数据,确信这些数据是正确的,这样我们才能根据这些数据做出判断。
最终我们的APP能够显示每个监测点的实时数据曲线,每个用户都可以看到监测点的数值变化规律,比如说,白天是什么情况,随着气温升高是什么情况,夜间是什么情况,曲线上反映得很清楚。
记得有一次老唐跟我讲了一个故事:说他们发现个别监测点的溶氧值,每次的差别都特别大,他们当时怀疑是硬件或者是哪出问题了,后来经过反复试验,发现这就是实际情况,在特定的条件下就会出现这样的数值。
所以通过这套系统,老唐的团队不仅能够更加清晰、正确地为客户解释这些数据,还对各地的水质变化规律有了更深入的认识。基于此,他们可以为客户提供更加精准有效的服务和解决方案。老唐说这是科技带给我们的新认知。
客户的客户更满意
实时监测到数据是智能化的前提。我们开发的这套水产养殖智能系统在最终客户端部署后,实现了很多“锦上添花”的功能。
老唐给我们讲了一个例子:用户可以在APP上设定溶氧量达到什么程度就要启动或关闭增氧机。这样就实现了精准的增氧,避免了浪费。别小看这个功能,对于特别大的鱼塘,增氧机的耗电量是非常惊人的。以前为了保证鱼塘不缺氧,就要始终开着增氧机,电费居高不下。现在,通过实现智能化的养殖,耗电量大幅改善,节省了很多成本,而且养殖户再也不用提心吊胆了。以此类推,系统的智能化对于其他设备也是一样的。
所以智能化养殖的价值不只是提高了技术人员的服务效率,而且节省了很多能源和费用,从而真正实现了精细养殖。
不仅如此,我们这个APP还有很多管理功能:如计划管理、库存管理,收入成本利润管理等等。这些功能是提供给养殖户的,而给他们使用这个APP又为老唐他们提供了水质等大数据,由此能够开发的价值潜力还很大,不是我们现在能够一言以蔽之的。
一鼓作气,老唐他们还结合这个系统开发了电商平台,跟APP有集成,还做了PC端,他们的客服人员可以通过后台看到他所负责的每个客户的鱼塘的实时情况,如果发现异常可以及时预警。
一言以蔽之,老唐最大的收获是通过这个智能系统的开发实现了公司完全的业务升级和转型,从以前的服务于传统行业,一步升级为通过APP移动物联网大数据卖服务。
这一转变可以说是一次革命,全新的业务模式得到了客户的普遍认可,老唐说这是对整个行业的颠覆,我们能参与其中感觉很幸运。如今老唐他们公司自己的简介中是这样写的:
全系统实现了移动互联网技术、无线传感器网络技术、多模无线通讯技术等多项高新技术的融合,可监测PH值、DO溶解氧、温度、COD、氨氮、总磷、氧化还原电位等多项参数,并基于数据库和云计算对数据深入分析,为客户提供精准解决方案。
基于物联网水环境远程监测系统、专门为水产行业开发的智慧渔业系统为水产行业从传统低效益的养殖模式转型为自动化、智能化、信息化的高效益养殖模式提供了坚实的基础,必将推动水产行业的第二次革命。
截至2016年初,我们的用户范围已涵盖了华中和华南主要养殖区域,并受到了客户的持续认可。未来三年内,我们的目标是争取在2018年完成华中、华东、华南等地区共计十万个优质用户的覆盖,并逐步实现整个公司在水产行业搭建平台化企业的长远战略。
现在他们公司论综合竞争力在行业排前三位,论技术是第一名。
我的“敏捷”总结
这个项目的成功,也让我自己获益良多,除了为公司增加了收入,赢得了声誉(引来了新华社的报道),更重要的是增长了我们团队敏捷开发的实践经验,证明了敏捷理念在现在以及未来软件定制服务中绝对的优势和潜力。以下是我们内部的总结,分享给大家。
第一,与客户良好的沟通与配合。
这就是敏捷价值观里讲的客户合作胜于合同谈判。老唐对我们团队选择了信任,没有跟我们在合同条款上非常纠结,而且作为老板,他有足够的魄力和决策权,这对于推进项目很有好处。
当然客户的信任,也是我们团队成员共同努力的结果。老唐虽然是水产养殖专家,但他一点也不懂IT技术。这很典型,我们遇到过很多客户也是对IT一无所知,在项目过程中,他们会不断地咨询我们一些细节开发的可行性,事无巨细都会问,我们一一耐心地告诉他什么可以什么不可以,让他很放心。
第二,采取风险驱动的方式。
我们把项目需求按价值高低排列出来,并评估出相应的风险,据此排定工作优先级,建议客户按照这个排序来安排项目进度,客户认可了。我们这样做实际上就是在为客户实现价值最大化——投入同样多的时间、同样多的资源,产出最大的价值。
第三,按照迭代的方式开发。
这也是敏捷开发的共同点。每个迭代都实现一些功能,每个迭代都给客户演示,每个迭代我们都要回顾这个迭代做得怎么样,下个迭代怎样改进,计划是不是需要调整,需求的优先级需要不需要调整,人员是不是需要调整,工具和流程是不是需要调整……这个项目前期的时间比较长,因为要协调的工作和人手比较多,后来基本上一周一个迭代。
第四,团队的调优。
这大概算是整个项目过程第二大挑战了。作为项目负责人,我有很深刻的感触。我们这个项目团队前后一共11个人,中间发现有的人不太适合,调换过。最多的时候分散在四、五个地方的人要异地协同办公,无论是技术还是管理协作上的挑战都比较大,所以刚开始的时候遇到一些困难,大家互不相识,之前没有共过事,需要从头磨合。
尽管我之前带过16人的团队,但都是集中办公的,这个项目我花了大量的时间和心力去让大家形成一个团队,缺什么我补什么。这里边儿有很多不可控的因素,我必须时刻“拥抱变化”,随机应变。慢慢地,项目流程逐渐理顺,大家的配合越来越顺畅。
第五,一定要实现持续的部署。
这意味着系统要让最终用户尽早应用,一旦最终用户应用了,我们就可以收集到最真实的反馈,就实现了从终端用户到研发的一个完整的循环。产品的优化路径就彻底打通了。
从2015年年初开始合作,2015年5月系统在老唐公司自己的渔场内测,8月向最终客户部署,之后持续地优化,很多功能逐步完善,直到2017年年初大规模优化完成,7月完全交付给老唐公司自己运营。在整个过程中,持续部署功不可没。
第六,人的因素也非常关键。敏捷的项目需要“敏捷”的人:
- 每个人都能担负自己的那部分责任。
- 能够跟其他人积极配合。
- 如果团队成员能够站在项目全局去考虑问题,更好。
- 如果团队成员能够站在客户角度去考虑问题,更好。
- 团队成员要有强烈的质量意识,不断优化自己的工作。
- 少一些指责,多一些反省。
第七,客户导向的价值观。
“己欲立而立人,己欲达而达人”这是我们公司的价值观,我个人对此深信不疑。无论是团队调优、风险驱动,还是不计得失与硬件商沟通协同,一切只对客户负责,时刻追求客户利益最大化,要成就自己,就必须成就客户。因为客户追求的是价值,我们追求的也是价值,客户的客户追求的也是价值。
第八,分公司的配合。
在我们项目需要调整人员、调整计划的时候分公司给予了积极的配合,这是项目成功非常重要的因素,特别是像这种分布式团队的项目,这时候企业文化就起作用了。
第九,敏捷高效不加班。
我们公司做软件外包十多年了,但我们从不提倡加班。以这个项目为例,尽管是多人异地协同办公,还要不断与客户、硬件商协调,但我们加班的时候很少,只有过几个星期的倒休,当时是为了客户要缩短第一次发布的周期。
其实在这个项目完成之后,我还经常能从中汲取“养分”,用于我当前的工作。要全部总结出来那真要“加班”了。总之,这个项目让我积累了敏捷实践的经验,也增长了我的信心,我认为敏捷开发是实现客户价值最有效的途径,也是实现我们自身价值最有效的途径。
来源:敏捷之美 ∣在这里发现
第一时间获取面向IT决策者的独家深度资讯,敬请关注IT经理网微信号:ctociocom
除非注明,本站文章均为原创或编译,未经许可严禁转载。
相关文章: