沙场秋点兵走出软件作坊:三五个人十来条枪如何成为开发正规军(二十七)davidlv

前几个月,公司旁边的写字间又搬进一家公司,好似也是做软件的,而且好像是刚成立的公司,程序员们天天加班,神情很年轻,头发很油,穿着大背心大裤衩人字拖,男的女的都有,经常站在通道里成群的吸烟,或者干脆席地而坐围成一堆开会,都不下食堂吃饭,都订盒饭,中午晚上都是如此,我经常晚上下班,看见他们不时有人捧着一个盒饭从办公室走出来把吃完的饭盒扔进垃圾筒,不知道他们会工作多晚。

我想起了一句话:Boy,Slowly,Slowly。

新的产品,新的梦想,大家都很希望能够把多年积累的知识都用上去,做一个业界一飞冲天的产品。但是,这这个新的团队呀。

我刚出道的时候,加入了一个新成立的研发中心,才成立四个月,我是第六人。产品还在规划当中,团队还在建设当中,技术还在学习摸索当中。

当时的技术总监做了两件我现在也认为很对的事情:一、他让所有人阅读上一代产品的源代码,整理上一代产品的功能,并且得出上一代产品的功能所映射的客户业务流程。并且要求指出上一代产品业务流程中的漏洞和矛盾。二、他让大家通过改造源代码来学习新技术。

他不仅仅让大家整理业务,还要画出来详细的流程图,整理出详细的数据结构。然后安排集中会议让大家讲,讲的时候,以流程图为主,走到哪一步,就进入软件界面讲解,并且讲明背后的数据存取到底是处理了哪些字段标志,表之间是怎么关联的,到底从哪些表中取出来,表结构设计的有什么不合理的。

这次没讲明的,这次提问没有确切答案的,下次继续讲,而不仅仅是讲一回。我发现,很多团队缺乏这种不断追根到底的魄力。总是虎头蛇尾,第一次讲的很起劲,讲的期间出现了自己也没有理解透的东西,领导只是安排下去再去研究一下,但就没有了下文。自己下去了看了一下,认为找到了答案,但就没有再次校验的机会了,于是最应该细究的地方被这样放过了。我们知道,编写程序,往往是最细节差异的地方最容易出现问题,而且很少能被测试到,而且维护代码的程序员往往不清楚这块是干什么的,一旦出现问题很难阅读懂。

技术总监还让我们改造源代码。但这个也是有目标的,就是把控件都修改成一个统一的体验风格,没有DB的控件,就去寻找。寻找到了,就把这部分代码摘出来,然后形成我们自己的控件包,力求不要为了一个小小的控件,就安装整个的控件套件包。实在寻找不到,就自己开发控件。

学习新技术,我认为这种方法是最好的一种方法。我现在也是这样指导我的下属的。

学习新技术,为了怕误导,一是阅读官方的例子,如JAVA的宠物店或.NET的宠物店。但我后来我明白了,不能这么学。因为本来就对新技术陌生,一开始入主的就是这样的代码,那么以后的编写程序的风格就往往会像这些例子一样。其实,我们编写业务应用程序,并不需要这样的架构风格,也不需要秀那么多代码模式。照猫画虎把我们画的很累,还扭转不了已经固有的思维。我们不需要这种看上去很美的代码。

学习新技术,第二种方法就是找一个网上开源的什么系统,如某些新技术尝鲜者做了论坛系统或什么什么管理系统。但这种方法也有个弊病,就是他自己写的代码有他自己的风格,而且他还处于尝试期,写这个东西可能是他为了学习这个技术,而非目标是开发这个管理系统。本来咱们对于新技术就是一张白纸,这下被他带到沟里去了。

学习新技术,第三种方法就是阅读这个新技术本身的源代码。可惜本来就对新技术不熟悉,而新技术本身的源代码更是复杂,看的云里雾里,吃力看不到进展,欲想放弃。

所以,学习新技术,最好是学习基于新技术的第三方的外国开源源代码。他们对新技术理解快理解深入,他们应用新技术不是为了尝试新技术或者秀新技术,他们是为了完成他们的一个实用产品。我们当时为了摘出某个控件,几乎阅读了那个控件套件包的所有源代码,并且理出了源代码的结构思路,否则我们无法确定我们遗漏了什么,会不会有BUG。

但是,现在回过头来看,方法是对的,时机却是错的。

我们是新团队、新产品、新技术,很多我们尚未了解清楚的,我们却把我们学习新技术后得到的控件应用到了我们以后的正式产品中,并且作为基础应用。这给以后的发展带来了几乎是灾难性的打击,我最后费了好大的劲才算把基础重构并且稳定住,否则基础崩盘了,上面的应用就不可收拾了。

