2019-03-11 09:37:47分類:硬件開發(fā)7044
關(guān)于全棧開發(fā)者,人們存在一些迷思。人們可能會(huì)認(rèn)為全棧開發(fā)者是非常厲害的人,他們無所不知,既懂后端又懂前端,一個(gè)人可以包攬所有的編碼工作。但事實(shí)是這樣的嗎?作者從企業(yè)招人的角度和自己作為一名前端開發(fā)者的角度剖析了全棧開發(fā)者這種角色,觀點(diǎn)非常新穎。
作為一名 Web 設(shè)計(jì)師,在我的大部分職業(yè)生涯中,我都非常愉快地與程序員、工程師和擁有計(jì)算機(jī)科學(xué)學(xué)位的人共事。在這種共生關(guān)系中,每一方都有一個(gè)安全且明確的工作角色,并且能夠從事他們最擅長(zhǎng)的事情,享受他們的工作。
計(jì)算機(jī)科學(xué)家們并不會(huì)把全部時(shí)間花在寫代碼上,他們做架構(gòu),我負(fù)責(zé)完成通信、表單和互動(dòng)方面的事情。我們都需要寫代碼,因?yàn)槲覀兪窃谧?Web 開發(fā),但我們以不同的方式編寫代碼,以實(shí)現(xiàn)不同的和互補(bǔ)的東西。
但對(duì)于那些根本不寫代碼的人來說,事情就沒有那么明顯:他們很容易認(rèn)為寫代碼的人會(huì)包攬所有的代碼——因?yàn)閷?duì)于代碼門外漢來說,所有代碼都是一樣的。
這種誤解造成了糟糕的后果,而非編碼人員通常是招聘技術(shù)人員的人,這反過來加劇了這種后果。萬惡的資本主義總是從最少的資源中榨取最多的價(jià)值,因?yàn)檫@是他們賺取利潤(rùn)的方式。如果他們能找到愿意包攬所有編碼工作的人,那么就可以極大地減少最重要的開銷:人。
因此,市場(chǎng)上就出現(xiàn)了全棧開發(fā)者,就像從骯臟的胎盤中破繭而出的強(qiáng)獸人:更強(qiáng)大、更好,同時(shí)問題也更多。
為什么會(huì)有問題?HTML、CSS、JavaScript、Python、C# 和 SQL 都是代碼,但它們實(shí)際上是完全不同的代碼,適合不同類型的人。以前端技術(shù)為例:HTML 是一種元語言,與語言、敘事和意義密切相關(guān),屬于作家的領(lǐng)域。CSS 屬于印刷師和圖形藝術(shù)家的范疇,而 JavaScript(在這里通常指客戶端,但它其實(shí)是計(jì)算機(jī)科學(xué)家使用的真正的編程語言)用于處理數(shù)據(jù)傳輸和事件。
也就是說,如果你讓某人負(fù)責(zé)所有這些事情(包括 API 和關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)等等),那么他們?cè)谀承╊I(lǐng)域很可能會(huì)比在其他領(lǐng)域要薄弱得多。更糟糕的是,他們往往沒有興趣去改善他們沒有意識(shí)到的領(lǐng)域或者他們沒有獲得成就感的領(lǐng)域。根據(jù)我的經(jīng)驗(yàn),男性更擅長(zhǎng)于 JavaScript 或 Python,并通常會(huì)從中獲得更多的贊譽(yù),但卻很少能夠從 CSS 技能中獲得這些。CSS 讓頁(yè)面看起來更“漂亮”,偏向于“女性化”一些。
一個(gè)全棧開發(fā)者(實(shí)際上是一位同時(shí)編寫 HTML 和 CSS 的計(jì)算機(jī)科學(xué)家)需要對(duì)所有代碼負(fù)責(zé),盡管這些代碼的語法和目的存在根本差異,并成為某些類型代碼(一些人根本不關(guān)心寫得好不好)的守門人。這有兩個(gè)不利的影響:
糟糕的代碼質(zhì)量;
一群能夠(并且喜歡)寫出好代碼的人卻失業(yè)了,只能在一旁嘀咕“WTF”。
讓人們成為這種守門人的最明顯的問題之一是糟糕的 HTML 輸出質(zhì)量。大多數(shù)全棧開發(fā)人員來自計(jì)算機(jī)科學(xué)背景,他們?cè)趯W(xué)習(xí)程序控制結(jié)構(gòu)同時(shí)并沒有學(xué)習(xí) HTML 的文檔結(jié)構(gòu)。他們并不擅長(zhǎng)這些,但我們卻他們也承擔(dān)了這些工作。
對(duì)于“經(jīng)典”的計(jì)算機(jī)科學(xué)家來說,CSS 可能非常難以捉摸。像級(jí)聯(lián)這樣的功能可能讓他們摸不著頭腦。為了讓 CSS 更容易編寫和管理,他們用他們更熟悉的東西把 CSS“吃”掉了,于是出現(xiàn)了 CSS-in-JS。
從技術(shù)角度講,CSS-in-JS 通常被定義為一種解決方案(從業(yè)者的定義)或者一種問題(反對(duì)者的定義)。我認(rèn)為它不會(huì)讓 CSS 變得更好或更糟——它只是一種不同的編碼方式。但這并不是說它不造成嚴(yán)重的文化問題:
將 CSS 放入 JS 中,那么任何想要編寫 CSS 的人都必須學(xué)習(xí) JavaScript。而且不僅僅是 JavaScript,還很有可能是 JavaScript 的另一個(gè)特定的“風(fēng)味”,比如 React。更糟糕的是,JavaScript 愛好者不希望在他們的地盤上使用 CSS。
我最近在一家公司工作,這家公司里有數(shù)十個(gè)全棧開發(fā)人員,卻沒有前端開發(fā)人員。我們要開發(fā)一個(gè)網(wǎng)站,但沒有人懂 Flexbox,除了我。當(dāng)然,我很樂意提供幫助,但我必須學(xué)習(xí) React 才能完成手頭的工作。所運(yùn)的是,我很快就學(xué)會(huì)了,但換了另一個(gè) CSS 專家可能就沒有那么幸運(yùn)。CSS 專家能給你帶來的價(jià)值是他們的 CSS 技能,而不是他們的 JavaScript 技能,所以將 JavaScript 作為對(duì)他們的一項(xiàng)要求是荒謬的。
總之,我認(rèn)為我們需要解決以下幾個(gè)問題:
我們需要意識(shí)到這是一種剝削。雖然有一些干得很愉快的全棧開發(fā)人員,但他們承擔(dān)了太多的責(zé)任,而且他們其實(shí)不愿意或應(yīng)當(dāng)為所有事情負(fù)起責(zé)任。
我們需要解決 HTML 和 CSS 被低估的問題:性別偏見。如果沒有那些為計(jì)算機(jī)科學(xué)做出創(chuàng)舉的女性,我們也就不會(huì)有計(jì)算機(jī)科學(xué),但現(xiàn)在男性卻“反客為主”。任何算不上“真正的編程”的東西現(xiàn)都被認(rèn)為是微不足道的、愚蠢的,更適合女性做。對(duì)于抱有這種想法的人,應(yīng)該狠狠地揍他們一頓。
我們需要重新審視關(guān)注點(diǎn)分離原則。為了完成某些事情,卻要花大力氣掌握所有的東西,這對(duì)人們來說是個(gè)沉重的負(fù)擔(dān)。我們現(xiàn)在用自包含組件來概念化設(shè)計(jì),這是件好事,但它應(yīng)該是一種心理模型,不能造成技術(shù)方面的搶奪。
最重要的是,我們需要教育那些根本不寫代碼的人,不同類型的代碼可以用來完成不同的事情,以及每個(gè)人的對(duì)代碼的理解和寫代碼的方式存在差異。希望通過這種方式能夠讓更多的人編寫適合自己的代碼,而不是花時(shí)間在焦慮上,比如不知道自己在做什么,或者承擔(dān)了太多的責(zé)任。當(dāng)然,這并不是說如果你愿意承擔(dān)編寫 JS、CSS、HTML、SQL 和 C# 代碼的任務(wù)或者有足夠的時(shí)間也不應(yīng)該去寫這些代碼!