自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

寫給那些傻傻的,想做服務(wù)器開發(fā)的應(yīng)屆生

開發(fā)
猿題庫(kù)剛剛結(jié)束了北京地區(qū)的大規(guī)模校園招聘,國(guó)慶之后打算轉(zhuǎn)戰(zhàn)外地進(jìn)行校招。我本人深度參與了此次的校招工作,包括筆試題命題、面試題命題以及具體的面試工作。

前言

猿題庫(kù)剛剛結(jié)束了北京地區(qū)的大規(guī)模校園招聘,國(guó)慶之后打算轉(zhuǎn)戰(zhàn)外地進(jìn)行校招。我本人深度參與了此次的校招工作,包括筆試題***、面試題***以及具體的面試工作。

我在面試中發(fā)現(xiàn)了一個(gè)非常有意思的現(xiàn)象,就是大多數(shù)應(yīng)屆生都想做服務(wù)器端開發(fā),但是他們卻又不清楚服務(wù)器端開發(fā)具體要做些什么。

我和同事聊天的時(shí)候說(shuō)起此事,我們認(rèn)為可能應(yīng)屆生覺得:做服務(wù)器端開發(fā)可以讓自己寫的程序運(yùn)行在很多臺(tái)機(jī)器上,并且處理海量的數(shù)據(jù),這很「牛逼」。而做客戶端或前端開發(fā)太簡(jiǎn)單,成長(zhǎng)會(huì)比較小。

于是我就寫了本文,想給這些單純的應(yīng)屆生潑潑冷水。先說(shuō)說(shuō)我的背景吧,我同時(shí)做過(guò)服務(wù)器端和客戶端的開發(fā)。我在網(wǎng)易有道做過(guò) 1 年半的服務(wù)器端開發(fā),產(chǎn)品涉及網(wǎng)易郵箱和微博產(chǎn)品,之后做了 3 年的 iOS 開發(fā),產(chǎn)品涉及有道云筆記,猿題庫(kù)和小猿搜題,所以我能夠給大家分享服務(wù)器端和客戶端開發(fā)的差別。

 

[[153427]]

對(duì)服務(wù)器開發(fā)的誤解

很多應(yīng)屆生認(rèn)為做服務(wù)器端開發(fā)可以處理海量數(shù)據(jù),管理上百臺(tái)服務(wù)器。

但是 ——

處理海量數(shù)據(jù)就牛逼了?NO!

服務(wù)器端開發(fā)經(jīng)過(guò)多年的發(fā)展,對(duì)于海量數(shù)據(jù)的處理早有了很多固定的解決方案。不管是用云服務(wù),還是用 Hbase ,你都可以很輕松地依賴開源庫(kù),解決海量數(shù)據(jù)的存儲(chǔ)問(wèn)題。

還有一些同學(xué)想做大數(shù)據(jù)分析,如果你寫過(guò) MapReduce 程序就不會(huì)這么想了?,F(xiàn)在的 MapReduce 程序?qū)懫饋?lái)太 easy 了,很多時(shí)候簡(jiǎn)單到你就只需要寫一條類似 SQL 的查詢就行了。

運(yùn)行在上百臺(tái)服務(wù)器上就牛逼了?NO!

現(xiàn)在虛擬化技術(shù)發(fā)展迅猛,像小猿搜題所有服務(wù)都通過(guò) Docker 來(lái)部署。很多時(shí)候,部署上線就是在 Web 管理界面上點(diǎn)擊一個(gè)「Deploy」按鈕即可。即使在過(guò)去,實(shí)際操作這些上百臺(tái)服務(wù)器的也是運(yùn)維同學(xué),輪不到你來(lái)操作。

所以,除了 YY 一下這些程序跑在多個(gè)機(jī)器上,這并沒有什么可以帶來(lái)成就感的地方。

還有一些應(yīng)屆生覺得自己在學(xué)校做過(guò)網(wǎng)站,覺得在服務(wù)器開發(fā)方面有基礎(chǔ),做這方面更順手。NO!企業(yè)里面的服務(wù)器開發(fā)完全不是你想的那樣,基本上大家在學(xué)校做網(wǎng)站的經(jīng)驗(yàn)等于零。

服務(wù)器開發(fā)的苦

我給大家分享一下做服務(wù)器開發(fā)有什么苦的地方吧。

