小规模团队(5 人以下)代码管理问题

2022-09-14 09:20:29 +08:00
 god7d

在小规模团队中,招聘开发的标准应该包含比如不少于 5 年工作经验、代码风格优雅、有一定架构经验等,这样可以保证每个成员都可以独立开发并且保证质量。一般来说,小团队对新手的容忍度较低,只有中型团队以上可以考虑培养新手。

团队开发工作一旦分工完成,成员所负责的代码部分应该不允许他人修改,除非是在得到了充分沟通和授权的情况下。如果其他成员发现其代码问题,应当指出并由该成员自主修改。在团队成员长期稳定的情况下,成员所负责的代码应该与该成员长期绑定,实现成员对代码“终身负责“和风格统一的问题。有的公司规模不小但是流动率超高,每个人都抱着最快完成任务而不在意代码质量的想法,导致项目可维护性极差,甚至无法维护,而重构的代价是比较大的。(不过对于这种公司来说他们的产品可能是一锤子买卖)

对于开发工程师来说,光速交付然后快速重构的模式可能是非常恼人的,因为这样会让人觉得疲惫,且开发过程中不慎愉悦。当然付钱的是老板,很多时候开发工程师并没有选择。不过在一些传统行业中,很多时候软件是具备充足的开发时间的,这时候选择精雕细琢显然是两全其美的事情。

8091 次点击
所在节点    程序员
47 条回复
wu00
2022-09-14 10:51:25 +08:00
6 人团队,4 后 2 前
gitlab flow 、mr 、code review 、ci/cd
后端严格执行,有建立统一技术规范、编码风格等内部文档,堆了 2 年的代码,还很清爽。
前端仅使用 gitlab 做仓库和自动化部署,堆了一年已成屎山
shijingshijing
2022-09-14 10:52:56 +08:00
**招聘的时候就已经充分考虑了楼上说的问题,首先团队成员都有很强的自觉性,不存在写成“屎山”的问题,大家都是对代码质量有一定追求的人;**
-----------------------------------------
盲目自信,“屎山”是相对的,即使是一个设计优良的系统,如果对应的业务飞速成长,后续也存在小马拉大车的问题,更不谈这个过程中一直存在的修修补补,哪怕不是“屎山”,掺入越来越多的老鼠屎也是不可避免的。
代码质量是个比较笼统的概念,是性能很好?是扩展性好?是可读性很好?还是 bug 很少?目前,我见到的几乎没有全面兼顾的,即使是开源的巅峰 Linux 内核这样的项目,特别是接近硬件的部分,里面也有一堆骚操作。

**其次,团队内部分工确实是五个人独立开发的,每个人开发的代码对于其他人都是黑盒,只要约定接口、处理好线程等问题就可以;**
-----------------------------------------
这一段几乎就可以确定,日后项目成为“屎山”是必然,黑盒意味着日常开发别人做 code review 无从下手,紧急时刻别人无法替补,人员离职别人无法接手。

**最后团队不追求统一风格,团队的理念是给每个人充分的发挥空间,保持自己的特性。**
-----------------------------------------
成为“屎山”条件+1 ,意思是给程序员最大的自由度吧,但是自由是有条件的,Linux 内核不仅想要 Merge 进主分支不仅要符合严格的内核代码风格规范,https://www.kernel.org/doc/html/v4.10/process/coding-style.html ,还要担心 Linus 这种仁慈的独裁者随时邮件骂你。软件工程的最高境界就是整个项目仿佛一个人写出来的,这个人的水平处于团队中上等级。
shijingshijing
2022-09-14 10:54:41 +08:00
写点小工具还可以,大点的项目,几乎不可能。
dayeye2006199
2022-09-14 10:56:52 +08:00
团队的水平方差甚至比均值有时候更重要
HugoChao
2022-09-14 10:57:55 +08:00
20 个人的团队算小还是中?
zhujq
2022-09-14 11:11:25 +08:00
@HugoChao 20 人感觉不小了
god7d
2022-09-14 11:11:52 +08:00
@shijingshijing 写的很好,领教了。我们这边业务量很小,基本上就是把固定的几个功能尽量优化。即便有新项目其实对于开发这边来说意义不大,因为使用的基础设施还是老一套,一般重新套个壳子就可以了,所以重心还是维护那些基础设施,比如核心算法、把三方库替换成自己造的轮子等等。至于说自由度的问题,主要是为了营造宽松氛围,因为工资不高等客观因素,需要提供其他方面的条件,但是就公司里的人来说,本身也比较散漫自由。但你的回复依然非常有意义,非常感谢。
@wu00 我们这边的项目不是严格意义上的工程项目,带有科研性质,成员除了写代码还要做实验分析数据
CaptainD
2022-09-14 11:25:53 +08:00
我们就是 5 人左右的小团队,但是公司系统较简单,可能管理方式没你说的那么复杂,但有一点相同,也都是黑盒开发,自己负责自己的代码,这里有个问题,如果某个人离职怎么办,且不说能否找到合适的人,就算有新人来未必很快上手,而且其他成员对离职者的代码并不了解,甚至负责的方向有很大差别,技术栈完全不同,容易有交接问题
shaojz2005
2022-09-14 11:31:20 +08:00
看行业,很多传统制造业上千人,养 5 个人做个内部系统应该不成问题吧?可能你们一说软件就代入到互联网行业。在传统行业里,工作清闲朝九晚五,工资开的虽然没有互联网高,但是足以招到一些水平不错,代码风格良好的程序员了
=============
实际上没那么理想的。

