What is a Full Stack developer?

期望一個碼農(nóng)掌握全棧開發(fā)的知識滴某,合理嗎乡翅?也許不合理剪个,但是Facebook正是要尋找這樣的人秧骑。在OSCON會議上,一名Facebook的工程師告訴我的扣囊,他們只聘請“全棧(Full stack)”的程序員乎折。那么,全棧是什么意思呢侵歇?

Is it reasonable to expect mere morals to have mastery over every facet of the development stack? Probably not, but Facebook can ask for it. I was told at OSCON by a Facebook employee that they only hire ‘Full Stack’ developers. Well, what does that mean?

對我來說笆檀,一個全棧的程序員應(yīng)該熟悉每一層的技術(shù)知識,如果不是全部掌握盒至,也要對所有的軟件技術(shù)都感興趣酗洒。

To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology.

熟悉整個技術(shù)體系的程序員士修,可以使得周圍同事的工作更加順暢。這就是為什么我反對在工作場合的技術(shù)鴻溝樱衷。當(dāng)然棋嘲,大公司里的政治和溝通的問題往往會影響他們的發(fā)展。我想Facebook招聘的要點就在于矩桂,如果聰明的人全身心投入沸移,好產(chǎn)品的誕生就會水稻渠成。

Good developers who are familiar with the entire stack know how to make life easier for those around them. This is why I’m so against silos in the work place. Sure, politics and communication challenges get in the way in large organizations. I think the point Facebook is going for with their hiring policy is, if smart people use their heads and their hearts, a better product gets built in less time.

全棧技術(shù)的分層:

1. 服務(wù)器侄榴,網(wǎng)絡(luò)和主機環(huán)境

1 理解什么會導(dǎo)致宕機雹锣,為什么會,沒有任何資源是理所當(dāng)然的癞蚕。
2 正確使用文件系統(tǒng)蕊爵,云存儲,網(wǎng)絡(luò)資源桦山,需要理解數(shù)據(jù)冗余和可用性攒射。
3 在硬件受限的情況下,如何擴展應(yīng)用恒水。
4 想想多線程和競爭会放,你在你的開發(fā)機器上看不到,但是在現(xiàn)實中卻經(jīng)常發(fā)生钉凌。
5 全棧程序員可以與DevOps協(xié)同工作咧最。系統(tǒng)應(yīng)該提供有用的錯誤信息和日志能力。DevOps會在你之前看到并處理這些信息御雕。

layers of the full stack:

1. Server, Network, and Hosting Environment.

A This involves understanding what can break and why, taking no resource for granted.
B Appropriate use of the file system, cloud storage, network resources, and an understanding of data redundancy and availability is necessary.
C How does the application scale given the hardware constraints?
D What about multi-threading and race conditions? Guess what, you won’t see those on your development machine, but they can and do happen in the real world.
E Full stack developers can work side by side with DevOps. The system should provide useful error messages and logging capabilities. DevOps will see the messages before you will, so make them count.

2. 數(shù)據(jù)建模

1 如果數(shù)據(jù)模型存在缺陷窗市,那么業(yè)務(wù)邏輯層和更高的層需要用奇怪/丑陋的代碼來彌補那些模型沒有覆蓋到的邊界場景。
2 全棧程序員知道如何構(gòu)建合理規(guī)范化的關(guān)系模型饮笛,包括外鍵咨察、索引、視圖福青、查找表等摄狱。
3 全棧程序員熟悉非關(guān)系數(shù)據(jù)存儲的概念,理解其比關(guān)系型數(shù)據(jù)存儲的優(yōu)點无午。

Data Modeling

A If the data model is flawed, the business logic and higher layers start to need strange (ugly) code to compensate for corner cases the data model doesn't cover.
B Full stack developers know how to create a reasonably normalized relational model, complete with foreign keys, indexes, views, look-up tables, etc.
C Full stack developers are familiar with the concept of non-relational data stores and understand where they shine over relational data stores.

3. 業(yè)務(wù)邏輯

1 理解程序提供的核心價值
2 扎實的面向?qū)ο蠹寄?br> 3 同樣需要熟悉框架

3. Business Logic

1 The heart of the value the application provides.
2 Solid object oriented skills are needed here.
3 Frameworks might be needed here as well.

4. API層/Action層/MVC

1 理解外部如何與系統(tǒng)內(nèi)部的業(yè)務(wù)邏輯和數(shù)據(jù)模型進行交互媒役。
2 這個層面會更多的使用到框架。
3 全棧程序員能寫出清晰宪迟,一致酣衷,易用的接口。(吐槽)一些API的復(fù)雜得使我感到厭煩次泽。

4. API layer / Action Layer / MVC

1 How the outside world operates against the business logic and data model.
2 Frameworks at this level should be used heavily.
3 Full stack developers have the ability to write clear, consistent, simple to use interfaces. The heights to which some APIs are convoluted repel me.

5. 用戶界面

1 全棧程序員:a)理解如何創(chuàng)建一個可讀的布局穿仪,或者 b)知道需要界面設(shè)計師的幫助席爽。不管哪一種,關(guān)鍵是實現(xiàn)一個好的可視化設(shè)計啊片。
2 可以掌握HTML5/CSS只锻。
3 JavaScript將是未來非常重要的語言,許多酷炫的工作都是JS完成的 (node, backbone, knockout…)紫谷。

5. User Interface

1 Full stack developers: a) understand how to create a readable layout, or b) acknowledge they need help from artists and graphic designers. Either way, implementing a good visual design is key.
2 Can include mastery of HTML5 / CSS.
3 JavaScript is the up and coming language of the future and lots of exciting work is being done in the JavaScript world (node, backbone, knockout…)

