软件开发
APP开发公司
手机软件
苹果IOS开发
android安卓开发
会员系统
三级分销
网站建设
商城网站
小程序开发
微信公众号开发
联系电话:18842388900

软件开发的汇海

频道:APP开发 标签:软件开发效率项目不能如期 时间:2019年03月07日 浏览:115次 评论:0条
软件开发项目不能如期完成似乎是普遍的事实,想想连微软这种霸权级的公司开发一个Vista都要推迟了又推迟,其它公司的项目延期一些又算得了什么呢?         应该说,关于开发管理的模式很多,比如近些年流行的RUP、XP什么的,都对软件开发中的问题提出了自己的理解。但是今天我在这里想谈的不是这些,引起我思考的是:蚂蚁或者蜜蜂这些昆虫,那么庞大的团队,它们是怎么管理的呢?就像宏观经济是微观经济的综合反映,个体的效率还是会表现成团队的效率。我不知道昆虫们是如何进行管理的,但我更愿意相信它们是完全靠个体的合作来实现团队的综合效率的。换句话说,它们是不太存在一个英雄式的核心的。用《我的兄弟是顺溜》中的台词说,你的个人能力再强,也不可能一个人把鬼子打跑。软件行业确实有它的特殊性,比如当年的WPS就是求老前辈单枪匹马搞出来的。不过眼下的形势好像不太支持这件事,所以公司招的都是有团队合作能力的人。团队有个英雄式的核心确实让人很兴奋,但没有核心人物的团队似乎也没少做项目。我个人的观察是,真正既参与管理又参与开发人员越来越少了,就像军方出现大量的文职官员一样,协作化越来越多,管理跨度越来越大,管理也越来越难,开发效率也越来越低。说实话,我做了多年开发工作,很少能力挽狂澜于既倒,除非那个项目足够简单,时间也充足到够我重新开发一遍。在这里,我把管理弱化到像蚂蚁、蜜蜂们那样,让外人看不太出来,而开发人员就像是完全靠互相协作来完成项目的。 有效工作时间“一杯清茶一根烟,一张报纸看半天”的官僚生活现在已经不多见了,但仔细想想,一天当中,你有多少时间是在真正全力的投入工作?我个人的观点是,如果一个程序员一天能有两个小时的有效工作时间,我就会考虑让他加入团队,但只能做简单的事情;若是一个程序员一天能有四个小时的有效工作时间,就可以是团队的中坚力量;若是一天能有六个小时以上的工作时间,他就可以带一个团队干活了。         不要看一天的工作时间很长,而且还有很多人加班到很晚,但实际上的有效工作时间都很少,用“出工不出力”来形容对某些人来是不公平,因为他们确实很努力,但不幸的是,就连这些努力的人的有效工作时间也很少,8个小时的工作加班成了16个小时,看起来非常努力,实际上根本就不是那么回事。你可以说这样的人是好人,但也肯定是个庸人!         很多单位都有靠加班完成项目的经历,而且是全体人员加班。我见过加班加得最狠的是民生银行的一个项目,其中一个承包商干脆命令员工每天工作到晚九点,一周工作六天。其实承包商自己也承认这种加班方式没什么效果,只是苦于客户要求如此。         高级点的“资本主义剥削工人”方式多是用提高工作效率来提高劳动强度的,比如安装一个螺丝钉就是三秒,数着秒表在那看一会就知道效率。只有不知道如何提升工作效率的管理,才会转而采用增加工作时间来提升劳动强度。软件开发的技术壁垒太高,很难量化到那个程度。上网查个资料,和同事用IM交流一下工作,这时间就用得海了去了。所以,这事是很难监督的,但每个人都会清楚他今天做了什么,量化不出但却一定能感觉得到的。不断的强化这种感觉,就像不断的提升艺术修养一样,对于一个正处于成长期的艺术家来说,好处是终生的。提醒你的团队不停的问一下:干完这件活,我真正用的时间是多少? 提前化解项目瓶颈         项目开发难免遇到瓶颈。但如果能提前意识瓶颈的存在而早有所规划,项目就会顺利得多。相反,则是困难重生。比如,不能等代码开发完了,才发现设备还没到位;也不能大家都干不下去了才发现技术方案不可行。我经历的项目大多是齐头并进式的,没有人做前锋,一旦出现问题,所有人都得陪着,包括陪着加班。如何管理项目不出现瓶颈,让大家分头各做各的事情,像蚂蚁、蜜蜂那样彼此间互相协作,确实是一门艺术。用个体的效率来提升团队的效率,使每个人都知道知道自己该干什么,减少团队等待时间,也就等于在某沈阳软件设计种程度上化解了项目瓶颈。 统一核心价值观         开发团队出现分歧是很常见的。因为客户、领导、技术、个人观点乃至个人偏好而发生争执是很普通的事,但也常常会在深层面影响团队合作。技术人员多半更倾向于以理服人,但偶尔也会变得非常随性。如果你的说法、做法不能让他在心里上认同,他就会觉得这个团队不是他想要的,并且马上出现要寻找新的能接纳他的团队的想法。也因为他觉得这个团队不属于他(记住,他很少会觉得他属于这个团队),他的工作质量会出现下降。         找到一个大家都能认同的核心价值观很是不容易,更何况不同的团队的核心价值观也会有差异。比如,有人只是为了钱,有人是为了钱和技术,有人是为了离开这个行业转而做管理或者销售。         开发是灵活的事情。但好多技术人员却一点不灵活。我就见过某些程序员坚决不用IDE,理由仅仅是从来没用过;还有些C++程序员坚决使用指针而拒引用于千里之外,理由是“习惯了”,而且“自己看得懂”。面对这些坚持自我的技术人员,硬较劲是不会有什么好结果的。“以德服人”是我常用的选择,但这一般很需要一些时间,甚至很长时间。         换句话说,如果没有行政的上压力,说服技术人员使用更先进的技术和方法是一件比哄老婆还难的事情。就算是技术人员用了先进的方法和技术,他同样有能力给你弄个一团糟。先进的技术如果离开了能发挥它作用的人,一样是废品。         面对只是表面上附和一下,其实心理根本没当回事的团队,我会身先士卒。一般不会所有的人都完全抵触,所以,寻找团队中可以合作的成员并尽快做出示范是第一关键。这件事情做好了,大家看到了成果,其它的事情的推广,只是时间问题。         说白了,核心价值观其实就是认同感,至少要让团队的多数人认同,认同这个团队,这样大家才能流畅的进行协作。 理顺各种关系         项目越大,各种关系就越复杂。曾见到自己团队的成员被其它团队负责人支使得团团转,我就去找他们分别谈。告诉我团队成员,你的工作是由我来安排的,你可以和他们充分交流,但不可以直接听命于他人,导致我安排的工作无法进行;同时也告诉其它团队负责人,交流是正常的,但开发的进度是我来负责的,你们可以和我谈,我的开发计划也可以调整,但绝不允许随意打乱开发计划。         要理顺的关系其实还有很多,比如和客户的,和销售的,和需求的,和测试的。理顺各种关系,就是在保证你的团队每天都能静下心来,理性的思考,理性地工作,这同样也是在提升工作效率。          我相信,不同层面的管理是不一样的,也希望能听到、看到不同的体会 

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。