请容我老者打个圆场
在还没有AJAX技术的那个年代,UI还是被称做GUI的年代
(说真的,到现在我还真不习惯把GUI称做UI)
没有所谓的前端工程师,也没有后端工程师
只有软件工程师,大一点的公司才会有所谓的DBA配置
从Mosaic/Netscape年代开始,无论是HTML还是CGI,
都是由软件工程师来做,以现在的角度来看,这就是全端工程师
全端工程师一直都是存在的角色,从来就没有消失过,也没有被发明过
真正被发明出来的角色,反而是前端工程师与后端工程师
然而,无论是怎样的职称,怎样的技能树,重点还是在于:
解决问题
软件工程只是一个手段,用来解决问题的手段
既然重点在于解决问题,我并不觉得需要去切割一条清楚的界线
“啊这个是前端要做的啦”
“啊这个后端要先给我们啊”
请问这样是解决了问题,还是制造了更多的问题?
前面有篇文章中,提到了Quora上的答案,提到一本书的出版
需要各式各样的分工角色才会快
既然提到了书,那我也来提一本书
人月神话
人越多,分工越细,并不代表你的产出真的会快起来
当然我不否认的是,软件技术日新月异,很多事情必需要深入探究
专职分工,才会有更好的结果,然而,就像本串首篇所提
当你在一个领域上深造到了一定程度,自然而然一定会想要往跨领域走去
这是很正常的现象,前些日子我也有一位前端的同事来问我,
他想要点一些ML的技能树来玩玩,问我妥不妥
这样的方向个人觉得非常的正确,实际上透过学习不同领域的技术
对职涯、对个人发展、对软件工程的技术都会有莫大的帮助,可以看看这篇文章
https://thorstenball.com/blog/2019/04/09/learn-more-programming-languages/
谁说Web技术用不到C语言呢?在还没有WebAssembly的那个年代
https://developer.chrome.com/native-client/nacl-and-pnacl
这是唯一可以以接近Native方式榨取浏览器效能去做影像处理的一个手段
只是你有没有碰到而已,碰到的时候,你自然就得要去学
还是老话一句,重点在于解决问题,而不是制造更多问题
当然,我也必需要说,现在的职场中的确充满著不合理的职位
而这个职位的名称的确就是全端工程师,特别是新创产业
实际上他们要的就是“软件工程师”而已
过去几年中,我面试过非常多自称全端工程师的candidate
但我必须说实话,全端工程师分做两种,一种就是软件工程师
一种是“被全端”工程师,这类人通常都是新鲜人,学历可能不够鲜明
经历也不够丰富,不得不将自己的技能树点的很广,来想办法谋得一职一餐
通常“被全端”的,面试起来的确就会像板上各位大大所言
技能树虽然很广,但是很浅,抑或实际上偏向前端或是后端
我自己很少有面试过真正的全端工程师
要不就是后端工程师不熟悉浏览器Rendering Path的,不熟悉DOM操作成本的
要不然就是前端工程师被ORM惯坏的,不了解File system block size效能差异的
比比皆是,但就我来说,无论是前端还是后端技术,总括来说都是资讯科学的产物
你在这个业界时间久了,无论是“被前端”,还是自己决定跨领域,
自然而然一定会成为一位“软件工程师”
只是需要足够的时间,我过去面试的全端工程师,大多资历都太浅
若你想要往这条路前进,就必需要有花上很多时间的心理准备
这不会是一条安逸的选择,但你会在这段旅途中学会很多事情