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慢了多少个数量级,这些毫无意义。当你有了这个性能需求的时候,如果公司还没那个资金去高薪找人才,那商业模式真的是没谁了!

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

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

原文地址:https://www.cnblogs.com/ymstars/p/10508175.html

时间: 2024-11-05 22:07:17

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

spring cloud和spring boot两个完整项目

spring cloud和spring boot两个完整项目 spring cloud 是基于Spring Cloud的云分布式后台管理系统架构,核心技术采用Eureka.Fegin.Ribbon.Zuul.Hystrix.Security.OAth.Mybatis.Ace-cache等主要框架和中间件,UI采用Bootstrap.jquery等前端组件. spring boot项目是使用spring boot + thymeleaf 开发个人博客项目. CSDN下载地址: https://do

【spring boot】8.spring boot的日志框架使用

在继续上一篇的Debug调试之后,把spring boot的日志框架使用情况逐步蚕食. ============================================================================================= 简介:spring boot的默认日志框架Logback SLF4J--Simple Logging Facade For Java,它是一个针对于各类Java日志框架的统一Facade抽象.Java日志框架众多--常用的有

Spring Boot 2.X(一):入门篇

什么是 Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架遵循"约定优于配置"的思想,清除了原先使用Spring框架的那些样板化的配置,继承了原有Spring框架的优秀基因,从而帮助开发者快速开发应用. SpringBoot的特性 总的来说就是简单.快速.方便. SpringBoot的核心模块 创建SpringBoot项目 本文使用开发工具为eclipse 官网Maven构建

Spring Boot 入门之缓存和 NoSQL 篇(四)

原文地址:Spring Boot 入门之缓存和 NoSQL 篇(四) 博客地址:http://www.extlight.com 一.前言 当系统的访问量增大时,相应的数据库的性能就逐渐下降.但是,大多数请求都是在重复的获取相同的数据,如果使用缓存,将结果数据放入其中可以很大程度上减轻数据库的负担,提升系统的响应速度. 本篇将介绍 Spring Boot 中缓存和 NoSQL 的使用.上篇文章<Spring Boot 入门之持久层篇(三)>. 二.整合缓存 Spring Boot 针对不同的缓存

Spring Boot + Log4j2 日志框架配置 (Maven)

参考Spring Boot官方文档 日志部分 Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志, 还包括适当的Logback路由, 确保其他的日志框架(Java Util Logging, Commons Logging, Log4j, SLF4J)都能正常使用 Sping Boot文档的 26.5 Custom Log Configuration 章节,说明了自定义日志配置方法 多样的日志系统可以通过 添加适当的日志框架库到classpath

spring boot使用定时器框架Quartz案例

一.你需要在项目中加入quartz-all-2.1.7.jar的jar包(我这里使用spring boot环境) 二.然后需要新建一个类去注册定时任务和销毁定时任务,这个类需要实现ServletContextListener的接口中的contextInitialized和contextDestroyed方法 三.接着就是去定义你自己的定时任务了,也就是再去新建一个类去实现Job的接口中的execute()方法,这个方法就是你在定时任务执行的时候要执行的内容 1, SimpleTrigger 指定

Spring boot 两种热部署方式 springloader 和 devtools

什么是热部署? 热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用.在平时编写代码的时候,你会发现我们只是简单把打印信息改变了,就需要重新部署,如果要改变这样的方式,就需要用到热部署springloaded. 使用方式,在项目中的pom.xml中plugin里添加依赖: <dependencies> <!--springloaded hot deploy --> <dependency> <groupId>org.springframework&

Spring Boot 两步集成 日志收集ELK与分布式系统监控CAT

日志收集ELK与分布式系统监控CAT Spring Boot项目集成方法 一. pom.xml引入starter依赖 <dependency> <groupId>com.louis</groupId> <artifactId>ylog-spring-boot-starter</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> 二. boots

Spring Boot开发Web应用之Thymeleaf篇

前言 Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持. 正文 Spring Boot提供了spring-boot-starter-web为Web开发予以支持,spring-boot-starter-web为我们提供了嵌入的Tomcat以及Spring MVC的依赖. 项目结构推荐 一个好的项目结构会让你开发少一些问题,特别是Spring Boot中启动类要放在root package下面,我的web工程项目结构如下: root package结构: