背景

简单来说,我在2022年6月加入了一家小型创业公司。这家公司是一家刚起步的企业,老板对技术和管理都不是很了解。他充满激情,依靠对实体运输行业的了解以及盲目自信,决定创办这家公司。然而,随着时间推移,公司遇到了经营上的困难,最终导致了公司的解散。

当时,我毫无疑虑地加入了这家公司,但我没有意识到后来公司会遇到的问题,甚至没有支付最后几个月的工资。

初期的技术选择

当时,我和一个刚刚毕业的前端开发以及一个UI设计师一起工作,公司资源非常有限,甚至没有专门的测试人员。

鉴于公司的需求和我自己的前端和Node.js开发经验,我决定采取以下技术方案:

我选择使用uni-app来开发App,因为它能兼容多个平台,同时为以后可能的小程序开发提供了预备方案; 我使用egg.js加上MySQL来开发后端,这样做能够加快开发速度,而且由于我们所处的行业相对小众,暂时不太可能面临性能问题。此外,我考虑过后续可能过渡到midway.js; 为了与uni-app的技术栈保持一致,我选择了antd-vue来开发运营后台,这样可以节省后续的技术转换成本。

因此,在最初的阶段,我选择了egg.js + MySQL + uni-app + antd-vue这一技术组合,以便迅速地从0到1解决问题。

关于App开发技术方案的选择

在选择App开发方案时,有很多选择,比如原生开发、Flutter、uni-app、React Native / Taro等。我在这里做了一些取舍。

原生开发需要更多的资源投入,包括时间和人力,这在当前情况下是不可行的; 虽然Flutter相对来说比原生开发要好一些,但要么需要我从头学习,要么就需要招聘专门的人才。尽管相对于纯粹的原生开发来说,Flutter是一个更好的选择,但并不是最佳的解决方案; React Native / Taro和uni-app比较类似,考虑到我对uni-app的熟悉程度、开发难度和效率,我最终选择了uni-app。

为何选择egg.js作为后端

虽然技术方案的选择通常不仅仅取决于技术本身,但也需要考虑到成本因素。因此,我最终选择了egg.js作为后端技术。

尽管Java、PHP、Go等成熟的后端技术方案在技术层面上可能更优秀,但在老板的经济考虑下并不适用; egg.js的开发相对简单、高效,而且我个人对其比较熟悉。同时,新成员学习成本也较低。对于一些已经掌握一定JS水平的开发者来说,学习egg.js后端开发也相对容易。

中间的波折

尽管最初的开发进展还算顺利,按时完成了开发、测试和上线,但公司的运营却遇到了很多问题。在这个过程中,我们经历了许多波折。

老板遇到困难时,会找一些与我们项目毫无关系的专家,不断提出业务和UI上的建议,从而导致不断地修改; 期间,我们甚至不得不重新开发一些新产品,放弃原有的设计; 还有一位兼职领导坚持要重新招聘原生开发和Java开发人员,尽管并没有充分的理由支持这个决定。

这导致我们不断地修改产品、设计和代码。虽然经过反复的讨论和坚持,我们最终保持了最初的技术方案,并保留了前期的工作成果。此外,还新增了一些需求:系统升级1.1、UI升级2.0、小程序版本开发、新的配套系统(小程序版本)、相关后台开发、添加即时通信服务以及其他多个小的功能开发和升级。

中间,老板在加快进度的同时还频繁招聘和开除人员,这让人感到非常无奈。尽管我们为了解决公司的运营问题不断努力协调各种事务、全面考虑问题并努力编码,但情况仍未好转。

后期技术调整

后来,我们进行了一些技术方案上的调整,包括:

调整了App的打包方案; 在新的配套系统中,开始使用midway.js开发新的业务功能。这个决定基于我们团队对于egg.js的熟悉程度,并为了后续的开发规范做好准备; 在内网管理中引入了公用npm包,以便管理业务组件库; 对代码和开发流程进行了规范。

人员招聘与团队管理 人员招聘

针对当时的人员招聘,我有以下一些体验和看法:

小型公司的人员招聘相对来说是比较具有挑战性的,尤其是当薪资待遇无法和大公司相媲美时; 幸运的是,我们选择的技术栈要求对JavaScript掌握程度较高,这使得前后端开发的分工更加灵活,也方便了开发资源的调配。

团队管理

从我的角度来看,对于小团队的管理需要考虑以下几个方面:

小型公司初创阶段,务实而为业务驱动; 推崇全栈开发模式,避免任务协调不畅,减少资源浪费; 设立推荐的代码规范,参考日常编码习惯,旨在使代码更加规范; 强调按照规定的流程进行设计和开发,避免流程混乱造成的管理困难和公司损失。

这个流程通常是:产品评估 -> 任务分配 -> 技术评估 -> 开发 -> 测试 ->代码评审 -> 上线 -> 跟踪处理线上问题。

制定可量化的考核标准,例如任务截止日期的完成情况、核心流程开发文档的书写情况、线上bug数量等; 鼓励团队成员相互分享、互相学习,因为每一段工作经历都应该是一个进步和提升的机会; 及时沟通反馈,共享个人的想法、把握开发进度以及共同面对工作中的难题。

总结及创业公司建议

在选择加入创业公司时,确保公司的老板是可靠的,避免遇到那些总是喜欢夸夸其谈但实际行动不足的人,或者是那些缺乏决断力和主见的人。这一点非常重要,因为在这些情况下,很可能无法顺利实现既定目标;

如果老板是可靠的,即使当前的项目遇到困难,也有可能在将来的其他领域取得成功; 除了技术选择,还要始终关注如何盈利。在当今的融资环境下,如果公司不能自行实现盈利,很可能难以维持下去; 专注于核心问题,解决主要矛盾,业务永远是最重要的。其他如技术选择、代码规范等可以在后续解决;

保持与老板的及时沟通,老板通常从更高层面考虑问题,他们可能会有不同的想法,所以要经常与他们交流; 每一段经历都应该有所收获,因为人生的每一步都具有意义。