Laravel 和 Spring Boot 两个框架比较创业篇(二:人工成本)

前面从开发效率比较了 Laravel 和 Spring Boot两个框架,见:Laravel 和 Spring Boot 两个框架比较创业篇(一:开发效率) ,这一篇打算比较一下人工成本。

本文说的人工成本是狭义的技术支出成本。当然人工成本不单纯是开发人员的人工成本,同时包含了团队协作管理、架构设计、运维等方面的人工(团队)成本。

本文从以下几个维度分析:

  • 程序员
  • 技术管理

程序员

相信这个是大家比较关注的维度,很好理解,就是要根据需求撸一套产品出来,无论是后端、前端、APP还是小程序、中台,都要士兵冲锋前阵,也就是靠程序员实现出来,所以这个是刚需。

相信很多猿都会认为自己是全栈工程师,后端OK、前端也OK、APP也能撸,微信小程序也没问题,这样的人还是不少的,但是大部分是停留在框架或者类库的使用上,称为 “github工程师”,必然会有自己比较精的一个端。

例如前端的Single Page Application,一般现代的猿对JavaScript语言都会了解,如果对Vue技术熟悉,配合Vue Route、Element UI、Vuex 就能撸出一个像模像样的SPA,如果对 React 语法和单向数据流思维熟悉,Dvajs + Ant Design也能撸出一个绚丽的中台系统。

对于Android开发,熟悉 Java 语法,了解 Android 四大组件,不需要对Android Framework 内核、NDK 有深入的理解,只要有大牛工具库的加持,例如Retrofit、EventBus、GreenDao、,也能撸出一个看起来还不错原生Android APP。何况还有Flutter!

现代框架的高度封装特性使生产力获得提高,同时容易让开发人员对底层原理失去探索需求,这种失去不但体现在开发人员本身,同样也体现在软件企业在人才筛选上为了降低成本而对技术要求做出让步。

大厂考底层原理和算法、初创看项目经验,这似乎成为了一种行业规律。

不扯远了,回到找猿的话题。

Spring Boot 猿

  • Java 猿多,优秀的 Java 猿难找,有项目思路快速出项目的Java程序猿太难找
  • J2EE 猿多,优秀的 J2EE 猿太难找,熟悉 J2EE 体系、精通 Spring 全家桶的猿更是难找
  • 精通 J2EE 而且能适应 Spring Boot 开发思维的猿可遇不可求

J2EE 非常庞大复杂,知识点数量不亚于一本字典,Spring Boot 配置方式从传统的xml定义向Java类注入转变,现在很多J2EE 猿仍然是起手一个裹脚布似的xml配置文件,一看洋洋洒洒上千行,看起来牛逼,其实只是刚把项目运行起来而已,九九八十一关才过了一关。也正是因为传统J2EE的这个特点,Java 给人一种开发速度慢、成本高的印象。

Java Web 体系就像饮食业

J2EE饭店内,只见顾客光着膀子走进饭店,和工作人员说道:我要红色的衬衣,扣子要六角形的,鞋子要皮鞋黑色的,吃饭的筷子要长度16cm,木头做的,吃饭的椅子要四只脚的,垫子厚度1cm,6号桌子…,一个小时后一切定制完毕,可以吃饭了。

Spring Boot饭店内人不多,迎宾在声嘶力竭的呼喊:“南来得北往的老少爷们,快来看看瞧瞧啦”,一个顾客走过来,迎宾马上把他迎进大厅领到空桌坐下,服务员拿出菜单,问道:“您要吃点什么呢?”。顾客露出惊讶的表情:“我还没有定制我的衣服、筷子、椅子呢?”。服务员道:“我们都准备好了,每个顾客都一样,16cm的筷子,四只脚的椅子,1cm垫子,不需要定制呢,您可以直接点菜用餐”。顾客停了一会说道:“垫子我要1.5cm的,其他的就这样吧”,服务员:“好嘞”。顾客点了一个驴肉火烧,15分钟后吃饱了满足的离开了店里,喃喃说着:“以后再也不去J2EE饭店了,还是这里方便。”

因此我们要找的不是Java猿,也不是J2EE猿,而是Spring Boot猿。

价格方面

  • 6k可以招到Java猿,但是不能指望他能独当一面,独立负责你的项目开发,而且要花费精力和资源去培训
  • 10K能招到一个会 Spring Boot的猿,J2EE熟不熟悉就不知道了,你猜
  • 15k能招到一个靠谱的J2EE猿
  • 20K运气好的话能够招到一个懂 J2EE 而且能用Spring Boot框架独立开发后端的靠谱猿

