近幾年來,有個神奇的職缺名稱,偶而會出現在眼前──全端開發者(Full Stack Developer)?

如果仔細看看職缺描述中要求的技能,有時真會令人倒吸一口氣,而在需求的另一頭也出現了供給,有定位為全端的開發框架,有n週打造全端能力的課程,也有打著1到n年全端開發經驗的求職者出現?

後端、前端到全端

全端開發者這名詞,到底是從哪出來的呢?就可找到的資料來看,目前多指向〈What is a Full Stack developer?〉(http://goo.gl/EVMa32)這篇文章,在當中,Laurence Gellert提到有次在OSCON(Open source convention)中,有位Facebook員工告訴他,他們只雇用全端開發者,同樣地,Laurence Gellert也好奇,全端開發者到底是指什麼?

某些程度上,我還真的有點懷念早期寫Web應用程式的年代,那時還在瀏覽器大戰,JavaScript還被視為雞肋,CSS才剛被從HTML中劃分出來,想寫個Web應用程式時,開發者只要別寫出義大利麵式(令人懷念的形容詞),也就是HTML與程式語言(Java、PHP、ASP?)夾雜在一起的頁面,然後安裝個伺服器、加上個資料庫、下點SQL就可以了,太專業的美術頁面,就交給設計師,然後教他們幾個頁面邏輯的Tag怎麼安插就可以了,多麼美好單純的年代。

然而,JavaScript從雞肋變成了翻身的鹹魚,Ajax的概念再度地被重視與實現,CSS功能越來越強悍,瀏覽器速度越來越快,Web應用程式呈現給使用者介面設計越來越複雜,複雜到得產生另一個專門處理使用者這端程式設計相關事務的工作,也就是前端開發者(Front-end developer),前端開發者能與設計師合作,甚至有些設計師也學起了前端開發技術,相對來說,仍舊在伺服端上搞些架設伺服端、開發程式,存取資料庫之類的就被歸類為後端開發者(Back-end developer),他們會負責與前端開發者溝通合作。

本來在後端這塊,也已經發展為很龐大的技術體系(看看Java那個年代的東西就知道了),更何況,前端使用的是有別於後端的其他語言與生態,基於專業分工,後端、前端這樣的區分發展,其實還蠻能令人接受的,不過,現在應用程式開發顯然出現了一種需求,必須有能夠包辦前端、後端,一手完成整個應用程式的開發者,相信你我都知道,確實有能一手完成整個應用程式的人存在,這種人似乎就被稱為全端開發者?

框架上的Full Stack

那麼,全端開發者到底要懂哪些技術?就〈What is a Full Stack developer?〉中列出的而言,必須要懂伺服器、網路、主機環境、資料塑模、商務邏輯、API層、MVC、使用者介面等,假設全端開發者真有辦法運用這麼多知識體系,那麼,他最重要的技能之一,應該不只是個別瞭解這些技術,而是能進一步將這些不同的知識體系整合在一起。

實際上,整合不同技術體系需要些功夫,而有些框架做了這類的工作,讓整合的工作變得輕鬆,如果將技術先限縮到Java這一塊,相信不少Java開發者,對於Full stack這名詞,可能有似曾相識的感覺,在十幾年前Java生態圈百花齊放的那個年代,如何整合不同的程式庫與框架,成了一大難事,Spring對Struts、WebWork、JSF、Tapestry、SpringMVC,以及對Hibernate、iBATIS等的整合,應該是許多Java開發者熟悉的,其他如AppFuse、JBoss Seam等,早在2006年,就有人稱這類整合工具為Full Stack框架。

當然,單純只是整合Java這些技術,應用程式開發也是顯得笨重,笨重到出現了許多對手想要簡化以侵蝕Java市場,像是Rails就提供了整套且簡化的Full Stack,熟悉Rails的開發者,可以很快地完成整個Web應用程式,甚至包辦許多前端的功能,有些全端開發訓練課程,就是以Rails為號召,而Rails的開發模式也影響Java開發生態圈,因而有了Grails、Play這類Full Stack框架出現。

現在是2015年,怎麼還在提2005年那陣子的事啊?嗯!剛提的這些東西,是指後端開發者如何能獨立完成整個應用程式,至於前端開發者,也有著這類的想法,由於Node.js,使得JavaScript的舞臺從瀏覽器延伸至伺服端,只要懂JavaScript,就可以完成整個應用程式的框架也就出現了,像是自稱Fullstack JavaScript Framework的MEAN。MEAN代表著MongoDB、express、AngularJS、Node.js這幾個技術的堆疊,只是,能使用這類框架的開發者,就也能稱為全端開發者嗎?

職缺上的Full Stack

無論如何,現在能號稱Full stack的快速開發框架,由於封裝了不少底層,簡化了不少繁複的設定,抽掉了許多不必要的設計,確實使得開發者包辦整個應用程式成為可能,對一間公司或老闆來說,能包辦整個應用程式,可以一個打十個的員工,哪能不愛呢?尋找全能型開發者的職缺越來越多,網路上搜尋「徵 full stack」,就會發現不少有趣的職缺。

全端開發者的訓練,其實一直以來都不曾斷過,只不過,過去是號稱可培養出全方位程式設計師、整合開發程式設計師,平均大概三到六個月,讓程式界新鮮人努力吞下程式語言、開發框架、網頁設計、伺服器安裝、版本控制、資料庫設計、測試、效能、安全等內容的訓練課程或實戰營,這些課程不就是一直在「生產」全端開發者嗎?或許是因為這樣,最近也才會看到,有自稱有一、二年全端開發經驗的求職者出現吧!

那麼,需求跟供給對得起來嗎?仔細看看〈What is a Full Stack developer?〉列出的技能分類,好像還需要有使用者經驗、瞭解客戶與商務需求,這真的是在徵全能型員工,而不只是開發者了嘛!別以為文章中的需求不會真的出現在公司的職缺需求上,看過PTT有篇徵才文,上頭列出的技能分類,還真的是抄〈What is a Full Stack developer?〉來著。

說實在地,一間公司在想要徵全端開發者時,到底是真的清楚他們要什麼人才,還是完全不清楚他們需要什麼人才呢?想想Facebook這麼大的公司,應該是知道他們想要的是什麼人才吧!有不少人為Facebook的這個行為做了解讀,認為他們要的全端工程師,並不是真的精通各個領域或技術,而是不為自己設限為前端或後端,遇到問題就能自行分析與尋求解決方式,而不是假設或等待其他人來解決,也就是能完全呈現出「自走砲」行為,或者所謂能「獨立作業」的開發者。

心態上的Full Stack

無論Facebook本身對全端開發者的要求是不是真的這麼想,用呈現自走砲式行為的開發者來詮譯全端開發者,似乎是比較合理的解釋,不然的話,全端開發者就真的只是神話了。

因為能獨立開發出應用程式的開發者確實是存在的,只不過,他可能目前是Web Stack、Mobile Stack之類,放在某個領域看來是全端開發者,放到另一個領域,就不一定是全端開發者了。當然,如果他們願意,給予適當時間,這些人也能找到解決之道。

這類具有心態上Full Stack的開發者,也可能進一步成為Full Stack Engineer或Full Stack Startups,當然,回到技術本身來說,這些人並不會以成為全端為目標,而是在解決各種問題的過程中,自然而然地獲得相關的技術或技能,因為這些只不過是完成目標所必需具備的東西。

至於那些徵求全端工程師的職缺,就別太在意了,這種職缺其實一直以來都存在,只不過從全方位、整合開發、獨立作業換到全端這個名稱,然後負責的技術範疇越來越廣罷了,一如以往地,開發者要搞清楚的是這些公司開列這些職缺的心態是什麼,是想要找一個可以一人做n份工,俗又大碗的爆肝工程師,或者是把工作丟到他身上,東西就會蹦的一聲生出來的神級開發者!

作者簡介


Advertisement

更多 iThome相關內容