永遠(yuǎn)只能半夜上線

做為互聯(lián)網(wǎng)公司,我們希望給用戶提供 7 x 24 的不間斷服務(wù),那么服務(wù)萬(wàn)一需要中斷怎么辦?半夜上線唄。

根據(jù)我多年的觀察,晚上 12 點(diǎn)一般都是上網(wǎng)高峰,所以上線一般都是凌晨 3 點(diǎn)-4 點(diǎn)的時(shí)候進(jìn)行。但是,你以為上線就是凌晨 3 點(diǎn)點(diǎn)一下「Deploy」按鈕就完了嗎?NO! 一般上線都會(huì)涉及功能升級(jí),難免會(huì)有考慮不周到的情況,于是就會(huì)發(fā)生,上線出問(wèn)題的情況。

上線出問(wèn)題怎么辦?在網(wǎng)易,我們一般是兩種做法:

  1. 在線調(diào)試和修改 Bug,通常順利的話,到早上 7,8 點(diǎn)的時(shí)候一般就能搞定了。

  2. 在線調(diào)試和修改 Bug,如果不順利的話,到早上 7,8 點(diǎn)的時(shí)候回滾數(shù)據(jù)。然后,我們需要回家休息半天之后,繼續(xù)在下一個(gè)凌晨 3 點(diǎn)上線。

當(dāng)然,不會(huì)每次上線都是這種大升級(jí),但是基本上,1、2 個(gè)月搞一次這種大上線還是挺常見的。

相對(duì)來(lái)說(shuō),客戶端同學(xué)在這方面要輕松得多。iOS 和 Android 都是提交應(yīng)用市場(chǎng)審核,所以客戶端的同學(xué)可以選一個(gè)白天上班的時(shí)候提交審核,而不用等到半夜。

永遠(yuǎn)需要立即響應(yīng)

服務(wù)器端的問(wèn)題,只要出現(xiàn),影響都是巨大的,所以服務(wù)器端的同學(xué)需要隨時(shí)待命,一旦有服務(wù)器異常報(bào)警,就立即處理,以免影響到用戶。所以做服務(wù)器開 發(fā)的同學(xué)手機(jī)都是開著的,在服務(wù)不穩(wěn)定時(shí),一不小心,幾十條報(bào)警短信就過(guò)來(lái)了。服務(wù)器開發(fā)出去旅游什么的,一般都帶著筆記本,以便出問(wèn)題時(shí)能夠及時(shí)響應(yīng)。

相對(duì)來(lái)說(shuō),客戶端同學(xué)在這方面要輕松得多,因?yàn)榧词钩霈F(xiàn)了 Bug,iOS 和 Android 客戶端也是無(wú)法馬上修復(fù)的,因?yàn)橛脩羰謾C(jī)中的版本不會(huì)立即更新。所以客戶端同學(xué)最多也是加班發(fā)布一個(gè)緊急版本提交審核,在時(shí)間上不會(huì)像服務(wù)器端那么著急。

另一方面,很多客戶端的 Bug,可以通過(guò)服務(wù)器端通過(guò)一些「兼容」來(lái)處理,這其實(shí)就是替客戶端「擦屁股」。例如,假設(shè)某應(yīng)用的 iOS 1.2.0 版本當(dāng)獲得服務(wù)器端返回的用戶頭象是 png 格式的時(shí)候會(huì)閃退,那么服務(wù)器端可以特殊處理,對(duì)于這個(gè)版本的應(yīng)用把 png 圖片轉(zhuǎn)成 jpg 返回。你看,最終還是服務(wù)器端同事成了要立即響應(yīng)的人。

服務(wù)器端輪子太多

服務(wù)器端的開發(fā)經(jīng)過(guò)了 10 多年的發(fā)展,而客戶端的開發(fā)才剛剛興起。2009 年 iPhone 3GS 推出之后,國(guó)內(nèi)才有人做 iOS App 的開發(fā),Android 開發(fā)的興起也基本在同一時(shí)期。算下來(lái),客戶端的開發(fā)才經(jīng)歷了 6 年而已。而服務(wù)器端的開發(fā)呢?光 Spring 就出現(xiàn)了 10 多年了。

服務(wù)器端的技術(shù)長(zhǎng)久發(fā)展的結(jié)果就是,基本上每個(gè)業(yè)務(wù)需求都已經(jīng)有現(xiàn)成的輪子了。所以做服務(wù)器端開發(fā)很多時(shí)候就是學(xué)習(xí)各種開源組件的用法,并且熟悉這些組件的一些性能特點(diǎn)和坑。

你以為這很容易嗎?其實(shí)不是的!這些輪子發(fā)展那么多年,已經(jīng)非常復(fù)雜了,光 Spring 就包括非常多的特性,寫一本 1000 頁(yè)的書來(lái)介紹它也不為過(guò)。如果不是多年的使用,你能搞明白它的各種功能的優(yōu)缺點(diǎn)嗎?如果你搞不明白,遇到問(wèn)題的時(shí)候除了抓瞎還能干嘛?

所以做服務(wù)器端的同學(xué),要經(jīng)過(guò)非常長(zhǎng)時(shí)間學(xué)習(xí)(至少半年左右),才能上手進(jìn)行實(shí)際的開發(fā)工作。上手之后,又需要經(jīng)過(guò)非常長(zhǎng)時(shí)間的學(xué)習(xí),才能夠熟悉自己使用的各種開源組件的特點(diǎn)和使用細(xì)節(jié)。

相對(duì)來(lái)說(shuō),客戶端同學(xué)在這方面要輕松得多,基本上不管是 iOS 還是 Android,新手只需要一個(gè)月左右就能入門,三個(gè)月左右就能夠比較熟練了。

分工與細(xì)化

剛剛說(shuō)到服務(wù)器端復(fù)雜,這帶來(lái)的結(jié)果就是分工與細(xì)化。每個(gè)做服務(wù)器開發(fā)的同學(xué),可能只會(huì)涉及服務(wù)器開發(fā)的某一部分的業(yè)務(wù)邏輯和功能,甚至是某一部分業(yè)務(wù)邏輯的某一層。比如我在網(wǎng)易郵箱做服務(wù)器端開發(fā)時(shí),就只是負(fù)責(zé) Restful Api 這一層的開發(fā)工作。

從業(yè)務(wù)上來(lái)說(shuō),將復(fù)雜的系統(tǒng)拆分,然后每個(gè)人做獨(dú)立的某一塊當(dāng)然是好的。但是對(duì)個(gè)人來(lái)說(shuō),服務(wù)器端開發(fā)卻使終是一塊迷霧環(huán)繞的大山,在這座大山上,你對(duì)你走過(guò)的路線很熟悉,而那些你沒有接觸過(guò)的服務(wù)器端技術(shù),你使終是不清楚的。

對(duì)于一個(gè)服務(wù)器端開發(fā)同學(xué),特別是進(jìn)入大公司的應(yīng)屆生來(lái)說(shuō),在他頭幾年的工作中,肯定只會(huì)圍繞著非常小一塊功能業(yè)務(wù)來(lái)學(xué)習(xí),那么一兩年之后,他頂多是熟悉了他工作涉及的那些東西,對(duì)于別的東西仍然是不清楚的。

從這一點(diǎn)來(lái)說(shuō),去創(chuàng)業(yè)型的公司做服務(wù)器端開發(fā)又要比去大公司要好得多。

相對(duì)來(lái)說(shuō),客戶端同學(xué)在這方面要爽得多。因?yàn)橐苿?dòng)開發(fā)技術(shù)剛剛興起,很多技術(shù)方案和框架還沒有復(fù)雜到無(wú)法全面掌握的程度。移動(dòng)開發(fā)技術(shù)就像一棵快速 成長(zhǎng)的小樹,客戶端同學(xué)將有幸伴隨著它一起成長(zhǎng),等 5 年之后,移動(dòng)開發(fā)技術(shù)成變成一棵參天大樹,這一代的程序員,將會(huì)是***親身經(jīng)歷它演進(jìn)的人,每一處演進(jìn)帶來(lái)的改變,都將使得我們更加深刻理解移動(dòng)開發(fā)系統(tǒng) 的設(shè)計(jì)原則。

眼界和非技術(shù)成長(zhǎng)