6. 用戶體驗

1 全棧程序員明白用戶只是想產(chǎn)品可以正常工作齐饮。
2 一個好的系統(tǒng)不會使得用戶手殘和眼疾。一個全棧程序員會將一個需要8次點擊3個步驟的流程笤昨,修改為1次點擊祖驱。
3 全棧程序員會添加有用的錯誤信息。如果有什么出錯了瞒窒,要向用戶道歉捺僻。有時程序員漫不經(jīng)心寫的錯誤信息會讓用戶覺得很傻。

6. User Experience

1 Full stack developers appreciate that users just want things to work.
2 A good system doesn't give its users carpal tunnel syndrome or sore eyes. A full stack developer can step back and look at a process that needs 8 clicks and 3 steps, and get it down to one click.
3 Full stack developers write useful error messages. If something breaks, be apologetic about it. Sometimes programmers inadvertently write error messages that can make people feel stupid.

7. 理解用戶和業(yè)務(wù)的需求

1 現(xiàn)在我們模糊的進行的架構(gòu)設(shè)計根竿,但這會遠離真正的需求陵像。
2 全棧程序員會預(yù)先看看當(dāng)用戶在使用軟件的時候就珠,會發(fā)生什么寇壳。他們也會關(guān)注業(yè)務(wù)。

7. Understanding what the customer and the business need.

1 Now we are blurring into the line of architect, but that is too much of a hands off role.
2 Full stack developers have a grasp of what is going on in the field when the customer uses the software. They also have a grasp of the business.

8. 其他問題:

1 能夠編寫單元測試妻怎。順便說說壳炎,JavaScript現(xiàn)在也可以進行單元測試了。
2 理解持續(xù)自動化集成逼侦,包括構(gòu)建應(yīng)用匿辩,測試,編寫文檔和部署擴展榛丢。
3 安全意識也非常重要铲球,因為每一個層面都會有其易受攻擊的地方。

8. Other Pieces of the Puzzle:

1 Ability to write quality unit tests. By the way, even JavaScript can have unit tests these days.
2 Understanding of repeatable automated processes for building the application, testing it, documenting it, and deploying it at scale.
3 An awareness of security concerns is important, as each layer presents its own possible vulnerabilities.

總結(jié):

將代碼緊緊的綁到一個特定的環(huán)境(庫晰赞,操作系統(tǒng)稼病,硬件等等),是非常糟糕的實踐掖鱼。全棧程序員理解所有的知識體系然走,不意味著他們可以走捷徑。當(dāng)然如果只是建立一個原型的話戏挡,他們確實會這樣做芍瑞。
技術(shù)型創(chuàng)業(yè)公司需要全棧程序員的多才多藝。但是褐墅,一個成熟的公司拆檬,需要更多的專注技術(shù)洪己。
我不確定在你使用多種語言,使用多個平臺秩仆,甚至為多個行業(yè)工作之前码泛,你是否可以自稱為全棧程序員。全棧程序員要高于“高級程序員”澄耍,因為他們與通曉多語言的程序員在同一線上噪珊,但是對各個模塊的關(guān)系更有全局的意識。注意我剛剛的列表齐莲,只有3-5項包含了編寫代碼痢站。

Closing Thoughts:

It is very bad practice to tightly couple code to a specific implementation (library, OS, hardware, etc). Just because a full stack developer understands the entire spectrum doesn't mean they have license to take shortcuts. Well, actually they do if it is a build and throw away prototype.
Technology start-ups need full stack developers for their versatility! However, as an organization matures, it needs more and more focused skills.
I’m not sure you can call yourself a full stack developer until you have worked in multiple languages, platforms, and even industries in your professional career. Full stack goes beyond a ‘senior engineer’, as it is along the same lines as a polyglot programmer but with a higher view of all the connecting pieces. Note that on my list, only items 3-5 involve writing code.

原文鏈接: LAURENCE

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市选酗,隨后出現(xiàn)的幾起案子阵难,更是在濱河造成了極大的恐慌,老刑警劉巖芒填,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呜叫,死亡現(xiàn)場離奇詭異,居然都是意外死亡殿衰,警方通過查閱死者的電腦和手機朱庆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闷祥,“玉大人娱颊,你說我怎么就攤上這事】常” “怎么了箱硕?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長悟衩。 經(jīng)常有香客問我剧罩,道長,這世上最難降的妖魔是什么座泳? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任惠昔,我火速辦了婚禮,結(jié)果婚禮上钳榨,老公的妹妹穿的比我還像新娘舰罚。我一直安慰自己,他們只是感情好薛耻,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布营罢。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饲漾。 梳的紋絲不亂的頭發(fā)上蝙搔,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音考传,去河邊找鬼吃型。 笑死,一個胖子當(dāng)著我的面吹牛僚楞,可吹牛的內(nèi)容都是我干的勤晚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泉褐,長吁一口氣:“原來是場噩夢啊……” “哼赐写!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起膜赃,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挺邀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跳座,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體端铛,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年疲眷,在試婚紗的時候發(fā)現(xiàn)自己被綠了禾蚕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡咪橙,死狀恐怖夕膀,靈堂內(nèi)的尸體忽然破棺而出虚倒,到底是詐尸還是另有隱情美侦,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布魂奥,位于F島的核電站菠剩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耻煤。R本人自食惡果不足惜具壮,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哈蝇。 院中可真熱鬧棺妓,春花似錦、人聲如沸炮赦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至性芬,卻和暖如春峡眶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背植锉。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工辫樱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俊庇。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓狮暑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辉饱。 傳聞我的和親對象是個殘疾皇子心例,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容