<ruby id="66w77"><video id="66w77"></video></ruby>
<ruby id="66w77"><option id="66w77"><thead id="66w77"></thead></option></ruby>
  • <ruby id="66w77"><table id="66w77"></table></ruby>

  • <ruby id="66w77"><table id="66w77"></table></ruby>
    <strong id="66w77"></strong>

    關(guān)于全棧開(kāi)發(fā)者的迷思淺析

    2019-03-11 09:37:47分類(lèi):硬件開(kāi)發(fā)7034

      關(guān)于全棧開(kāi)發(fā)者,人們存在一些迷思。人們可能會(huì )認為全棧開(kāi)發(fā)者是非常厲害的人,他們無(wú)所不知,既懂后端又懂前端,一個(gè)人可以包攬所有的編碼工作。但事實(shí)是這樣的嗎?作者從企業(yè)招人的角度和自己作為一名前端開(kāi)發(fā)者的角度剖析了全棧開(kāi)發(fā)者這種角色,觀(guān)點(diǎn)非常新穎。

      作為一名 Web 設計師,在我的大部分職業(yè)生涯中,我都非常愉快地與程序員、工程師和擁有計算機科學(xué)學(xué)位的人共事。在這種共生關(guān)系中,每一方都有一個(gè)安全且明確的工作角色,并且能夠從事他們最擅長(cháng)的事情,享受他們的工作。

      計算機科學(xué)家們并不會(huì )把全部時(shí)間花在寫(xiě)代碼上,他們做架構,我負責完成通信、表單和互動(dòng)方面的事情。我們都需要寫(xiě)代碼,因為我們是在做 Web 開(kāi)發(fā),但我們以不同的方式編寫(xiě)代碼,以實(shí)現不同的和互補的東西。
     

    全棧開(kāi)發(fā)者
     

      但對于那些根本不寫(xiě)代碼的人來(lái)說(shuō),事情就沒(méi)有那么明顯:他們很容易認為寫(xiě)代碼的人會(huì )包攬所有的代碼——因為對于代碼門(mén)外漢來(lái)說(shuō),所有代碼都是一樣的。

      這種誤解造成了糟糕的后果,而非編碼人員通常是招聘技術(shù)人員的人,這反過(guò)來(lái)加劇了這種后果。萬(wàn)惡的資本主義總是從最少的資源中榨取最多的價(jià)值,因為這是他們賺取利潤的方式。如果他們能找到愿意包攬所有編碼工作的人,那么就可以極大地減少最重要的開(kāi)銷(xiāo):人。

      因此,市場(chǎng)上就出現了全棧開(kāi)發(fā)者,就像從骯臟的胎盤(pán)中破繭而出的強獸人:更強大、更好,同時(shí)問(wèn)題也更多。

      為什么會(huì )有問(wèn)題?HTML、CSS、JavaScript、Python、C# 和 SQL 都是代碼,但它們實(shí)際上是完全不同的代碼,適合不同類(lèi)型的人。以前端技術(shù)為例:HTML 是一種元語(yǔ)言,與語(yǔ)言、敘事和意義密切相關(guān),屬于作家的領(lǐng)域。CSS 屬于印刷師和圖形藝術(shù)家的范疇,而 JavaScript(在這里通常指客戶(hù)端,但它其實(shí)是計算機科學(xué)家使用的真正的編程語(yǔ)言)用于處理數據傳輸和事件。

      也就是說(shuō),如果你讓某人負責所有這些事情(包括 API 和關(guān)系數據庫設計等等),那么他們在某些領(lǐng)域很可能會(huì )比在其他領(lǐng)域要薄弱得多。更糟糕的是,他們往往沒(méi)有興趣去改善他們沒(méi)有意識到的領(lǐng)域或者他們沒(méi)有獲得成就感的領(lǐng)域。根據我的經(jīng)驗,男性更擅長(cháng)于 JavaScript 或 Python,并通常會(huì )從中獲得更多的贊譽(yù),但卻很少能夠從 CSS 技能中獲得這些。CSS 讓頁(yè)面看起來(lái)更“漂亮”,偏向于“女性化”一些。

      一個(gè)全棧開(kāi)發(fā)者(實(shí)際上是一位同時(shí)編寫(xiě) HTML 和 CSS 的計算機科學(xué)家)需要對所有代碼負責,盡管這些代碼的語(yǔ)法和目的存在根本差異,并成為某些類(lèi)型代碼(一些人根本不關(guān)心寫(xiě)得好不好)的守門(mén)人。這有兩個(gè)不利的影響:

      糟糕的代碼質(zhì)量;

      一群能夠(并且喜歡)寫(xiě)出好代碼的人卻失業(yè)了,只能在一旁嘀咕“WTF”。
     

    全棧開(kāi)發(fā)者
     

      讓人們成為這種守門(mén)人的最明顯的問(wèn)題之一是糟糕的 HTML 輸出質(zhì)量。大多數全棧開(kāi)發(fā)人員來(lái)自計算機科學(xué)背景,他們在學(xué)習程序控制結構同時(shí)并沒(méi)有學(xué)習 HTML 的文檔結構。他們并不擅長(cháng)這些,但我們卻他們也承擔了這些工作。

      對于“經(jīng)典”的計算機科學(xué)家來(lái)說(shuō),CSS 可能非常難以捉摸。像級聯(lián)這樣的功能可能讓他們摸不著(zhù)頭腦。為了讓 CSS 更容易編寫(xiě)和管理,他們用他們更熟悉的東西把 CSS“吃”掉了,于是出現了 CSS-in-JS。

      從技術(shù)角度講,CSS-in-JS 通常被定義為一種解決方案(從業(yè)者的定義)或者一種問(wèn)題(反對者的定義)。我認為它不會(huì )讓 CSS 變得更好或更糟——它只是一種不同的編碼方式。但這并不是說(shuō)它不造成嚴重的文化問(wèn)題:

      將 CSS 放入 JS 中,那么任何想要編寫(xiě) CSS 的人都必須學(xué)習 JavaScript。而且不僅僅是 JavaScript,還很有可能是 JavaScript 的另一個(gè)特定的“風(fēng)味”,比如 React。更糟糕的是,JavaScript 愛(ài)好者不希望在他們的地盤(pán)上使用 CSS。

      我最近在一家公司工作,這家公司里有數十個(gè)全棧開(kāi)發(fā)人員,卻沒(méi)有前端開(kāi)發(fā)人員。我們要開(kāi)發(fā)一個(gè)網(wǎng)站,但沒(méi)有人懂 Flexbox,除了我。當然,我很樂(lè )意提供幫助,但我必須學(xué)習 React 才能完成手頭的工作。所運的是,我很快就學(xué)會(huì )了,但換了另一個(gè) CSS 專(zhuān)家可能就沒(méi)有那么幸運。CSS 專(zhuān)家能給你帶來(lái)的價(jià)值是他們的 CSS 技能,而不是他們的 JavaScript 技能,所以將 JavaScript 作為對他們的一項要求是荒謬的。

      總之,我認為我們需要解決以下幾個(gè)問(wèn)題:

      我們需要意識到這是一種剝削。雖然有一些干得很愉快的全棧開(kāi)發(fā)人員,但他們承擔了太多的責任,而且他們其實(shí)不愿意或應當為所有事情負起責任。

      我們需要解決 HTML 和 CSS 被低估的問(wèn)題:性別偏見(jiàn)。如果沒(méi)有那些為計算機科學(xué)做出創(chuàng )舉的女性,我們也就不會(huì )有計算機科學(xué),但現在男性卻“反客為主”。任何算不上“真正的編程”的東西現都被認為是微不足道的、愚蠢的,更適合女性做。對于抱有這種想法的人,應該狠狠地揍他們一頓。

      我們需要重新審視關(guān)注點(diǎn)分離原則。為了完成某些事情,卻要花大力氣掌握所有的東西,這對人們來(lái)說(shuō)是個(gè)沉重的負擔。我們現在用自包含組件來(lái)概念化設計,這是件好事,但它應該是一種心理模型,不能造成技術(shù)方面的搶奪。

      最重要的是,我們需要教育那些根本不寫(xiě)代碼的人,不同類(lèi)型的代碼可以用來(lái)完成不同的事情,以及每個(gè)人的對代碼的理解和寫(xiě)代碼的方式存在差異。希望通過(guò)這種方式能夠讓更多的人編寫(xiě)適合自己的代碼,而不是花時(shí)間在焦慮上,比如不知道自己在做什么,或者承擔了太多的責任。當然,這并不是說(shuō)如果你愿意承擔編寫(xiě) JS、CSS、HTML、SQL 和 C# 代碼的任務(wù)或者有足夠的時(shí)間也不應該去寫(xiě)這些代碼!

    上一篇:下一篇:
    92视频在线精品国自产拍_乱色熟女综合一区二区_国产精品毛片久久久久久久_久天啪天天久久99久孕妇
    <ruby id="66w77"><video id="66w77"></video></ruby>
    <ruby id="66w77"><option id="66w77"><thead id="66w77"></thead></option></ruby>
  • <ruby id="66w77"><table id="66w77"></table></ruby>

  • <ruby id="66w77"><table id="66w77"></table></ruby>
    <strong id="66w77"></strong>