某種程度上說(shuō),服務(wù)器端開發(fā)在業(yè)務(wù)方面是輕松的,因?yàn)樗麄冎恍枰O(shè)計(jì)好 API 接口,返回 JSON 數(shù)據(jù),不用考慮 UI 的設(shè)計(jì),交互細(xì)節(jié)的處理。服務(wù)器端開發(fā)經(jīng)過(guò)了多年的發(fā)展,單元測(cè)試和性能測(cè)試框架也非常成熟,所以開發(fā)起來(lái)非常有章法。

所以服務(wù)器端的同學(xué)大多數(shù)時(shí)候只需要關(guān)注純技術(shù)的知識(shí),例如如何保證高可用,高擴(kuò)展性,高并發(fā),數(shù)據(jù)一致性,數(shù)據(jù)安全等。

客戶端就苦了,UI 需要和美術(shù)設(shè)計(jì)得完全一樣,交互細(xì)節(jié)還需要做到流暢,很多時(shí)候產(chǎn)品用一用覺得一些 UI 和交互有問(wèn)題,我們還需要被迫接受調(diào)整。另外在測(cè)試上,因?yàn)楹徒缑骜詈咸o,雖然業(yè)界有一些解決方案,但基本上不管是 iOS 和 Android 都還沒有非常成熟好用的單元測(cè)試框架。大部分的測(cè)試工作都是由黑盒的手工測(cè)試完成的。

但是,正因?yàn)榭蛻舳诵枰芮泻彤a(chǎn)品經(jīng)理,UI 設(shè)計(jì)師打交道,所以他們會(huì)頻繁接觸到產(chǎn)品設(shè)計(jì)思想和設(shè)計(jì)思想。這使得客戶端的同學(xué)更加容易學(xué)習(xí)和積累編程之外的技能,包括產(chǎn)品和設(shè)計(jì)的思想以及溝通能力。 另外,因?yàn)橛脩舻?bug 都是通過(guò)客戶端反饋,客戶端同學(xué)還更容易接觸到真實(shí)的用戶。

所以相對(duì)于服務(wù)器端同學(xué)來(lái)說(shuō),客戶端的同學(xué)的眼界更寬,由于非技術(shù)方面的溝通更多,所以他們的非技術(shù)方案的成長(zhǎng)也越多。

技術(shù)挑戰(zhàn)和工資待遇

從純技術(shù)上的挑戰(zhàn)來(lái)說(shuō),服務(wù)器端明顯更大。服務(wù)器端開發(fā)動(dòng)輒超過(guò) 10 人的團(tuán)隊(duì),代碼量稍微復(fù)雜一些就是接近百萬(wàn)行。而客戶端一個(gè)平臺(tái)的研發(fā)大多數(shù)也就在 5 人左右,代碼量多在 10 萬(wàn)行以內(nèi)。

但是,技術(shù)挑戰(zhàn)大就表示工資待遇高嗎?NO!市場(chǎng)價(jià)格是由供求關(guān)系來(lái)平衡的。雖然客戶端的技術(shù)挑戰(zhàn)小,但是基本上所有應(yīng)屆畢業(yè)生都想做服務(wù)器端開 發(fā),所以沒有人做客戶端開發(fā)呀!于是很多公司被迫從培訓(xùn)機(jī)構(gòu)招人,很多人剛剛培訓(xùn)了 3 個(gè)月,就可以拿非常高的工資。這一點(diǎn)和 Web 前端類似,牛逼的 Web 前端人才非常少,但是不影響這個(gè)領(lǐng)域稍微牛逼一點(diǎn)的人拿非常高的薪水。

另一方面,由于服務(wù)器端人才的飽和,也使得競(jìng)爭(zhēng)變得非常激烈,除非你成為這個(gè)領(lǐng)域的***人才,否則從平均薪資來(lái)說(shuō),做客戶端開發(fā)的同學(xué)應(yīng)該和服務(wù)器端的同學(xué)類似。

總結(jié)

其實(shí)我這篇文章故意寫得很片面,目的就是想讓各位應(yīng)屆生同學(xué)們能夠更加辯證地看待互聯(lián)網(wǎng)行業(yè)中的工作。與其什么都不懂傻傻地選擇服務(wù)器端開發(fā),倒不如做客戶端開發(fā)更有前途。

我以上所說(shuō)的,都是錯(cuò)的。

原文:http://blog.devtang.com/blog/2015/10/07/why-fresh-wants-to-do-server-dev/ 作者: @唐巧_boy

責(zé)任編輯:王雪燕
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)