传统制造业,很多软件可以外包或者买现成的产品。

传统制造业,对技术的追求没那么高,待遇不会很高,招不到合适的人。

还有个很致命的问题,在于传统制造业的业务需求的扩展性不是很大,因此技术氛围也很差。等软件稳定成熟之后,剩下的人会陷入工作量不大的状态。闲则生变,要么是领导觉得人太闲可以炒了,或者是人自己觉得太闲、上升空间不大,也跑了。剩下的都是老油条,也就不要想什么开发的精益求精了。

要实现这样的目标,需要有一个非常靠谱的技术负责人,对技术有追求,但又不大想去大厂打拼了,往往是本地人、名牌大学毕业、有家庭这种,那么他就有长期留在一个地方的心态,并且可以带领团队追求高质量的软件开发,也不怕人员流动。

这样的状态,其实是可遇不可求的。
cubecube
2022-09-14 11:35:01 +08:00
不会不存在屎山问题,一个人觉得是金矿,另一个人没准会觉得是屎山。
代码风格的统一需要团队负责人规划实施
Crawping
2022-09-14 11:35:52 +08:00
@daimubai 人家养 5 个人 5 个 5 年的 6w 一个月 平均一个 1w2 怎么就成了 张嘴就来了...
daimubai
2022-09-14 11:36:52 +08:00
@Crawping 多读几遍再回复我
god7d
2022-09-14 11:43:49 +08:00
@CaptainD 我们这边非常依赖架构师,他会对所有人的代码进行 review ,然后每个人也会持续不断的进行技术文档更新,因此有人离职几乎都不需要交接;技术栈的问题有人离职架构师会暂时接手这些工作。btw ,我感觉我工作三分之一时间都在写文档,这边的文档可以用海量来形容,从专利说明书到每个人的技术文档、代码笔记、通讯协议文档、技术对接文档、技术支持文档等等都需要开发来完成,而且是一直更新的
god7d
2022-09-14 11:46:59 +08:00
@shaojz2005 你说的很对,看楼上对 captainD 的回复,我们这边架构师就是你说的这种人,说这个架构师是整个团队的灵魂也不为过
lengyuqu
2022-09-14 11:57:07 +08:00
团队不大
1 ,推荐使用 gitea 作为代码管理工具,对配置要求低,甚至最后整个软件仓库都可以备份好。
2 ,推荐准备一台极空间 nas 作为文件服务,主要是文件的储存。这涉及到线上代码原版备份和文档备份。
lixintcwdsg
2022-09-14 13:23:52 +08:00
1. 小团队水平低。
2. 可以做 cr 并且管控这么细致的架构师,小团队用不起。
3. 小团队最重要的是产品然后还有销售。代码黑盒测可以接受就星。

最后,大公司小团队没办法讲,那属于大团队。

事实如此,真的小团队哪能这么养研发,太理想化了。如果有,那么是业务性质绝对的,本来就利润厚且稳定,而不是因为你这么开发管理导致的果。
theguagua
2022-09-14 15:15:25 +08:00
@VictorJing94 坐标一线,5 年怎么说 20+了,三年 15+差不多,抛开重大厂不谈
eric614802
2022-09-14 15:24:07 +08:00
jones2000
2022-09-14 20:28:26 +08:00
@daimubai 5 人稳定开发团队, 工资如果不对标大厂, 你前脚刚组好团队,后脚就被人挖走了。你如果 1 ,2W 招的人, 人员流动性很大,代码质量更不好管理,都是屎山。人员稳定才能确保代码质量比较稳定。
JellyDong
2022-09-14 20:43:02 +08:00
@wu00 可否分享下规范呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879876

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX