前面从开发效率比较了 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 体系就像饮食业
因此我们要找的不是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 猿,当然这里面的运气成分很大,嗯,天时地利人和,缺一不可。
技术管理
其实不然,当开始一个项目的时候,产出的软件不可能只是一个端,至少需要后端和前端,或者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
谁执行速度快,PHP
比C
慢了多少个数量级,这些毫无意义。当你有了这个性能需求的时候,如果公司还没那个资金去高薪找人才,那商业模式真的是没谁了!
还有微服务,一个街边小摊嚷嚷着要按照阿里巴巴的运营模式来搞,其实这样没啥问题,自己选的路,冷暖自知吧。微服务天生就是分布式,分布式本身就是一个非常大的系统,不是初创适合玩的。就像跨国运营战略适合阿里这种体量的公司,因为业务复杂度已经到达了某种程度,经过评估是对公司短、中、长期发展都是有利的。街边小摊套用这种模式,只会被复杂度困住手脚,当然当您的小吃迈出国门,走向世界,手底下几千人,战略模式自然就有了。当软件复杂度和项目业务量到达一定程度,有了服务拆分和分布式需求,微服务自然就有了,初创要做的可能是关注扩展性,并不是微服务。