所以,我现在都是尽量限制使用新技术。也就是说,不会让新产品、新团队、新技术这三个新都同时出现,风险太大了。而且坚决不使用新技术作为基础技术。

我们还犯了一个错误,就是正式开发的时候,我们一上手就开发基础框架。大家都知道一个系统的基础框架的重要性。但是我们却用刚刚学会的新技术开发我们以后业务模块都要深度依赖的基础框架。我想起了某公司一套战略性的大型产品的开发:用的是新技术JAVA,大家都还是新团队,做的也是新产品,全体程序员都已经封闭开发了,居然有人提出了一套自己也未经过商业规模应用验证的基础框架,并且自己实现了一个小DEMO。大家一看这个小DEMO非常有思想,就决定让整套产品线都应用这套基础框架。

我想象他们的痛,和我很神似。所以,我现在如果面临新产品、新团队、老技术,我都不会让大家一上手就开发基础框架。

去年,我就面临了一个老团队、老技术,但是是全新一代产品的开发。

具体情况是这样的,经过几年发展,我们的现有产品渐渐老化,所以决定要开发新一代的产品。上一代的产品是C/S结构,而且是适合单客户使用的。这次,我们要开发B/S结构,而且是适合集团客户使用的。

让上一代产品的开发团队继续维护上一代产品。让新一代开发由新的开发团队去执行。所以,我们就招聘了新的团队(当时公司对开发新产品有不同的利益冲突团体,还没有达成一致,招聘新团队既有为新一代产品开发做准备的目的,也有其他的目的,造成这支新团队的打造过程中往往出现两种极端:要么好几个人都管,要么三不管)。刚开始并没有去动手设计与开发新一代系统,而是为客户定制开发了一两个其他IT项目。所以说还算接触了客户行业,大家彼此在一起工作也快八个月了,算是一个老团队。

但是这支团队对客户、对现有的产品并不深刻了解,虽然我给团队多次讲解过业务,也让大家分析学习现有产品,阅读现有产品的说明书,根据新的业务模式也组织大家一起分析业务设计功能、编写功能设计说明书,但理解上确实还不够令人满意,大部分人还是似懂非懂。遗憾的是,在老板的规划下,新一代的系统开发必须启动。

如果这时候开发基础框架,大家根本不理解以后这个基础框架之上要编写什么样的应用代码,那么这个基础框架就会变成形式,以后的应用代码怎么都觉得这个基础框架没什么用,用起来也是格格不入,不像是螺丝对螺母那样合缝。

所以,我先安排团队开发了系统管理工具。这是个没有具体业务的,而且通用的,而且也是基础框架的一部份的开发工作。但是,由于系统管理工具,涉及到了新的组织结构模式,新的权限控制模式,这是大家不太熟悉的。而且编码架构风格和他们以往的开发不太一样。所以开发起来也是疑问不断,需要实时复查代码,实时解答问题。

终于开发完毕,我们开了一个总结会。大家都总结了对这次开发的体会,并且讨论出来以后再遇到这样的问题要如何解决,每个人的分工和人员配合流程再次确定,功能和功能的用意再次给大家讲了一次,对于新的编码架构风格再次讲了一次好处和用意。大家都说:如果在开发前就把这些讲清楚了,那么开发就不会遇到这么多问题了。我说:开发前我就是这么讲的,但是大家都不理解。这次经历过来了,就明白了。

接下来该怎么办?

大家都啊了一声。干吗要重新开发,好不容易开发出来就这么废了?

我对大家说了我的经历,我说:系统管理工具是基础框架的一部份,是以后用户很常用的工具,而这个工具却是我们在不清晰不熟练的阶段开发的,我们如何能把这么重要的基础功能交付给客户呢?尤其以后这个工具要和需要系统结合,这个工具的数据结构目前还无法支撑以后的众多连接,你们也看到了许多遗憾,我们不能一起步就是个瘸子。

大家又问:那过去的代码我们还能用么?

我说:你们自己看需要。我既不赞同你们尽量使用过去代码,也不赞同全部重新编码。如果你们想把一个有残疾的代码上改造成一个优秀的代码,我说不可能,过去的很多缺陷会牵绊着你。你为了保留过去的代码,你就会向过去妥协,而把丝丝缺陷带了进来。每个人每个功能都留了一点点小尾巴,那么所有开发的功能总和出来的缺陷就是一个大问题。所以大家自己看着办,先重新写,需要用的时候自己就COPY出来。

果然,理解了清晰的功能和功能用意的程序员,开发起来很快,毕竟都写过一次系统管理工具了,也是老技术、老团队了。半个月完成工作。

我问:上一次你们编写的系统管理工具代码用了多少?

他们回答说:不到20%。明白了思路,重写起来很快,反正没有什么高难度技术。本来想COPY旧代码,发现老有关联,摘不干净,还不如重新写一个来的快。

我说:好。咱们下一步就实现一个咱们系统中最简单的也是比较边缘的一个业务子系统。在开发中大家重点发现需要什么公共功能,咱们都提炼出来,就会形成咱们的基础框架的一部份。

这个简单的业务子系统开发了出来,我又开了总结会。

大家这次都发言热烈:我现在终于发现了系统管理工具和业务子系统之间的关联关系了,他们有很多代码能够共用。由于这次开发业务简单,而且经过上次系统管理工具的开发,开发方法和代码方法都已经熟悉,对于系统管理工具的认识也深刻了许多,所以这次我开发业务系统的时候,还顺便把过去的系统管理工具的代码进行了重构,发现了不少可以共用的部分。我发现,这些基础代码总结了出来之后,好像系统管理工具也是从这些公共代码基础之上开发出来的一个特殊的业务子系统了,所有子系统都依赖这个基础代码框架。过去本来系统管理工具的风格和业务子系统不一致,这次重构,一下子都统一了。

THE END
1.宠物乐园投资多少钱?宠物乐园加盟费多少钱?宠物乐园加盟简介 很多大学生刚毕业出来就面临着就业难的问题,同时也有很多大学生选择寻找一个好的品牌加盟创业,那么面对市场上众多的加盟品牌,哪一个才是能够获取最多利润的项目呢?小编今天推荐给您宠物乐园。相比于宠物店行业中其他项目而言,宠物乐园一直都是最具有特色的一个,它所经营的产品包括宠物服务等,受到...https://www.jiamengfei.com/xm/105216
2.宠物简历模板我是一名宠物爱好者,喜欢宠物犬和猫。我热爱宠物,愿意花时间陪伴它们,与它们一起玩耍和散步。我有良好的沟通能力和团队合作精神,能够与不同背景的人有效沟通并合作。 工作经历 XXX有限公司2017/10-至今 宠物 在Y公司,我担任宠物店销售员。在任期内,我负责销售宠物产品,并与客户保持良好的沟通和合作关系。 具体工作...https://www.liepin.com/mould/chongwu.shtml
3.新华职业技术学院招生简介2024沈阳新华职业技术学校始建于1992年,是一所专门重点培养职业技能的学校,学校集升学、定向高端就业、兵役定向培养为一体的综合性现代化职业学校。 学校优势 学校办学30余年,累计为社会各企事业单位输送高技能人才数万余人,学校深耕职业教育30余载,一直本着以就业为导向,办真正的职业教育,以市场人才需求为基点,做有未来...https://www.meipian.cn/51232z1q
4.宠物店策划方案(与“宠物”相关文档课件,宠物店策划方案第1页,共17页。,1,产品与服务,宠物销售,宠物寄养,宠物,美容,宠物用品销售,宠物,医疗,第2页,共17页。,产品与服务宠物销售宠物寄养宠物美容宠物用品销售宠物,2,第3页,共17页。,第3页,共17页。,3,发展规划,未来三年年发展规划,-三年时间打出爱宠屋品牌,在成都及周边地区发展多家分店,更长远...http://m.zhuangpeitu.com/article/252907604.html
1.小佩宠物用品品牌介绍→小佩宠物智能管家小佩宠物饮水机一般项目:从事网络科技领域内的技术开发、技术咨询、技术转让、技术服务、技术交流、技术推广;软件开发;计算机系统服务;工业设计服务;专业设计服务;电子产品销售;通讯设备销售;通信设备销售;宠物食品及用品批发;宠物食品及用品零售;日用百货销售;销售代理;信息咨询服务(不含许可类信息咨询服务);信息技术咨询服务;宠物服务(...https://www.maigoo.com/brand/49106.html
2.法治热点引狼入室!无业男子被女子收留后反而奸杀好心人表妹,被判...2.法国2024年起禁止宠物店销售猫狗:近日,法国参议院批准一项新的动物福利法案,规定从2024年起禁止宠物店出售猫和狗,此举旨在防止猫狗被遗弃。法案生效后,有饲养意愿的人只能从有执照的饲养者和动物收容所购买猫狗,并需要在购买时签署一份承诺书,以证明他们了解动物的需求,购买后7天内可以反悔。(中国新闻网) ...https://www.thepaper.cn/newsDetail_forward_15513089
3.2021全市下半年典型案例工作动态2021年8月31日,晋中市和左权县农业农村局执法人员在左权县某宠物店检查时发现,该宠物店从事诊疗服务未按规定悬挂《动物诊疗许可证》。经立案查明,当事人未办理《动物诊疗许可证》从事动物诊疗活动。依据《中华人民共和国动物防疫法》第一百零五条第一款之规定,决定对当事人作出责令停止诊疗活动,罚款3000元的行政处罚...https://nyncj.sxjz.gov.cn/gzdt/content_398016
4.宠物店创新创业计划书(通用7篇)二、产品与服务 小犬纯衣廊通州果园店建筑面积200平方米,设有寄养室、美容间、训练室、活动室等。果园店将全年开放,每天营业14小时,并且为解决上班族的时间问题,早晨6点开始营业。果园店将成为一个集众多产品和服务的宠物中心: 1、公司主营用品: 1)宠物食品:饼干、饲料、干燥鸡肉、鱼虾罐头等主粮以及宠物休闲食品...https://www.oh100.com/kaidian/4689055.html
5.宠物店的商业计划书(5)宠物模特费用。本店采用与宠物店合作的方式,直接到宠物店进行产品拍摄。这样不仅模特种类多,费用较低,同时也达到了在宠物店进行宣传的目的。 5.2营销策略 1、4P理论 4P理论适用于任何营销手段、营销方法,本店在创业之初,经过详细的策划,已制定完成本店的4P计划,即产品、价格、促销和渠道。其中,产品不仅要保质...https://www.ruiwen.com/gongwen/jihuashu/1149133.html
6.宠物商店创业计划书(精选10篇)(5)宠物模特费用。本店采用与宠物店合作的方式,直接到宠物店进行产品拍摄。这样不仅模特种类多,费用较低,同时也达到了在宠物店进行宣传的目的。 5.2营销策略 1、4P理论 4P理论适用于任何营销手段、营销方法,本店在创业之初,经过详细的策划,已制定完成本店的4P计划,即产品、价格、促销和渠道。其中,产品不仅要保质...https://www.yjbys.com/chuangye/ziliao/chuangyejihuashu/632154.html
7.成都农业科技职业学校各二级学院学院及专业简介畜牧兽医学院的前身源于成都畜牧兽医学校和温江农校畜牧兽医专业,历史积淀悠久、综合实力雄厚,目前开设畜牧兽医、动物医学、水产养殖技术、宠物养护与驯导、宠物医疗技术、动物营养与饲料6个专业。以畜牧兽医专业为龙头各专业历经国家优质校建设,省示范及重点专业、国家省市现代学徒制试点建设,畜牧兽医专业群于2021年被四川省...https://www.gaokao.cn/school/772/newsdetail/68017/188781
8.2.2ssh.mvc汽车销售系统(源码+数据库sql+lun文+视频齐全)本文主要讲述了基于B/S模式架构的汽车销售管理系统的设计与实现。所谓的汽车销售管理系统是通过新兴的互联网商业模式推广相关企业和公司的汽车产品和技术支持与服务,并可以方便的使客户随时了解企业最新动态和产品发布,为客户提供快速便捷的信息获取和订单处理功能,同时满足客户的购买需求。 https://blog.csdn.net/fshao123/article/details/136476414
9.产品设计毕业选题(通用8篇)产品设计毕业选题(通用8篇) 篇1:产品设计毕业选题 班级学生管理系统的设计与开发办公管理系统 办公信息管理系统 办公自动化管理系统 办公自动化系统 毕业论文管理系统的设计 毕业设计ASP+ACCESS聊天室 毕业设计花店 毕业设计论坛 毕业设计选题管理系统(asp+sql)毕业生信息管理系统 ...https://www.360wenmi.com/f/file7avd8w79.html
10.2023年抚顺市农业特产学校地址在哪?本专业培养德智体美劳全面发展,掌握扎实的科学文化基础和宠物解剖生理、宠物免疫、宠物营养与食品等知识,具备宠物饲养与繁殖、宠物驯导、宠物护理、宠物营销等能力,具有工匠精神和信息素养,能够从事宠物饲养、宠物繁殖、宠物食品配制、宠物驯导、宠物护理、宠物保健、宠物医疗辅助、宠物店经营、宠物线上营销等工作的技术...https://m.zhijiao.cn/news/detail/137094
11.?智能宠物家具:引领宠物生活的科技新潮流服务近年来,随着人们对宠物生活品质的追求不断提升,智能宠物家具逐渐成为宠物主人们的关注焦点。作为新一代科技产品,智能宠物家具以其独特的功能和设计吸引了越来越多的消费者。本文将介绍智能宠物家具的科技革新进程以及如何选择合适的智能宠物家具。 一、智能宠物家具的科技革新进程 ...https://www.petdhw.com/xiamen-show-40970.html