在现代的工业体系下,任何工作都被拆分为流水线上的一环,如今的互联网行业更是从用户那里知道他们想要什么再到实际做出来,有足足六七个环节。
作为一个有写代码爱好的人来说,能选择的余地不多,唯有「后端工程师」和「前端工程师」,在过去的很长时间,我基本上呆在后端的领域,去做了很多后端相关的开发,自己也在后端方面有了更多的认识。
在新的 2019 年,我将会尝试让自己转向,成为一个前端工程师。接下来,我来说一说我这个选择的背后逻辑。
白子:离客户越近,其价值就越大。
提到择业,就避不开两个话题,企业的需求和员工的价值。一般来说,我们认为,员工的价值由他为企业带来的价值所决定。
这句话没错,那么,员工如何为企业带来价值?
员工可以帮助企业创造更好的产品,但是,这是价值么?
更好的产品本身并不是价值,其所带来的用户、客户才是真正的价值。
员工本身并不让企业盈利,相反,企业需要支付费用给员工。而客户则是支付费用给公司,帮助企业盈利。
从这个角度来看,离客户越近的人,越能产生价值,这也就是为什么我们会经常看到一个企业里,销售是赚钱最多的人,因为他们离客户最近,能够给企业带来实打实的价值。
白子:技术本身就是螺丝钉,只研技术,不过是一个螺丝钉,变成一个更粗的螺丝钉。
关注技术本身有没有坏处?当然没有,作为一个开发者,追求技术的卓越是应有的义务。但是,从企业的角度来说,只关注技术本身,意味着你的价值会不断降低。
技术再强,也是可以找到替代者的,区别仅仅是愿不愿意花那么多钱罢了。业务理解的深度,却是其他人无法轻易替代的。江山代有才人出,各领风骚数百年,技术迭代速度非常快,总会有新人出来,比你更加擅长技术。
白子:如今的前端更加接近业务本身,更具备价值
随着现代软件产品的高度流水线化,我们推崇的前后端分离、RESTFul API、GraphQL 让后端的工作越来越轻松,可以花费更多的精力投放在技术深度的探索,去研究更加深层次的优化问题,而不需要花费更多的心思在业务逻辑上去。
同样的,前端不得不承担起业务流程的开发,工作量大大加大。虽然有各种各样的组件库帮助前端优化了具体布局、界面上面的工作,但业务流程本身的复杂度并不会因为组件库的引入而简化。
在这种强前端重后端的模式下,前端承担了原本是后端的工作,让后端不再需要去理解业务逻辑,更加关注技术本身的内容就可以了。离业务越来越远,使得后端的话语权越来越小。
前端工程师本身负责的是客户可以看见的内容,这使得他们相比于后端工程师,有着更多的职业选择。
他们了解用户交互体验,可以从开发转换成为用户研究
他们了解用户使用方法,可以从开发转换成为销售
他们了解用户使用路径,可以从开发转换成为产品经理
而后端,由于专精于技术,其职业选择,也不过是从一门技术,转为另外一门技术罢了。
1
yuanfnadi 2019-02-06 18:30:38 +08:00 via iPhone 1
后端转前端的路过,觉得后端离业务更近一点。
开 prd 评审会时候赶紧关注的点完全不一样,前端大多只是后端业务接口的展示。 |
2
Itoktsnhc 2019-02-06 18:32:11 +08:00 via Android 1
emmm 你这里面好多话反着说也没啥毛病
|
3
xiqingongzi OP @yuanfnadi #1 如果是从后端转前端的话,会在前端岗位对业务的认识更深。后端目前在大厂更多往深去了。后端搞定功能接口,前端实现业务逻辑。至于说 关注点不同,我觉得是前端没有对自己岗位重要性有一个合理性的认知。
|
4
xiqingongzi OP @Itoktsnhc #2 在过去的开发模式里,后端对于业务的理解是更加深刻的。但是目前的大前端、富客户端的场景下,前端能够有更加深刻的理解。
|
5
Pudge1337 2019-02-06 18:53:43 +08:00 via iPhone
直接成为用户 岂不美哉
|
6
xiqingongzi OP @Pudge1337 #5 用户没钱拿啊
|
7
sdijeenx 2019-02-06 18:59:45 +08:00
有道理,可是离用户最近的不是销售么=3=
|
8
xiqingongzi OP @sdijeenx #7 忍不住写代码。所以选个相对更近的吧。毕竟我是一天不写代码的主。昨天还写了个项目放到 Github 来着
|
10
xiqingongzi OP @xiqingongzi 写错了,一天不写代码受不了。
|
11
glfpes 2019-02-06 20:42:30 +08:00 via Android
前端和业务联系更加紧密是不对的。例如风控领域,推荐领域,都需要理解业务的领域
|
12
byis 2019-02-06 20:49:09 +08:00 via Android
近一点 近一点
|
13
xiqingongzi OP @glfpes 目前的大势是这样的。不过,风控和推荐都是可以抽象成模型的,不是很好的例子。
|
14
sagaxu 2019-02-06 21:27:17 +08:00 via Android 3
餐厅服务员,超市收银员,银行柜员,都是系统内部离用户最近的人。
个人以为,离用户近本身毫无价值,离业务近本身也没有价值。在产品经理和项目经理眼中,技术不过是把需求翻译成代码的人,你的价值在于行业对这个工种有多需要以及这个工种的门槛高低。 |
15
everwanna 2019-02-06 21:33:48 +08:00 via iPhone 1
也不能一概而论,而是要看业务本身的关键价值在哪里,业务的核心竞争力来自哪里。有的业务核心在前端,有的在后端。通常庞大的业务,后端往往是核心竞争力之一,保证业务稳定可靠往往难度极大。
|
16
xiqingongzi OP |
17
xiqingongzi OP @xiqingongzi #16 这里的都不去是至这几个客户不去其他柜员那里。服务好自己的客户本身就是一种价值。
|
18
yangzhezjgs 2019-02-06 21:56:50 +08:00 2
|
19
yangzhezjgs 2019-02-06 21:59:11 +08:00
我觉得任何业务都是数据和交互组成,单纯看前端或者后端都只是一个部分,真正的理解要从全局思考把握整个流程
|
20
xiqingongzi OP @yangzhezjgs #18 👍
@yangzhezjgs #19 当然,没有任何事情是只需要一个前端就可以做好的。即使现在有很多工具来帮助前端做好。但是在这个时刻,前端的身份定位也并不简单是一个前端了。我自己是从后端转前端,有优势。哈哈。 |
21
gsls200808 2019-02-06 22:41:31 +08:00 via Android 1
离用户越近,数据失真越严重,这就是第三方调用最好还是后端之间直接对接的原因。
|
22
xiqingongzi OP @gsls200808 #21 这里的失真我不太明白?很好奇是什么意思。我一般来说,将第三方调用放在后台更多还是从安全角度考虑的。数据失真这方面真的没有了解太多。请赐教。
|
23
ryd994 2019-02-07 01:19:23 +08:00 via Android
什么狗屁逻辑
柜员拉到几个百万存单算什么?人家基金经理一天就可以拿到这么多新投资。 要不叫基金经理出来接客? 一个岗位有多少人竞争,这才是直接影响你工资的因素。 |
24
Bijiabo 2019-02-07 02:01:36 +08:00 via iPad
离用户、客户近不一定就能创造价值或者产生更多的价值。还是要看人。
举个例子,我们公司的销售虽然离客户近,但是大部分都很水,有的做了两三年的还不如上手两个月的前台妹子。 |
25
ericgui 2019-02-07 04:39:53 +08:00
我目前做的是一个内部使用的物流管理系统,我是前端,但每次开业务分析会议的时候我都不参加,为啥,因为老板觉得没必要。
一个非常水的 2 年 Java 妹子做后端,但她每次都参加业务分析会议。更要命的是,经常她指挥我来做什么什么。。。。 我的地位可想而知。 你想做这样的前端吗? |
26
xiqingongzi OP |
27
ericls 2019-02-07 08:05:51 +08:00 via iPhone
价值?
|
28
xiqingongzi OP @ericls #27 如果你从未表现过对业务有兴趣、有思考,老板为什么会浪费这个时间让你去参与业务相关的讨论?
|
29
ihciah 2019-02-07 08:33:24 +08:00 via iPhone
这个逻辑有点厉害。上一句说羊毛出在羊身上,下一句就得出拿剪子剪羊毛的人贡献最大?
不知道从哪开始吐槽了。在一个自由竞争的市场中,一个人带来的价值反映在其薪资上,薪资往往是由供求关系决定的。换句话说,大家都想做却没几个能做到的东西才是最有价值的。 |
30
ericls 2019-02-07 08:38:06 +08:00 via iPhone
@xiqingongzi 回错楼层了?
|
31
xiqingongzi OP |
32
lhx2008 2019-02-07 08:52:25 +08:00 via Android 1
首先,restful 也好,graphql 也好,都是规范,不意味就能自动化,减少工作量,graphql 甚至会增加后端的工作量。
另外,所谓的大前端,我认为也最多也就做到服务器渲染就行了,js 的弱点决定了它无法胜任复杂的后端逻辑,组件化不能简化开发似乎也只是在 js 里面最明显,从 jq 到 mvvn,webpack 改了又改,es6 语法糖加了又加,开发效率没啥变化。而后端(主要是 Java )早就已经利用接口自动代理,切面编程,依赖注入,注解注入,类的动态加载,高效的包管理,易用的测试框架,ORM 框架等等在保持健壮性的情况下简化开发流程。 虽然平常业务简单,可能给前端造成了一种后端业务我也写的错觉,但是一到了大型的高并发,高可用的后端项目,前端就无法胜任了。而且现在后端也很多转向基础设施的研究了。弱后端一说恐怕太过绝对了。 再有,离用户越近,越能创造价值。我虽然对此不敢苟同。但是即使成立,后端转前端的跨度也真的太小了。流水线作业不仅在后端存在,前端也一样。但是高级后端的工资比前端高,能不能说明后端的价值更高呢? |
33
lastpass 2019-02-07 09:50:58 +08:00
楼主的思想核心是:
不玩技术玩人性。 技术再好不如套路人性。 →_→这不是 tx 和坑钱页游,手游的套路嘛。 岗位的价值大小。从工资就直接体现了,真当老板蠢呀。 |
34
xiqingongzi OP @lastpass #33 差不多,技术会越来越不值钱的。
@lhx2008 #32 关于 1 会增加工作量,但是会降低对后端的需求量。总的来说,会降低后端这个岗位的需求 关于第二个问题,技术本身会越来越不值钱的 第三个问题:针对基础设施的研究是可以替代的。举个很简单的例子,曾经每个公司都需要有一个强力的 DBA 来 cover DB 的问题,现在不需要了。云服务商提供越来越多的工具给你,你不需要一个专业的 DBA 就可以解决 DB 的问题了。 第四个问题:后端转前端的未必很小。思维固化的影响远比我们想象的要打 第五个问题:关于高级后端的工资比高级前端的工资更高,我认为是两个原因 1. 没有足够好用的服务来替代。举个例子,我一直觉得像 CMS 这样的最基础的工具,需要一个后端来开发,直到我发现了国外的一个产品:Contentful,不需要一个后端了,你只需要关注业务、交互就可以了。后端在这篇文章里的核心问题在于越是走基础设施,你就离业务越远,替换成本就越低。因为技术本身是可以替换掉的。而且有大量的服务商等着替换掉后端。2. 历史遗留问题。大前端的概念兴起并没有多少年,我也不指望一两年就能超越后端数十年的积累,不现实。3. 绝大多数开发者都没有意识到自己岗位的优势到底是什么。 |
35
lastpass 2019-02-07 10:32:27 +08:00 via Android
|
36
xiqingongzi OP @lastpass #35 两极化严重,服务商依赖技术赚钱,业务商依赖业务赚钱。对于技术来说,取决于自己的定位,如果希望自己一直在技术走下去,尽早去大公司。如果去不了大公司,尽量别只研究技术。
|
37
baelish 2019-02-07 10:51:43 +08:00
上级领导就是客户
|
38
xiqingongzi OP @baelish #37 🤣直面客户
|
39
yanaraika 2019-02-07 11:06:43 +08:00
别贩卖焦虑了。行业的差距是存在的,但是前端和后端的差距没你说的那么大。指望着靠后端转前端就傍上所谓业务的大腿可能性还不如好好提升技术去大厂靠谱
|
40
xiqingongzi OP @yanaraika #39 并非贩卖焦虑,是自己对工作模式转变的思考。在大厂呆过,见过大厂的市面。
|
41
yanaraika 2019-02-07 11:37:37 +08:00
@xiqingongzi 没啥卵用。infra 笑笑不说话。
|
42
yanaraika 2019-02-07 11:40:46 +08:00
@xiqingongzi 只有“前端”和“后端”还是太 naive,data science, internal tools, platform, security, networking 照你这么说离业务远是不是都要完蛋了
|
43
xiqingongzi OP @yanaraika #42 纯技术有纯技术的价值,但是纯技术的可替换性更高。
|
44
sagaxu 2019-02-07 11:55:48 +08:00 via Android
@xiqingongzi #16 然并卵,任何一个银行,柜员都是收入最低的工种,也许有少数能吸储的,那也不是因为当柜员得到的资源,吸储资源多半来自职业之外。
目前大部分软件产品,业务主要在后端,大前端喊了倒是有十来年了,没见到实际落地。即便是游戏这种极其重视前端的细分领域,主程基本上也都是后端。 |
45
yanaraika 2019-02-07 11:56:33 +08:00
@xiqingongzi 不存在的。学艺不精哪一行都会被替代
|
46
xiqingongzi OP @yanaraika #42 纯技术只能从螺丝钉变成一个更粗的螺丝钉。你只有一条路可以走,就是让自己的螺丝钉粗到让别人无法替换。技术+业务可以让你从标准化螺丝钉变成异形螺丝钉,替换成本很高。因为很少有生产异形螺丝钉的。
|
47
chinvo 2019-02-07 11:57:38 +08:00
restful 和 graphql 咋就减少后端工作量了
这些知识交互方式,复杂业务逻辑不还是在后端? 如果你是说那种把数据库 CURD 暴露出来当 restful 的,在 restful 和 graphql 概念出现之前就已经有“后端”提供个 sql 接口直接让前端调的了 但是抛去这些,队列、3rd API 等不还是后端的工作?甚至为了 restful 和 graphql,后端还要想尽办法把这些东西变成一致性的接口暴露出来 菜才是原罪,不管是所谓的“大后端”还是所谓的“大前端”,只不过是在公司自身某方面薄弱的时候不得已搞出来的罢了 |
48
xiqingongzi OP @sagaxu #44 SaaS 服务、PaaS 服务、BaaS 服务正在不断兴起。我前一段时间去和 T 家一个做 Sereverless 的架构聊了聊。还不错。
|
49
yanaraika 2019-02-07 12:00:46 +08:00
@xiqingongzi 以为自己成了异形高价螺丝钉,其实是从一个还凑合的圆形螺丝钉变成了一个还没别的六角螺丝钉好用的劣质模仿品。
|
50
xiqingongzi OP @chinvo #47 菜是原罪说的好。
|
51
xiqingongzi OP @yanaraika #49 maybe,只能说个人追求不同吧。技术可以改变世界,但我不认为我自己是能够可以借助技术本身改变世界的人。
|
52
yanaraika 2019-02-07 12:05:13 +08:00
@xiqingongzi 祝好运。每个人都有自己擅长的方向,没有必要认为所有人都适合 /不适合某种路线
|
53
xiqingongzi OP @yanaraika #52 当然。不过我还是希望大家能够理解业务,听得到炮火,别离实务太远。这篇文章也是希望大家能够离业务近一点。
|
54
timle1029 2019-02-07 12:45:21 +08:00
还得看业务,AWS 算是够贴近用户了吧,都是后端直接跟客户 / support 交流。
很多时候『大前端』这么重要是因为你没发展到需要好好发展后端的阶段,这种情况下只需要最基础 CRUD,那后端自然会被淘汰 |
55
sagaxu 2019-02-07 12:50:55 +08:00 via Android
@xiqingongzi SaaS 减少后端开发需求量的同时,也减少了同等量的前端开发需求。PaaS 减少的是运维需求,在研发团队规模大于几十人的公司,后端本身也不会去做 PaaS 的事情。
你所忧虑的后端远离业务,在大部分后端看来,是梦寐以求的事情。没看见成天有人抱怨写 crud 业务逻辑又累又麻烦吗?一个公司能有多高比例的后端可以少写业务逻辑?我觉得最多 10%。而这不到 10%的不碰业务的人,往往是很多公司里职级较高,收入也最高的开发。这些人跳槽还更容易,因为没有业务壁垒,换一家业务不同的公司,自身的优势并不会归零。 |
56
lastpass 2019-02-07 12:59:34 +08:00 via Android
回复 @xiqingongzi 仍然无法苟同,你所说的服务商和业务商不是高度分工产物?这只能说明目前行业的庞大,更需要高度专精型人才。小作坊一个人全干很开心??至于你说去大公司小公司?不知道你所谓的大公司是否是有分工,小公司是没有分工的小作坊?
|
57
xiqingongzi OP |
58
orangeade 2019-02-07 16:11:26 +08:00 via Android
楼主的观点适用范围有限吧,
比如 to B 的普通 web 或者 app 开发,后端基本一门编程语言+一种数据库就能应付(并发量不高的话,缓存消息队列什么都不一定用到), 但是,toC 的很多行业,像云服务,API 服务,前端的作用就小很多 |
59
mamahaha 2019-02-07 17:17:13 +08:00
不论前端后端,大多数人都不是大神,都是搬砖头的。互相之间相比的话没啥好自卑的,也没啥好得瑟的。
前端大神对比前端小弟或者后端大神对比后端小弟,这样比较才能产生距离感。 |