背景
2022年6月,我加入了一家初创企业,然而公司的老板在技术和管理方面并不擅长。
仅凭对实体运输行业的热情和一些不切实际的自信,老板便开始了创业之路。由于种种原因,公司经营陷入了困境,最终导致了公司的解散。
当时,由于我对公司情况了解不足,也做出了草率的决定加入了这家公司。随着公司经营困难的加剧,我甚至未能收到最后几个月的工资。
老板当时的期望是,我们能够尽量压缩人力成本,迅速开发出适用于Android和iOS平台的App,以便尽快启动公司的运营。
初期的技术选型
当时,我们的团队仅由一名新毕业的前端开发者和一名之前招聘的UI设计师组成,连基本的人事和测试人员都尚未配备。
鉴于公司的实际需求以及我个人的技术背景(主要集中在前端和NODEJS领域),我们决定采取以下技术方案:选择UNI-APP作为APP的开发框架,其跨平台特性使得我们可以同时兼容多个终端,并为未来可能的小程序开发预留方案。
这一选择主要是出于快速实现功能的考虑,优先解决从无到有的问题。
在后端开发方面,我们选择了EGG.JS结合MYSQL的方案。EGG.JS的开发速度相对较快,且由于其行业应用相对较小众,预计不太可能遇到严重的性能问题。此外,EGG.JS对于团队成员来说学习成本较低,后期如果需要过渡到MIDWAY.JS也较为方便。
对于运营后台的开发,我们采用了ANTD-VUE框架,这主要是为了保持与UNI-APP技术栈的一致性,从而降低技术转换成本。
总之,初期我们决定采用EGG.JS + MYSQL + UNI-APP + ANTD-VUE的组合,快速开发两个APP和一个运营后台,以解决从0到1的问题。
关于APP开发技术方案的选择,考虑了多种方案,如纯原生开发、FLUTTER、UNIAPP、REACT-NATIVE/TARO等。
考虑到当时的情况,纯原生的开发方案需要招聘新人员,并且两端需要分别开发和测试,这会增加资金和时间成本,因此被老板所拒绝。
FLUTTER虽然是一个可行的选择,但要么需要从头开始学习,要么需要招聘相关人才,相对于纯原生方案来说并不是最优选择。
REACT-NATIVE/TARO与UNI-APP在开发效率和难易程度方面较为相似。最终,考虑到团队成员的熟练程度以及开发效率等因素,选择了UNI-APP。
关于为什么选择EGG.JS作为后端开发框架,除了技术方面的考虑外,经济因素也起到了关键作用。虽然JAVA、PHP、GO等成熟的后端开发方案在技术上可能是更好的选择,但对于我们当时的团队和预算来说,并不是最经济的方案。
EGG.JS的开发相对简单快捷,团队成员对其也较为熟悉,这降低了新成员的学习成本。同时,对于已经具备一定JS水平的开发者来说,也能够快速掌握EGG.JS后端的开发。
因此,从技术和经济两方面综合考虑,EGG.JS成为了我们的最佳选择。
中间的各种折腾
在项目的初期阶段,开发工作进行得相对顺利,按时完成了开发、测试以及上线等环节。
然而,尽管我们按照既定的时间表完成了这些任务,但业务的运营并未如预期般迅速展开,盈利目标也远未达成。
在实际运营过程中,团队遭遇了一系列挑战和延误。
面对运营上的困难,老板寻求了多位专家的意见,这些专家与项目的实际内容并无直接关联。他们提出了一系列关于业务和用户界面(UI)的建议,导致我们不得不频繁修改已完成的工作。
此外,新加入的产品团队还决定推翻原有的设计,要求从头开始重新开发。同时,一位非全职的领导也提出了要招聘原生开发和JAVA开发人员的建议,但并未给出明确的理由,只是道听途说地认为这样做会有好处。
这些变化导致我们不断面临修改产品、设计和代码的需求。经过多轮讨论和意见交换,最终保留了原有的技术方案和前期工作成果。为了满足新的需求,在后续阶段增加了系统升级(1.1版本)、UI升级(2.0版本)、开发小程序版本、开发新的配套系统(小程序版)以及相关的后台开发、即时通信服务和其他小功能开发与升级。
这些新增需求进一步增加了我们的工作量和复杂性。
在项目进度方面,老板时而要求加快进度以增加人手,时而又无缘无故地要求裁员,这使得整个团队感到困惑和无奈。尽管我们努力协调各种事务、站在公司的角度思考问题并投入大量精力编写代码,但似乎仍无法改变现状。
为了应对这些问题,我们在后期对技术方案进行了调整。改变了APP的打包方案,并在新的配套系统中采用了MIDWAY.JS来开发新业务。这一决策基于团队对EGG.JS的掌握程度,旨在为后续开发制定更规范的流程。
此外,还加强了内网管理,共用了NPM包,并开发了业务组件库以规范代码和开发流程。这些调整旨在提高开发效率和质量,以应对当前和未来的挑战。
人员招聘,团队的管理
人员招聘的感悟:
对于小公司来说,招聘合适的人才确实是一大挑战,尤其是当预算有限时;
值得庆幸的是,我们选定的技术方案对JS能力要求较高,这使得前后端开发工作可以相对灵活地调整,有效避免了资源的浪费。
团队管理的心得:
在小公司发展的初期阶段,应坚持以事实为依据,业务为核心的管理方向;
全栈开发模式对于小团队而言是个不错的选择,它有助于减少任务分配的不协调,从而提高开发效率;
制定一套推荐的代码规范是非常重要的,这套规范应基于团队成员的日常编码习惯,目标是提升代码的整体质量;
要求团队遵循标准的开发流程,从产品评估到任务分配,再到技术评估、开发、测试、上线等环节,都应有明确的指导和监控,以避免流程问题导致的混乱和损失;
有效的考核体系应包括可量化的指标,如任务完成率、文档编写质量、线上问题数量等,同时还应强调规范的开发行为,如避免手动修改数据库等;
鼓励团队成员分享经验和知识,认为每一段工作经历都应带来成长和收获;
及时沟通和反馈对于团队的成功至关重要,它有助于了解每个成员的想法、掌握开发进度,以及解决工作中遇到的难点。
总结
珍惜每一次的经历,从中汲取经验教训,因为人生的每一步都有其独特的价值。