貌似成本不低。

Laravel

  • PHP猿很多,等等,先让我们过滤一下,啥?会Discuz、DeDeCms、帝国Cms?用原生PHP开发一个项目会吗?不会?那算了
  • 遵守规范、代码漂亮的PHP猿少,PSR是啥?我也不知道?呃…
  • 自制力强的猿少,咦,这个功能加个全局function就搞定了,就这么干。这么简单的业务逻辑也就100多行,我逻辑思维能力超强,直接写在controller方法里吧,看我开发速度多快。团队成员:呃…
  • PHP猿怼道:我会ThinkPHP,你说 Laravel 搞得和Java一样复杂,你干嘛不去找Java猿,国内 Laravel 人才还真不多

价格方面

  • 3k可以招到“CMS PHP猿”
  • 6k可以招到PHP猿,同样不能指望他能独当一面,独立负责你的项目开发,而且要花费精力和资源去培训
  • 15K也是能够招到一个靠谱Laravel 猿,当然这里面的运气成分很大,嗯,天时地利人和,缺一不可。

技术管理

啥?技术管理是啥?CTO吗?小项目还折腾啥CTO?

其实不然,当开始一个项目的时候,产出的软件不可能只是一个端,至少需要后端和前端,或者APP端、小程序端。

技术管理的作用是协调各个端的交互和接口规范,还有项目开发里程碑和任务安排 (注意不包含架构,在初创快速实现的强烈需求下,架构先不考虑)。我们不可能让专职后端来制定APP端的里程碑,同样也不能够让专职APP客户端来定后端的里程碑。必然会有一个技术比较全面的枢纽人物,我认为这是项目快速推进的基础,同样也可以负责测试和code review。尽管这和产品经理有点类似,对于产品规划较全面的初创来说,是可以合二为一的。出于成本考虑,我们需要低成本招到这样的人来统揽项目技术全局。

后端在产品体系中属于重合度最高的端,需要和每个端产生交互,最低成本的方式是将技术管理这部分成本附加到后端,说人话:“找一个符合前面所述开发要求的全栈后端来承担技术管理工作”。

个人总结(按照通用水平,大神级别的不在讨论范围内):

  • 对于专职后端:Laravel 人工成本要略低于 Spring Boot
  • 对于技术管理:脚本系(PHP、Python、JavaScript)的猿往往更容易向全栈发展,J2EE 这种企业级巨无霸框架,分工概念很强,比起脚本系语言全栈工程师就显得更少。而且既能胜任J2EE+Spring Boot 开发,又是全栈的猿,初创还是不要考虑了,太贵。
  • 从PHP猿中找到符合初创技术管理要求的,概率要比从Java猿里面找高一些,参考对象多,议价能力自然也高些。
  • 在不考虑系统架构优劣的前提下,人工成本方面 Laravel 比 Spring Boot 更有优势

最后再多嘴说一句初创的软件系统架构问题:我接触过很多初创,而且还把软件系统架构看的很重,这是一个严重的误区。正如网友们说的,Laravel 存在性能问题,为了做大之后流量大了服务不挂掉,嚷嚷着要上微服务。

产品上线了没?产品都还没上线,要啥高并发,要啥高性能,要啥微服务。

初创项目一般流量不大,也不是计算密集型服务,性能瓶颈不会是在PHP框架本身,没有必要纠结是 C/C++JVM谁执行速度快,PHPC慢了多少个数量级,这些毫无意义。当你有了这个性能需求的时候,如果公司还没那个资金去高薪找人才,那商业模式真的是没谁了!

还有微服务,一个街边小摊嚷嚷着要按照阿里巴巴的运营模式来搞,其实这样没啥问题,自己选的路,冷暖自知吧。微服务天生就是分布式,分布式本身就是一个非常大的系统,不是初创适合玩的。就像跨国运营战略适合阿里这种体量的公司,因为业务复杂度已经到达了某种程度,经过评估是对公司短、中、长期发展都是有利的。街边小摊套用这种模式,只会被复杂度困住手脚,当然当您的小吃迈出国门,走向世界,手底下几千人,战略模式自然就有了。当软件复杂度和项目业务量到达一定程度,有了服务拆分和分布式需求,微服务自然就有了,初创要做的可能是关注扩展性,并不是微服务。

小流量前提下谈高并发和架构就是耍流氓!您要的可能不是架构,而是扩展性!