請容我老者打個圓場
在還沒有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效能差異的
比比皆是,但就我來說,無論是前端還是後端技術,總括來說都是資訊科學的產物
你在這個業界時間久了,無論是「被前端」,還是自己決定跨領域,
自然而然一定會成為一位「軟體工程師」
只是需要足夠的時間,我過去面試的全端工程師,大多資歷都太淺
若你想要往這條路前進,就必需要有花上很多時間的心理準備
這不會是一條安逸的選擇,但你會在這段旅途中學會很多事情