大三上学期之前,自己偶尔会接一些 Web 项目来做。最初前后端开发由自己完成,一方面是学习新技术,另一方面自己可以取得更多利润。
大三下学期之后,对于新项目,自己会逐渐将其分派给身边小伙伴来做,TA 们也需要从 0 学习的过程,我便一步步引导 TA 们来学习,目前有两位小伙伴的开发技能,我是较为满意的。
在分派项目时,我会与 TA 们沟通清楚具体每一条需求,并定期审计 TA 们的代码、沟通开发进度。通常有三种不能按时完成需求的情况:技术尚未达标、需求不清楚、偷懒。
因技术问题导致需求未能完成的,我会分析该需求是否可以用一些工具库来协助实现。如果可以,那 TA 就知道原来还可以使用现有工具来完成,但是,这种方法需要注意引导 TA 不能依赖第三方库,否则容易偷懒,最好引导 TA 主动阅览优秀工具库的源码;对于不能用库来协助实现的,那么会先询问 TA 的思路,并与 TA 探讨其优缺点。
因需求不明确导致无法按时完成的,那需求沟通者负有主要责任,当然,作为开发者也应在不明确需求时,及时询问,避免返工。
因偷懒导致需求未能完成的,作为管理者需要思考深层次原因,通常有两种情况:对开发无感;因开发周期过长且激励不够、让 TA 看不到路尽头。
对于前者,这是一个硬性问题,我无法做到鼓励对方去做 TA 不喜欢做的事情,这不可强求。至于后者,我便会偶尔邀请 TA 出来一块吃饭,顺便聊聊项目的事情;又或者对于某些项目采取按周结算的方式,与开发者约定时薪,TA 只需每天将做的事情以及花费时间记录在「石墨文档」中,每周日晚上我会进行结算。但注意,按周结算需要与开发者约定好:记录的时间不应包含因技术学习所花费的时间。
近期的一个多人协同(3人)项目即将收尾,在此做一个小结。
业务需求
沟通清楚需求非常重要,开发者清晰业务逻辑将有效避免返工。前期工作要做足,即确定清楚具体需求,越详细越好;花费一定的时间制作原型图,但一定要尽可能考虑周全,做到开发时不会大改;与开发者沟通清楚,让开发者了解业务。另外,一定要与客户沟通清楚某一个具体版本的需求,减少客户任意修改需求的问题。
沟通工具
大家起初使用 Slack 作为项目沟通工具,但很快从 Slack 又迁回了微信,或许是甲方主要使用微信群的原因。但使用微信群效率过低,尽管只有3人开发,但微信群消息过多以及受到其它微信消息影响,这会导致历史消息很容易被错过。
之前在远程团队 Team247 时,大家主要通过 Slack 进行交流。因 Slack 可以方便地就着某一个话题进行讨论,所以合理使用它,则在群聊 Channel 中不会看到过于冗长、繁琐的消息。一个问题一个板块 Thread,干净清晰,方便查看。
代码约束
开发项目时,应统一代码规范、文件组织形式,较方便的方法是使用 VS Code 作为 IDE,并配置 .vscode 文件,这样大家只要使用 VS Code,就无需过多担心代码规范不统一。虽然不同开发者对于 IDE 喜好不一,但我认为大家当前目标是完成这个项目,那么为了提高开发效率,统一使用相同 IDE 也可以理解,不能在单纯考虑个人因素。
个人情绪
开发者在开发过程中,应减少主观情绪。作为管理者发觉到开发者有情绪时,应思考为什么 TA 会有不良情绪,是因项目原因还是 TA 受到其它事情影响?无论哪种原因,我们应该与 TA 进行适当的沟通并给予一定的帮助。
开发费用
作为管理者应考虑到:大家一起做项目,目的之一就是赚钱。开发者作为项目实现者也将付出很多,所以在「钱」这件事上,要舍得给、要给足。TA 开心,工作效率变高,那么项目开发便会相对顺利,这是一件双赢的事情。
对于开发者,拿到了应该拿的、甚至超过 TA 预期的报酬,TA 会对你产生信任;作为管理者,自己虽然拿的相对少了一些,但是你获得了别人的信任以及好感,这是比钱更重要的一件事。
暂时就聊这么多吧 :)