多年推广技术与努力提高团队技术水平的经历
程序员文章站
2022-06-24 18:14:29
...
最近无法回沪,在学习某团的2019技术年货,除了不断提高自己的水平外,这些年也没少花精力来提高团队的整体开发水平,想写写经验与教训。
一方面作为一个团队,只有共同做好了项目,才有钱拿;另一方面,如果有能力,通过指导别人,即有成就感,同时也找到共同兴趣的人相互学习;另外,如果其它人做的太差,作为开发接手后心里估计要骂人,作为负责人也是压力山大。
我很长时间一直在一个公司做客户的信息系统,即作为架体与设计,也是核心部分的开发,同时也是项目负责人。从一开始就注重团队整体水平与能力的提高,有过以下经历:
一、幻想大范围推广自己的经验
06年第一个ASP的项目后,刚参与一个大客户的BG的信息系统,用java没多久,领导就安排我负责做另一个单位BJ的OA系统,领导找来一个样本,我学习之后,心里有底了,特别是样本中有简单的工作流代码,主要是定义流程与几个流程提交的代码。后来我项目中扩展了定义的种类,扩展了复杂的流程处理,无论用户提出多么复杂的流程要求,我都可以快速的实现,同时把通常一些非流程任务统一在一起定义,代码就非常通用简单,我自已进行了总结,用来指导另外的人。后面会给一个文档链接。
后来我仔细对比了大客户BG的流程设计,说是一个高手做的最主要的模块,确实很复杂,看着代码很规范。就是自己改写了一个流程产品,但操作没有归类,没通过的抽象减少代码。而且由于用户需要变化,高手做完走了,接手的就做的乱了,流程已经不在配置中了,任务也另外建表了,乱七八糟。
我感觉用我总结的这样的设计,就会非常简单。我的设计理解也简单,降低人员要求。我个人感觉开发与维护可以降低一半的工作量。后来也看了大团队的其它项目,没有人进行规范,有照搬大客户这个模块,却完全不用流程的设计(因为不会改复杂流程),也有自己写状态管理的,代码都非常的死。于是:
我写了一个邮件,发给事业部老总,说目前我调查多个项目流程设计很乱,造成项目开发维护周期很长,质量很差。并把我的总结文章附上邮件,说是规划统计开发方式可以整体提高3成以上开发周期。接手的人员也可以很快上手处理。在一些公司或者党员会上,找问题时,我也多次提出,但。
结果,我只在我们的大团队中介绍了这个设计,老总带我在外地演示我手上的项目,还让我与技术总监可以多交流。后来让我弄个产品出来,我只能说我这个是模式,是规范。本想着可能发挥非常大的作用,实际上并没有。
话说事业部也搞技术讲座,只是讲讲一个技术介绍。我觉得真正有用的是刨析你的项目,分析设计,评议代码,但没人有兴趣。我知道很多项目比较差,很多年,只见过一个好的。
二、只好在自己负责的范围内推广
看来只能在有限的范围内推广了,正好在做BJ项目的间隙,又负责了FZ的项目,还参与一个CT复杂考核系统的设计与开发指导。
在做CT项目时,我就在大团队建议数据库设计评审,主要是我讲我的数据库设计与核心功能设计,包括我带的人都参加。后来做的人,以及模块接手的人都知道我的想法与总体要求,也知道参考代码的位置。我告诉大团队领导,我乐意做更多的项目,特别是前期的设计,控制好项目的骨架,后来感觉项目是多了不少,但后面也不好交出去。
做FZ项目时,我把之前同事模仿BG那个复杂的乱七八糟的代码都扔了,甚至代码中有写死人员的,都重新写,正好当时有一个华中科技大学的可以快速理解我的设计与要求,我们两人配合快速把难的基本上弄出来,安排其它人做页面,补充一些功能而已。话说这么多年,只带过两个认可的,除了华科大,还有一个东华的,都是计算机科班的,非沪人员。
接手一个烂项目让我对整体情况非常失望,而且没有有效措施减少这种情况的发生,没有竞争能写出功能就可以了,出了问题抽人来处理。失望中我考了两次上海市级公务员,交港与房管,笔试第一没被录取。
FZ的项目很多,还有一个统计,我没精力详细控制,安排的人员出现表头固定,数据与统计冗余,后来的人处理不了用户需求,几年后我被安排处理系统新需求问题。我带的可以的人都走了,留不了有水平的人,非常失望。
三、突然调团队处理棘手问题
负责一个单位FZ的项目已经稳定了,也略轻松了,被安排处理另一大项目的监控,没有人弄。对我来说很陌生,领导又找不到公司可参考的例子,我自已花很多精力做了出来,重点是在一个超大监控室的屏幕上,分区域与类型,显示出了所有设备的即使状态。我没有带人,团队也没有评审,我的经验估计也不能分享出去。主要是技术却是前台处理,定义相同显示块处理。
我们的项目比较相似,做的水平质量五花八门,只有分享评审项目,才能从整体上降低公司的开发成本,才能让优秀的展示出来。评审是代码级别的才行,不知道有没有公司这么做,最近看某团的文章,从开始的乱中,到用中台技术上控制了一切。
后来又一个团队SG的技术经理走了陷入停顿,我调了过去。巧的是那个走的技术经理写的流程与我的很相似,但没我的复杂,很想认识一下,但没机会了,听说一半是他写的,很少与人交流技术。
这些工作的变动,我也只能在更小的团队中控制技术了,大的设计,我召集几个人一起来听我的想法,有时候我先询问他们的想法。碰到可以启动他们问题,让每人个先思考。工作上,能力强的我交流设计与重点,看结果;有个喜欢查资料处理问题的,但经常会走弯路的,我一步步推动他的工作,如果难点半小时没思路与方向,就告诉我。我感觉有意义的,我饭前或者空闲召集几个人一起看看。一个同事有之前参与的项目,流程弄不好,我看了一下,居然有工作流程产品表外,还有两层流程表处理,拿任务也是各不相同。指点了一个应付过去了,只能感叹没办法推广我的处理方式,能减少一半的开发工作量,我估计。
后来项目中碰到问题,相互可接手处理棘手的问题,类似的我只讲一遍,有人就其它地方领悟了。能力好的也可以指点别人了,能力差的或者做不重要的功能,或者安排打下手。整个项目技术全面可控,需求引起的变化都知道。
四、回归FZ团队
由于FZ这边客户有新领导,有很多新项目,还有之前统计系统的坑,我又被安排处理FZ项目,但因为有了项目经理,我就只管一部分系统开发。
我自己辛苦把统计那个应用一个人改了核心,只怪我之前和华中那个同事一直急忙做重点项目,交待的不重要的统计被做坏了,我没有真正控制住设计开发。做快做好做多没看到多少真正的意义,小项目不赚钱的。
另有一个复杂的系统的修改,还在的老同事反馈我的设计好理解,但我还是给新加入的设计人员讲解,别人讲不清楚。我自己重点负责的一个新系统也很复杂,其实也不是新的,我把合作公司的代码全扔了重新做,最大的问题是系统中的业务对象没有串起来,用户要啥做什么,没有整体的业务对象关联性(多部门用户提的业务需求是散的,要引导用户关联起来。)。这里有5个人要我安排,但4个同事中水平可以的还是一个实习女生。我把整个设计,库设计,页面设计与实现要求都讲了,公共部分我之前也写了一个freemarker自动生成主体代码,全部我来做,流程全由我控制。
感叹自己的设计即使在小范围内推广,本团队看表名称就知道我的标准风格,也在模仿,但总是不到位,从页面到请求到数据库还有一些内在的约定弄不清楚。但人员流动,我不得不从头教他们,自己还是比他们辛苦,有的人态度可以,水平太差了,有的水平可以又责任心差,我疲惫不堪而且精力用不到刀刃上,深感失败。
五、领悟
业务不象互联网行业有推动力,所以领导也不重视,不可能推广到大范围,发挥最大的效果;领导重视的来钱多的大项目,技术不行换人上,直到弄好;领导多数不是太懂技术,侧重把控的是人与钱。而且垄断性质的没有专注技术的动力,用底薪资的人表面成本低了。做太好了,修改维护的收入也没了。
公司整体水平低,项目进展慢,收入少,人员流动,自己小范围内的推广也没有意义,到头来还是做的多,任务多。有时来填坑,还可能改别人糟糕的代码。有的代码是艺术,有的是SHIT。
选不对平台,聚集不到相似的人,不可能有自己的发展,多么痛的领悟。
话说,我回归的FZ团队,后来的项目经理也无法劝说我留下,也换工作了。近来打听另一个同事接手着,说还在按细化我之前的项目,没新的,暂时还坚持着。我把新模块的简化需求都做好了。
六、换工作
钱并不是最看重的,但我发现,“钱”才会真正聚集起技术水平高的,工作能力强的,责任心强的人。当然市场对技术的要求才是,所以向互联网行业转行。
之前同学朋友有推荐好的公司,但没有相关技术进不去。我找到一个小公司,总监认可相信我。
好的方面:
用到比较新的互联网技术,外地的多数干劲可以的,有水平很不错的架构师,有认真学习,乐于主动跟我加班的同事。工作不行,没责任心的,给了机会不珍惜,关键时候人没消息,提交领导后被开了。能够优胜劣汰是好事。
设计方案有我们三个人讨论,但发现接口的讨论会只论参数调用,不进行内部白盒设计讨论。我提出来也不了了之。
不好的方面:
很多的子系统,没有规范出代码结构,版本,显的比较乱,又没有人管理。领导的管理是按bug扣分,还整出一个打分表。我和架构师都很难理解。
我看了不少系统的代码,发现有中级开发分工不合理造成初级一个功能写了21个sql,太可笑了。一个同事还出了一个偶发的数据库问题,反馈到架构师总监一直解决不了,最后我把版本统一好就正常了。
我肯定要控制我带的人开发的质量,我把通用的东西准备好,尽量不会让重复的工作进行。统一版本与系统代码结构与引用。谁做的都象一个人做的。
我提出的都不要高深的水平,在我的实践中却可以开发团队整体上大幅度提高生产率想法,基本上远达不到我的期望,太天真了。一切都不是不太真正懂技术的人在管理,当然也有的领导水平很高。
------
最近听巴菲特的黄金搭档,查理.芒格在南加州法学院的演讲中说:
You particularly want to avoid working directly under somebody you really don't admire and don't want to be like.
你们要特别避免在你们不是真正钦佩的或者不想象他一样的人手下干活,那是很危险的。
The way i solved that is i figured out the people i did admire and i maneuvered cleverly without criticizing anybody.
在我年轻的时候,我的办法是找出我尊敬的人,然后想办法调到他手下去。
------
我的规范
希望我可以找到一个有机会发挥能力的地方,做出真正有水平的软件,和优秀的人。
一方面作为一个团队,只有共同做好了项目,才有钱拿;另一方面,如果有能力,通过指导别人,即有成就感,同时也找到共同兴趣的人相互学习;另外,如果其它人做的太差,作为开发接手后心里估计要骂人,作为负责人也是压力山大。
我很长时间一直在一个公司做客户的信息系统,即作为架体与设计,也是核心部分的开发,同时也是项目负责人。从一开始就注重团队整体水平与能力的提高,有过以下经历:
一、幻想大范围推广自己的经验
06年第一个ASP的项目后,刚参与一个大客户的BG的信息系统,用java没多久,领导就安排我负责做另一个单位BJ的OA系统,领导找来一个样本,我学习之后,心里有底了,特别是样本中有简单的工作流代码,主要是定义流程与几个流程提交的代码。后来我项目中扩展了定义的种类,扩展了复杂的流程处理,无论用户提出多么复杂的流程要求,我都可以快速的实现,同时把通常一些非流程任务统一在一起定义,代码就非常通用简单,我自已进行了总结,用来指导另外的人。后面会给一个文档链接。
后来我仔细对比了大客户BG的流程设计,说是一个高手做的最主要的模块,确实很复杂,看着代码很规范。就是自己改写了一个流程产品,但操作没有归类,没通过的抽象减少代码。而且由于用户需要变化,高手做完走了,接手的就做的乱了,流程已经不在配置中了,任务也另外建表了,乱七八糟。
我感觉用我总结的这样的设计,就会非常简单。我的设计理解也简单,降低人员要求。我个人感觉开发与维护可以降低一半的工作量。后来也看了大团队的其它项目,没有人进行规范,有照搬大客户这个模块,却完全不用流程的设计(因为不会改复杂流程),也有自己写状态管理的,代码都非常的死。于是:
我写了一个邮件,发给事业部老总,说目前我调查多个项目流程设计很乱,造成项目开发维护周期很长,质量很差。并把我的总结文章附上邮件,说是规划统计开发方式可以整体提高3成以上开发周期。接手的人员也可以很快上手处理。在一些公司或者党员会上,找问题时,我也多次提出,但。
结果,我只在我们的大团队中介绍了这个设计,老总带我在外地演示我手上的项目,还让我与技术总监可以多交流。后来让我弄个产品出来,我只能说我这个是模式,是规范。本想着可能发挥非常大的作用,实际上并没有。
话说事业部也搞技术讲座,只是讲讲一个技术介绍。我觉得真正有用的是刨析你的项目,分析设计,评议代码,但没人有兴趣。我知道很多项目比较差,很多年,只见过一个好的。
二、只好在自己负责的范围内推广
看来只能在有限的范围内推广了,正好在做BJ项目的间隙,又负责了FZ的项目,还参与一个CT复杂考核系统的设计与开发指导。
在做CT项目时,我就在大团队建议数据库设计评审,主要是我讲我的数据库设计与核心功能设计,包括我带的人都参加。后来做的人,以及模块接手的人都知道我的想法与总体要求,也知道参考代码的位置。我告诉大团队领导,我乐意做更多的项目,特别是前期的设计,控制好项目的骨架,后来感觉项目是多了不少,但后面也不好交出去。
做FZ项目时,我把之前同事模仿BG那个复杂的乱七八糟的代码都扔了,甚至代码中有写死人员的,都重新写,正好当时有一个华中科技大学的可以快速理解我的设计与要求,我们两人配合快速把难的基本上弄出来,安排其它人做页面,补充一些功能而已。话说这么多年,只带过两个认可的,除了华科大,还有一个东华的,都是计算机科班的,非沪人员。
接手一个烂项目让我对整体情况非常失望,而且没有有效措施减少这种情况的发生,没有竞争能写出功能就可以了,出了问题抽人来处理。失望中我考了两次上海市级公务员,交港与房管,笔试第一没被录取。
FZ的项目很多,还有一个统计,我没精力详细控制,安排的人员出现表头固定,数据与统计冗余,后来的人处理不了用户需求,几年后我被安排处理系统新需求问题。我带的可以的人都走了,留不了有水平的人,非常失望。
三、突然调团队处理棘手问题
负责一个单位FZ的项目已经稳定了,也略轻松了,被安排处理另一大项目的监控,没有人弄。对我来说很陌生,领导又找不到公司可参考的例子,我自已花很多精力做了出来,重点是在一个超大监控室的屏幕上,分区域与类型,显示出了所有设备的即使状态。我没有带人,团队也没有评审,我的经验估计也不能分享出去。主要是技术却是前台处理,定义相同显示块处理。
我们的项目比较相似,做的水平质量五花八门,只有分享评审项目,才能从整体上降低公司的开发成本,才能让优秀的展示出来。评审是代码级别的才行,不知道有没有公司这么做,最近看某团的文章,从开始的乱中,到用中台技术上控制了一切。
后来又一个团队SG的技术经理走了陷入停顿,我调了过去。巧的是那个走的技术经理写的流程与我的很相似,但没我的复杂,很想认识一下,但没机会了,听说一半是他写的,很少与人交流技术。
这些工作的变动,我也只能在更小的团队中控制技术了,大的设计,我召集几个人一起来听我的想法,有时候我先询问他们的想法。碰到可以启动他们问题,让每人个先思考。工作上,能力强的我交流设计与重点,看结果;有个喜欢查资料处理问题的,但经常会走弯路的,我一步步推动他的工作,如果难点半小时没思路与方向,就告诉我。我感觉有意义的,我饭前或者空闲召集几个人一起看看。一个同事有之前参与的项目,流程弄不好,我看了一下,居然有工作流程产品表外,还有两层流程表处理,拿任务也是各不相同。指点了一个应付过去了,只能感叹没办法推广我的处理方式,能减少一半的开发工作量,我估计。
后来项目中碰到问题,相互可接手处理棘手的问题,类似的我只讲一遍,有人就其它地方领悟了。能力好的也可以指点别人了,能力差的或者做不重要的功能,或者安排打下手。整个项目技术全面可控,需求引起的变化都知道。
四、回归FZ团队
由于FZ这边客户有新领导,有很多新项目,还有之前统计系统的坑,我又被安排处理FZ项目,但因为有了项目经理,我就只管一部分系统开发。
我自己辛苦把统计那个应用一个人改了核心,只怪我之前和华中那个同事一直急忙做重点项目,交待的不重要的统计被做坏了,我没有真正控制住设计开发。做快做好做多没看到多少真正的意义,小项目不赚钱的。
另有一个复杂的系统的修改,还在的老同事反馈我的设计好理解,但我还是给新加入的设计人员讲解,别人讲不清楚。我自己重点负责的一个新系统也很复杂,其实也不是新的,我把合作公司的代码全扔了重新做,最大的问题是系统中的业务对象没有串起来,用户要啥做什么,没有整体的业务对象关联性(多部门用户提的业务需求是散的,要引导用户关联起来。)。这里有5个人要我安排,但4个同事中水平可以的还是一个实习女生。我把整个设计,库设计,页面设计与实现要求都讲了,公共部分我之前也写了一个freemarker自动生成主体代码,全部我来做,流程全由我控制。
感叹自己的设计即使在小范围内推广,本团队看表名称就知道我的标准风格,也在模仿,但总是不到位,从页面到请求到数据库还有一些内在的约定弄不清楚。但人员流动,我不得不从头教他们,自己还是比他们辛苦,有的人态度可以,水平太差了,有的水平可以又责任心差,我疲惫不堪而且精力用不到刀刃上,深感失败。
五、领悟
业务不象互联网行业有推动力,所以领导也不重视,不可能推广到大范围,发挥最大的效果;领导重视的来钱多的大项目,技术不行换人上,直到弄好;领导多数不是太懂技术,侧重把控的是人与钱。而且垄断性质的没有专注技术的动力,用底薪资的人表面成本低了。做太好了,修改维护的收入也没了。
公司整体水平低,项目进展慢,收入少,人员流动,自己小范围内的推广也没有意义,到头来还是做的多,任务多。有时来填坑,还可能改别人糟糕的代码。有的代码是艺术,有的是SHIT。
选不对平台,聚集不到相似的人,不可能有自己的发展,多么痛的领悟。
话说,我回归的FZ团队,后来的项目经理也无法劝说我留下,也换工作了。近来打听另一个同事接手着,说还在按细化我之前的项目,没新的,暂时还坚持着。我把新模块的简化需求都做好了。
六、换工作
钱并不是最看重的,但我发现,“钱”才会真正聚集起技术水平高的,工作能力强的,责任心强的人。当然市场对技术的要求才是,所以向互联网行业转行。
之前同学朋友有推荐好的公司,但没有相关技术进不去。我找到一个小公司,总监认可相信我。
好的方面:
用到比较新的互联网技术,外地的多数干劲可以的,有水平很不错的架构师,有认真学习,乐于主动跟我加班的同事。工作不行,没责任心的,给了机会不珍惜,关键时候人没消息,提交领导后被开了。能够优胜劣汰是好事。
设计方案有我们三个人讨论,但发现接口的讨论会只论参数调用,不进行内部白盒设计讨论。我提出来也不了了之。
不好的方面:
很多的子系统,没有规范出代码结构,版本,显的比较乱,又没有人管理。领导的管理是按bug扣分,还整出一个打分表。我和架构师都很难理解。
我看了不少系统的代码,发现有中级开发分工不合理造成初级一个功能写了21个sql,太可笑了。一个同事还出了一个偶发的数据库问题,反馈到架构师总监一直解决不了,最后我把版本统一好就正常了。
我肯定要控制我带的人开发的质量,我把通用的东西准备好,尽量不会让重复的工作进行。统一版本与系统代码结构与引用。谁做的都象一个人做的。
我提出的都不要高深的水平,在我的实践中却可以开发团队整体上大幅度提高生产率想法,基本上远达不到我的期望,太天真了。一切都不是不太真正懂技术的人在管理,当然也有的领导水平很高。
------
最近听巴菲特的黄金搭档,查理.芒格在南加州法学院的演讲中说:
You particularly want to avoid working directly under somebody you really don't admire and don't want to be like.
你们要特别避免在你们不是真正钦佩的或者不想象他一样的人手下干活,那是很危险的。
The way i solved that is i figured out the people i did admire and i maneuvered cleverly without criticizing anybody.
在我年轻的时候,我的办法是找出我尊敬的人,然后想办法调到他手下去。
------
我的规范
希望我可以找到一个有机会发挥能力的地方,做出真正有水平的软件,和优秀的人。