1. 程式人生 > >IT行業都有哪些職位

IT行業都有哪些職位

--------------------------------------------------------------------

一.產品

1 工作內容:

瞭解使用者需求,做競品調研,畫產品原型,寫產品文件,講解產品需求,測試產品Bug,收集使用者反饋,苦練金剛罩以防止程式設計師拿刀砍。

2 需要技能:

PPT,Word, Axure,XP,MVP,行業知識,溝通

PPT是最容易被忽視的技能,很多時候很多人都把產品經理=畫原型,如果你這麼想,再做五年的產品經理也是一個畫原型的。我在修真院的時候,給修真院的弟子講過很多次,產品經理更多的是理解一個行業,熟悉這個行業的使用者,知道這個行業有哪些沒有滿足的需求,尋找解決方案,對比行業,找到自己的切入點,最終落地成:哪些功能要做,哪些功能不要做。

這些都是要在PPT裡寫清楚的。所以,PPT並不是簡簡單單的一個工具,而且是用這個工具把你對這個行業的瞭解和分析和解決方案展示出來。

XP是敏捷開發,不會敏捷開發的產品經理很難說會是一個好的產品經理。敏捷開發對於產品經理來講,是逼著產品經理去用Story的方式去思考,去考慮自己每一個Story的價值是什麼,所有的Story優先順序是什麼。

MVP是最小化驗證產品的縮寫,這在精益創業裡是很重要的概念。也就是說,你臆想了一個產品,他有了什麼樣的功能,但是!請注意,我們認為所有沒有經過使用者驗證的功能都是在扯淡。所以,你其實是設計了一個扯淡的功能然後交給一堆人去開發,再交給人去運營,直到一個月或者是三個月以後才能拿到反饋結果。我們等不了,所以你必須在程式設計師開始啟動之前,先想辦法驗證自己要解決的問題是存在的,要解決的需要是使用者確實需要的—你有無數的辦法可以這麼做,真的。好比是,我做IT修真院,並沒有先直接做線上的網站,而是直接去貼吧發貼,用QQ群,在論壇直接做,去觀察這些弟子的行為,然後去修正自己的產品設計,我發現了他們需要日報,需要點評,需要有班級的概念,需要有學號,需要有首席大弟子等等等等這些。然後我會把這些需要分析整理之後加入到網站的設計裡去,這就是MVP的價值–當年窮瘋了每個決策都慎重的時候,就會特別喜歡這種方式,土豪除外,只會浪費時間而已。

Word是產品需求文件,我自己不太喜歡Word文件,更喜歡XP的Story,不過會一點也沒有關係。

行業知識是產品經理最重要最重要的技能,沒有之一,你可以不懂PPT,不會Axure,不會Word,也不會什麼XP和MVP,但是絕對不能不懂一個行業。某種程度上來講,產品經理擁有的其實是快速瞭解一個行業的能力。現在的網際網路已經和以前的不一樣了。以前的產品經理懂點兒互動,知道什麼是表單,知道點IT術語就能混日子了,現在必須要懂一個行業,地產,金融,汽車,教育,餐飲,醫療等等各種行業,你都需要了解這個行業的模式,如果你不懂,你就是一個畫原型的人。

溝通也是產品經理的必備技能,出門不帶溝通技能,一定會被程式設計師砍。一方面是要跟使用者溝通,一方面是要跟程式設計師溝通(這是世界上最難溝通的物種,沒有之一),一方面要跟領導溝通(其實就是想辦法拍領導馬屁然後哄著他們聽自己的話)。

3 發展前景

不用說,產品經理絕對是一個炙手可熱的職業,而且,TNND的幾乎是零門檻,這表示,是個人都可以說,我想成為一個產品經理。
然而,好的產品經理很多麼?並不多,所以,好像圍棋一樣的,入門容易,學精難。

而且,似乎並沒有一個系統的教程(這真是一個很難讓人相信的事情啊,這麼一種職業,沒有大學的知識培養,甚至都很少有標準化的職業化培訓,全靠業界手把手培養和自發的交流,就能夠拿著無數DS程式設計師根本就想像不到的薪水–產品經理真的跟DS有點兒不搭邊的,當然,我大修真還是在努力做產品人員的培養的)。

產品經理的發展前景是很讚的,只是越來越體系化了,而且很容易出人頭地。

一般來說:

0~6個月:4K~8K
6~12個月:6K~12K
1年~3年:10K~24K
3年~5年:20K~40K
5年~ :30K~

三個月到半年左右就可以算是邁入這個行業啦,如果遇到P2P這種對於專業屬性要求比較高的,隨便在一家公司混點經驗,跳到另外一家新的公司就是一個產品總監:因為並沒有其他人又瞭解金融又瞭解網際網路。

成長路徑:

產品助理-產品經理-高階產品經理-產品總監-CEO

--------------------------------------------------------------------

二 UI

1 工作內容:

收到產品原型,給原型上色,偶爾會自作主張調整下原型的位置,出不同的風格給老闆和客戶選,然後聽他們的意見給出一個自己極不喜歡的風格,最好給Android,IOS或者是CSS做好標註,還有的需要直接幫他們切好圖,最後要練出來象素眼,看看這些不靠譜的程式設計師們有沒有上錯色或者是有偏差。

2 需要技能:

PS,Illustrator,Sketch,耐性,找素材

PS是最基礎的技能。各種圖層通道蒙版神馬的細節的東西就不用說了,很多時候很多公司都願意出所謂的高保真圖。什麼叫高保真圖,簡單說就是不折磨產品折磨UI的破玩意兒。就是把所有的圖都畫出來然後對著UI圖來改,偶爾還會要求做出來網頁能夠點,對於這點我不想再吐槽了,總之,PS是少不了的技能,基本上很多時候其他人都會以為你只需要用PS就能搞定一切。

然而PS始終只是一個工具而已,所以在這裡,PS代表的更多的是一種方案的選擇。比如什麼行業用什麼配色,怎麼樣對齊,怎麼突出重點,PC下應該是多寬,手機應該是多寬,等等等等。

ILLustrator最近似乎是用的少了,我不太確定,但是做向量圖以前是就是靠他的。什麼是點陣圖什麼是向量圖,自行百度就好。以及還有CoreDraw,不知道現在是否常用。然而,慢慢的似乎Sketch流行起來了。

SKetch和Illustrator和CoreDraw之間的差別我說不上來,我記得我的UI小姑娘跟我講這個工具很好用。

耐性必須是UI必備的技能,因為有的時候,老闆跟你較真起來,一個星期不停的反覆修改一個首頁是很正常的事兒。可能顏色要從紅換成黑再換成綠。所以你必須要有耐性,除非你做的設計沒人管,你說了算。而且,UI這東西,是個人都有自己的審美觀。更不用說之前朋友圈的測試,人和人看到的顏色真心不一樣。
所以你必須要有耐性,這是很重要的。

找素材的能力也是必不可少的,你手上必須要備幾個常用的素材網站,大部分的人都是在別人的素材基礎上改來改去。

說到這裡,其實忍不住想加上一句。UI設計師最重要的能力並非是以上幾種,而在於是理解產品經理的需求–前提條件是產品經理很明確的說出來了而且講清楚了需求。

比如說,一個頁面的重要是什麼?最想引人注目的內容是什麼?應該配什麼樣的圖?加上什麼樣的元素能讓網站的風格更醒目一些呢?

這裡大部分其實都是原型設計師要做的事兒,我一直有一個觀點,就是UI其實最應該做原型,只有這樣,才能讓產品經理著重去考慮功能點,讓設計完美傳達產品的功能點。
然而原型設計師這個角色慢慢的被消融了,已經變成了產品經理了。所以大部分產品經理都以為自己是畫原型的,然後大部分UI都會自作主張改掉原型,因為沒有美感。所以通常你會發現美感說有了,也有那麼一點兒,可是總覺得會有一些不對。

我對他們的要求就是,先別管美不美,你先告訴我這張頁面每個模組想要重點表達的內容是什麼,能不能讓人分清主次。做到了這一點 ,再去考慮美感。

3 發展前景

UI的發展前景是很讚的,在兩到三年前,甚至都有人推動讓UI來代替產品經理來驅動。某種程度上來說,UI其實最好的發展方向就是UE,也就是互動,然後就是所謂的使用者體驗優化師–坦白的說我並未覺得有多少公司會真正的設定這個職位,因為太泛了。但是對於現在火熱的O2O來說,無論是線上還是線下,都希望提供一個極致的使用者體驗,所以我說不好。

但是大部分的UI都應該去朝著互動的方向發展,而不是去切頁面。。。

UI薪水其實跟產品經理在前期差不太多,中期差點。後期相差比較遠,一般來說:

0~6個月:4K~8K
6~12個月:6K~12K
1年~3年:10K~20K
3年~5年:16K~30K
5年~ :24K~

UI的成長時間大概是在兩年左右,基本上PC,IOS,Android,H5全部都做過一些專案,設計過幾個Logo,做過一些專題和Banner圖,才算是比較完美報。

然而想要做的更好一些就有點困難了,除非你的遇到了一家公司,對使用者體驗要求極致,然而那個時候,並不僅僅是UI和UE相關的內容了。

成長路徑:

實習UI-初級U-中級UI-高階UI(UE)

4.入門門檻

UI對入門門檻要求還算是比較高的。首先你得有一臺Mac。。大部分的情況下你都需要Mac。
然後你要懂之前提到的常用軟體,UI的互動規範,配色等等等。

5.哪些行業適合做UI

IT界:無
其他界:傳統做VI的,就是平面設計的會轉一些。跟著基本上就是小鮮肉了,剛畢業就從事這個行業的會比較多一些。還有一些學美術的,會手繪的。

PS:想了想,從沒怎麼見過程式設計師轉行做UI的。只見過UI人員會寫程式碼的。

6.職業限制

UI這個職業的限制在某種程度上就是不太清楚自己應該朝著UE發展。所以時間長了工作就會變得單調,兩年或者是三年之後原地踏步走沒怎麼有進步的人很多。像Metro(扁平化)或者是material design這樣的風格一不熟悉二不瞭解三不想嘗試的人還是挺多的。

很多人做了很久其實還是分不清產品經理想要在一個頁面上表達什麼–這有時候真的並不是UI的錯。

--------------------------------------------------------------------

三 CSS

1 工作內容:

產品設計好原型,UI做出來了效果圖,剩下的就是CSS工程師用程式碼把靜態檔案寫出來的。

所以CSS工程師和OP一樣,都是可以在不用瞭解業務需求的情況下就能完成工作的唯一兩個特殊職業。
一般來說,CSS工程師並不存在,寫CSS的人多少要寫一些JS程式碼,然而確實也會有一些妹子真的就是學不會JS,有一些漢子真的就是寫不出來JS,所以我還是把他們兩個拆開了。

CSS工程師要考慮更多的就是相容性,簡單說,IE核心和非IE核心(WEBKit),IE10以下和其他。我是強烈建議新人不要去學IE10以下的Hack的寫法的,讓IE10以下的,不支援Html5的都去死吧,表再來跟我說使用者還在用IE678了。

2 需要技能:

環境【IDE(WEBStorm,Sublime,EditPlus),原始碼管理(SVN/Git) ,WEB伺服器(nginx)】
基礎【PS,域名,Html,Html5,CSS,CSS3】
擴充套件【自適應,響應式,Bootstrap,Less,Flex】

無論是哪一種程式設計師,學會搭好的自己的環境都是第一步。選好IDE,選好原始碼管理工具,學會每天把自己做好的Html檔案釋出到伺服器上可以直接訪問。這都是最基礎的技能,記著這些東西並不難,你只是需要不斷的去練習去熟悉它而已。所以從第一開始就去適應它。

會用PS是因為一是要切圖,二是要製作雪碧圖。這兒簡單說一下,很多人都會說,切圖這個活倒底分給UI還是分給前端。我一直都覺得這是CSS必須要做的,因為只有CSSER才會知道怎麼切合適。然而大部分Android和IOS人員都不具備切圖的能力,這也是我一直很無語的工作方式,反正,我要求我的Team,無論是Android還是IOS都必須要會自己切圖。

另外再解釋一下所謂切圖和切頁面的概念。切圖指的是把需要用到的小圖示了神馬的切出來。切頁面一般指的是就是把整個效果圖做成Html網頁。兩種叫法我都覺得Low的不行,然而很多人都喜歡這麼叫,而且會混到一起,時間長了,也就習慣了。

自適應和響應式是前端人員必須要懂的概念,也是必須要能做到的。畢竟現在是各種跨屏時代,以及各種解析度都層出不窮,H5又是眼下最火紅的職業和技能。

曾經有過工作半年或者是一年都不太懂什麼是自適應和響應式的,這並不好。

Bootstrap,Less和Flex也是CSS工程師必須要會的。學會Bootstrap更重要的還是要去學習它的思想,這是很重要的一點,它幫助你開闊視野,你才會明白,靠,原來可以這麼寫。

Less也是一樣,在推薦less和Sass之前我猶豫了很久,然而看到Sass要Ruby環境就有點不喜歡了,雖然Bootstrap已經轉向Sass,但是在一般的專案中,Less也夠用了。所以還是果斷的推薦Less了。

Flex是一個好東西,我瞭解的還不多,在真實的專案中還未有使用過,不過挺看好的。
簡單說呢,前端工程師需要的大多數就是技術相關的技能,倒不需要太多的溝通啊和耐性啊神馬的技巧。

哦哦,想起來了,CSS的知識比較零散,要死記的東西其實是比較多的。

3 發展前景

CSS的發展前景最近幾年好的不行。在Android和IOS大行其道的時候,一大部分人都轉去做了這兩個行業,然而突然之間,因為微信的緣故加上JS的魅力,H5突然又火爆起來,所以呢,CSS整體來說還是一個挺靠譜的職業。最關鍵的是,CSS入門最快的職業啊,幾乎零門檻,只是轉JS還是挺不容易的。

CSS薪水如果純粹只是做CSS的話,12K到15K基本上就是封頂了。。。所以:

0~3個月:4K~6K
3~12個月:5K~8K
12個月以上~:8K~15K

CSS的成長是非常快的。修真院的線下弟子都是一個月左右就可以獨立做專案,可以進入IT修真界闖蕩江湖了。正常情況下,3個月左右是沒問題的。

我的要求比較高,所以所謂的獨立做專案就一定是獨立做專案,不用懷疑這一點。包括自適應,響應式和Bootstrap。

所以。想要拿高薪,CSS都必須要學JS,沒有其他的途徑。

成長路徑:

CSS工程師-初級JS工程師-JS工程師-前端架構師-前端Leader(IOS,Android和JS通吃)

不要相信NodeJS,那只是玩玩而已。不要想從前端轉後端,太難了,後端和前端是兩個不同的概念,特別是對基礎知識要求的特別高。

CSS和JS最好的方式就是IOS和Android通吃,精通一種,然後其他的能做專案,並不需要考慮其他的選擇,推薦再學點其他指令碼語言,首推Python,永遠不要去學PHP,表問我為啥,個人好惡。
你一定要問,等我心情不好的時候再說。

4.入門門檻

零門檻!你相信咩,一個程式設計師的職業居然可以零門檻進入。。。
好吧,大多數人其實並不把CSSER稱為程式設計師,不過,你至少學會了CSS,就能在IT修真界這個神奇的元世界裡生存,就有了進軍其他職業的可能性。

5.哪些行業適合做CSS

IT界:All
其他界:All

PS:正常人都可以學的會啦

6.職業限制

CSS的職業限制有三個,一個就是不去學自適應和響應式,一個是不去學框架,另一個就是學不會JS。
這三點都是很重要的突破。然後這個職業呢,怎麼講,在一家公司裡可替代的程度比較高,並不算特別重要,做不了核心崗,也不存在什麼程式碼交接。你就算程式碼寫的再爛,也最多就是花一個月時間重寫。。。

所以如果你不想做JS,你就真的真的發展受限制了,一定要記著,CSS只是你的一個跳板。
另外,因為零門檻,所以你其實還是有很多計算機相關的知識要補的,這是一定的,沒什麼可商量的。

只是做前端還好,如果想做後端,只是不想花那麼長的時間才進入這個行業,就必須要從CSS做起,跟著用自己的其他時間惡補計算機基礎了。

--------------------------------------------------------------------

四 JS

JS說起來必須是一個神器,這個當年10天內被開發出來的神器,以一種誰也想象不到的速度快速發展,它擊敗了Java Applet,逼死Flash,當Android和IOS看似一統全球的時候,JS慢條斯理的和Html5一起蠶食App市場,甚至還出來了NodeJS這種連後端都不放過的殘暴東西。

原生和WEB的兩種方式一直在爭論不休,而我自己在三年前就是絕對的WEB支持者,windows對於JS支援的更徹底,只是Winphone一直不給力。

好吧,對於拿NODEJS做後端工程專案我還是有點不情願,然而提供各種輔助工具什麼的還是挺不錯的。JQuery,Ajax和RequireJS和Angularjs和PhoneGap都是一些標誌性的轉變,還包括ReactJS。JS簡直了,簡直了,簡直什麼都不放過。

所以JS簡單麼?我帶著你們瞭解一下JS工程師是什麼樣子的。

1 工作內容:

JS工程師其實分成兩類,在之前講CSS的時候已經提到過,一個是套頁面的,一個是前後端分離的。對這兩個概念還是分不太清的,可以回過頭去看CSS的部分。

對於套頁面來說,JS工程師的職責非常簡單,一個是做一些簡單的動畫和互動和驗證,輪播圖,彈框,驗證使用者名稱是否為空等等。另一個就是通過Ajax取一些後臺資料,然後在頁面上展示出來。

那個時候的JS工程師並不被太多人重視,很多時候一些後端的人把前端的工作也做了–除了寫CSS,大部分的後端工程師寫點JS還是不成問題的。

可是前後端分離的出現,徹徹底底的改變了前端的世界。前端居然有架構了,前端居然也有“編譯”的概念了(你能想象麼,JS的專案居然不能直接開啟原始碼直接使用了,必須要經過編譯才可以)。前端工程師和後端工程師只通過Json資料互動(感謝Nginx提供了一個完美的跨域解決方案,再也不用什麼Jsonp了),然後伺服器端的同學發現:好簡單啊,我對Android,對IOS,對Html都只需要提供一套API就夠了~~

前端同學更開心,再也不用去搭建各種悲劇的開發環境了!前端變的很輕,而且控制慾很強(AngualarJS好贊),頁面跳轉神馬的SoEasy,而且也有了Bower這樣的包管理工具,還有類似於JSP自定義Tag的指令,MVC,還有了Service的概念,馬丹,前端到底發生了什麼!

所以我們現在說到的,基本上就是前後端分離的工程師,他們的工作職責就是和IOS&Android的工程師一樣,跟後端定介面,確定框架和架構,分模組,然後跟後端聯調互相吐槽對方是渣渣。

專案結束之後修復線上Bug,不停的跟使用者說:在我這裡是正常的,你換個瀏覽器試試?不行就清一下Cookie,再不然就換臺電腦。

2 需要技能:

環境【IDE(WEBStorm,Sublime,EditPlus),原始碼管理(SVN/Git) ,WEB伺服器(nginx)】
基礎【Http,REST,跨域,語法,元件,F12,Json,Websocket】
框架【JQuery,AngularJS,Bower,RequireJS,GruntJS,ReactJS,PhoneGap】
業務【金融,教育,醫療,汽車,房產等等等等各種行業】
第三方【微信,QQ等各種第三方登入,支付,IM,地圖,語音,視訊,圖片】

環境不說了,參考CSS的。
基礎跟CSS差別就好大了,要有一些網路協議的基本概念,要了解什麼是Http,什麼是Https,什麼是WebSocket,什麼是Rest,各種JS的語法(太複雜的完全不用管,別去管什麼閉包什麼Prototype什麼This的指向),Json是必不可少的東西。

框架就多了去了。直接拿JQuery來學習就好,表去太在意什麼原生語法,大部分場景你都不用擔心引入一個JQuery的庫導致系統變慢,AngularJS真是一個好東西,表太糾結一些細節,Bower,RequireJS和GruntJS這些會有一些前端大牛幫你搭好框架你直接用就好了。
想做點App就用PhoneGap,想嘗試一下ReactJS就去試吧(我很想試一下然而看到有Render就看不下去了)。

必須提醒一次,如果你是從CSS轉到JS的,那麼一定要看一下這篇貼子。【IT修真院】怎麼樣從CSS轉JS-IT修真院 。這裡強調的就是,你必須要懂業務邏輯,這跟CSS完全不需要懂業務邏輯簡直是天壤之別,很多時候你並不是因為技術而無法學會JS,而是缺少對於業務邏輯的理解。

當然啊,這並沒有完。還有無數的第三方庫等著你,做微信呢你必須要用WX的SDK,要用百度地圖呢就必須要用百度的SDK,還有各種支付啊神馬的。如果你要做IM就有環信啊神馬的。

所以。JS就是一個真正的程式設計師,一個真正的工程師,不但要能把程式碼實現,還需要理解需求,需要懂得編碼規範,需要知道如何控制專案流程和進度風險,需要修復線下Bug,需要調優,需要做版本管理,需要制訂介面,需要編寫技術文件,還需要做新技術的調研或者是帶新人。

現在你瞭解了咩?(如果不瞭解,加入IT修真院嘛,老大帶你在IT界從菜鳥修成大神)

3 發展前景

我說了那麼多,你們對JS的期望也很高了吧。坦白的說,有點高的離譜!
JS是唯一一個可以在兩年之內薪水到20K的職業。
雖然工作五年或者是七年的JS在薪水上差別並不太大,但是也已經讓很多人難以置信了好麼。

好多人在別的行業,工作十年都拿不到10K啊親。

0~6個月:6K~10K
6~12個月:8K~14K
一年~兩年:12K~20K
兩年~五年:18K~30K
五年以上:24K~

JS的入門相對來說比CSS難的多(表怕,有我大IT大修真院),但是他的好處是學會一點是一點,並不像Java一樣,絕對是前期Gank型英雄,到了6級就能四處殺人。Java是後期,要到16級以後才能出山才能夠震撼全場。

所以JS相對來說比較平滑,而且現在學習的曲線也比較清晰,慢慢在業界都形成了相對完善的框架。JS可以選擇前進的路有很多種,只要你不是太瞎(跟著修真院就一定不會瞎),就沒什麼大的問題。

成長路徑:

JS菜鳥-JS初級工程師-JS中級工程師-JS架構師-UED-前端Leader-前端大牛

大概這個樣子啦,JS工程師在後面有一點後續無力,一般來說,我還是強烈推薦JS,IOS,Android三者通吃,在我的帶的Team中也一直要求他們這麼做(雖然並未能完全實施成功)。

這三者有太多相似之處了,到最後你會發現,語言只是一種工具而已。要做的事情,其實是差不太多的,並不需要對所有的語言都特別熟悉,有一種打底的,其他的都可以隨意去玩了。

4.入門門檻

必須有CSS基礎,必須有CSS基礎,必須有CSS基礎。
或者是有後端Java基礎。

總之你要麼是會了CSS,要麼是精通了一種後端語言,千萬不要CSS沒學好,後端語言也不會就直接學JS,心裡會沒底,不踏實。

其他的都沒什麼了,列出來的基礎知識,自己慢慢補就行了。

5.哪些行業適合做JS

IT界:CSS,然後是所有的都可以
其他界:所有的都可以

好蛋疼的結論然而事實上就是如此,這波JS的紅利受益於微信,以及移動端的普及。我不確定在三年或者是五年之後會不會還是這種狀態,然而三年和五年已經足夠可以改變你的人生了,所以,你在等毛線?

大修真院的弟子中有搬磚的有退學的有高中畢業的有做電汽和通訊的,你想想為什麼你不可以?唯一不合適你的大概就是:你真的沒有程式設計思想哈哈哈,然而這確實是一件很難解釋和預測的事兒。我也確實見過反應比較慢的,進度比較慢的,但是無論如何,混口飯吃,不成問題。

6.職業限制

JS的職業限制也挺多的,主要就在於學習的方向上很容易誤入歧途(至少在我眼裡是這樣的,相信我,我不是什麼好人,我並不會我說過的每一句話負責)。比如說一直堅持喜歡用原生,各種喜歡寫一些奇奇怪怪語法(我把我看不懂的語法都歸結為奇怪的語法),各種回撥等等等等。

學到一些好的框架其實很讚的,對於大多數人來講,就夠了。只是缺少一個清晰的指引。
有的時候你會發現,你對Http瞭解的比較少,會是一個瓶頸。
你對陣列啊,迴圈啊不瞭解,是一個瓶頸。
你對MVC不瞭解,也是另一個瓶頸。
對Json不懂,不知道怎麼定介面,也是個問題。

這些都學會了,也會遇到一些問題。就是JS的工程師三年,五年,七年的差別,大多數人都不算特別的大。
所以總會有人想學後端–但是我絕對不贊成學Java,NodeJS也可以不去學,不如去學習Python,更不要提PHP啦(我真心不喜歡PHP,不知道為嘛)

或者說,後端並不是語法,而是牽涉到演算法,架構,效能,業務,選型等等跟前端幾乎沒有任何關係的知識,所以學習一門指令碼語言,能做點簡單的東西就好了。

還是需要把注意力轉到IOS,Android上去。

--------------------------------------------------------------------

五 後端(Java/python/go)

說到後端,其實我主要想說的是Java。C和PHP這兩種語言我都不喜歡,之前也說過了,我自己絕對不是一個說話公平公正的人,什麼觀點都帶著自己偏激和極端的調調。

我之前在貼吧跟Java吧的吧主一直在撕逼(原因很簡單,我說教大家學Java,一個月收400塊錢,他說我是騙子封我貼。然後我說好吧,我不說教大家學Java了,我來給大家解決在學習過程中遇到的困惑,他說貼吧不能發問答貼。我說行,那麼我就寫一些新人學Java必須要學資料庫,資料結構和計算機網路,於是一群吧主過來噴我說,我沒學過這些我也照樣學會Java了啊,什麼多執行緒什麼繼承等等,我無語瞭解釋說Java語法不重要,重要的是要學會後端的架構,要懂演算法,要懂業務,要懂系統的擴充套件性,要會除錯程式,於是吧主們就把我封了,我很不爽,就新開貼子跟他們撕逼對罵–我從來不是一個重身份的人,我罵人會很髒,所以如果看到這個貼子覺得我很厲害那麼你瞎眼了,我就是一個不喜歡就說,誰噴我一臉我噴誰一身的性格,現在的結果就是Java吧的吧主每隔10天就來封我一次-哈哈哈哈哈比鬧鐘都要準,所以三個月過去了,我帶出來很多CSS和JS的學員,然而Java的學員並沒有多少。所以如果有人去Java吧替我罵一下那些XX吧主並且截圖給我看,我會很開心很開心很開心,說不定就會給你們開小灶哈哈哈哈。)

之所以說這些,一方面是400多的贊讓我覺得有點羞愧,另一方面也是想強調一個概念,學後端,學會語法只是開始而已,最後一個就是我是一個小人,誰欺負我我就想欺負回去。

我想想該怎麼描述後端的工作。後端跟前端是截然不同的,之前講過。前端是Gank,後端是大後期,要等到16級以後才能V5起來,而且我非常不推薦前端去學後端(所謂的全棧工程師完全是扯,我有時間會寫一下,為什麼不要去做一個全棧工程師)。後端要積累到足夠多的專案經驗,才能夠成為一個靠譜的後端工程師。我覺得。我來舉一個跟著我線下半年的小培宇的例子就能簡單說明一下後端的工作。

小培宇是第一個來到我大修院面試(嗯,最初我是給他們發工資然後帶他們學習的)的人,跟我講他是考研失敗,差了幾分,然後也做過點專案,我隨便問了幾句就知道了他的狀態:人挺聰明的,但是在學校肯定玩的瘋,所以問點排序演算法還是能夠答的出來,資料結構也懂一點兒,LinkedList和ArrayList刪除資料誰更快也能答的挺靠譜的,但是絕對絕對沒寫過一行工程程式碼。

他打動我的那句話就是:不在乎工資多少就想多學點東西。很好,我默默的點個贊,因為我本身就想把自己這幾年積累的經驗和知識和走過的坑整理出來,告訴網際網路的新人,所以也不抵觸帶新人,坦白說,願意像我這樣帶新人的公司,幾乎沒有,帶新人真不是一般的累。幸好我之前在各種公司中都帶過各種新人,好的壞的都帶過,所以還算是熟悉。

於是我給培宇精心設計了他的學習曲線,這也是我大IT修真院的核心觀點:
1.先搭建基礎環境(Maven,SVN,Eclipse,jetty,SecureCRT,Linux,Mysql)
2.做簡單的CRUD(DAO-自己封裝的資料層,junit,Log4j,Rest,Spring,Spring MVC,Json,JsonTaglib)
3.做一個相對複雜的系統DB設計,介面設計,專案部署,錯誤提示,Bug查詢,怎麼打系統日誌。
4.做了一個微信相關的專案,瞭解微信的API,互動方式,Cookie,攔截器,AOP,登入系統的設計,命名規範等。
5.拆分Service,將Home和Service分開,使用RMI呼叫,實現各個層次之間都可以完成分散式的部署,使用Tuscany(真心喜歡Tuscany)完成SCA。
6.使用MongoDB完成地理位置的搜尋,簡訊,圖片上傳,雲端儲存,使用Tiles來配置頁面模板。

這些內容他花了將近三個月的時間。對他來說已經是學會了很多東西了,這三個月是幾乎沒日沒夜的學出來的,要知道他之前壓根就不知道什麼是Spring,生成Json和套JSP的區別我罵了他好幾次他才弄明白,經常會遇到一些Maven或者是Tuscany的報錯不知道該怎麼解決,資料庫欄位的規範和介面規範常常被我黑的體無完膚。很多東西都只是知道個皮毛而已,你們自己說說,學會Java語法算什麼?

這還是有我來帶,有我來教,有我給他定製合適的專案教給他去做,如果沒有這些,你們自己學,學會我說的這些東西要多久?
別的不說,學會怎麼打日誌,怎麼根據線上的報錯去找錯就不是一個月兩個月能解決的。做為一個工程師,應該明白,很多時候要學會正確的路怎麼走,還必須要知道錯誤的路是走不通的。正確的路大概就那麼幾條,錯誤的路呢?

為什麼很多時候我看到錯誤日誌就會明白是什麼地方報錯了,是因為我之前花了無數的心血和心力在查詢這些錯誤上,所謂的經驗就是這樣,看的多了,一眼就知道大概什麼地方報錯了,然後隨便百度下,就能找到解決方案,跟著去嘗試倒底行或者是不行。這些是看書,或者是看視訊能教會你的麼?

到現在為止培宇已經跟了我快半年了,還是被我罵的狗血噴頭,別的不說,就是介面的Wiki文件和程式碼保持一致,他都會經常犯錯—這跟Java語法有什麼關係,然而不經過一個好的訓練,想做的很好,很不容易。

其實他接下來要學的東西更多。Memcache或者是Redis,ActiveMQ或者是RabbitMQ或者是QPid,Mybatis或者是SpringJDBC,Struts或者是SpringMVC,我告訴他的只是一個我們在專案中經過實踐的,認為最合適的架構體系,然而他並不知道是怎麼選擇的。他必須要把這些相關的選擇都有所瞭解,然後才能成為一個架構師。這個時間,如果一直跟著我,我覺得應該是在一年到兩年左右。

這是一個橫向擴充套件的內容,在這個時候我還沒有要求他去看一些深層的東西。只是需要他停留在會用的狀態就可以。在會用這些技術之後,再去了解一些自己喜歡的技術的細節,不成為一個只會使用工具的碼農,所以培宇問我還需要多久才能達到我的水平的時候,我其實並不想打擊他。我也是很刻苦努力的人啊,曾經無數個日夜也是默默的去一行一行程式碼去用最笨的方法調錯,並沒有人告訴我怎麼樣是正確的只有靠一個又一個的專案總結出來的經驗。

而且我還會一些Drools,CRM,Lucene等等一些和架構師關係不大的事兒偏演算法一些的東西,畢竟當年也學過點資料探勘機器學習之類的內容。

就算是學會這些了,對於一個後端工程師來說就夠了麼?不不不,還需要學習JVM優化,監控,部署流程,釋出流程,專案進度管理,程式碼重構等等等等。

所以,你們自己算算,這些東西如果都學會,一個Java工程師要多久才能成為架構師?

然而我還是對帶培宇很有信心,首先他相信我,他願意學,跟我當年一樣,不怕苦不怕累,人也夠聰明,做事也有責任心,其次我知道他應該怎麼走這條路,先做什麼,再做什麼,哪些該花時間和精力,哪些不該花。

我希望他能夠在一年之內就成為一個架構師。就如他在三個月和六個月之間獨立做專案已經不成問題了一樣(記著,我說的是獨立做專案,自己設計DB設計介面設計架構完成需要的功能,從設計到實現完全自己來)。

我也希望我能夠幫助很多和培宇一樣,有實力有能力只是沒有遇到我的那些人,這也是我為什麼在知乎發貼的原因,IT技術的培訓,哪些培訓機構能做到這一點?

這個真實的小故事,就是想跟大家提前說清楚,我對後端的要求有多高,這也是後端特別好玩的地方。你必須要會很多種框架,有足夠寬廣的視野,還需要有足夠多的專案經驗(做金融和做地產是兩個完全不同的概念),還需要懂專案開發流程以及快速定位線上問題的能力。

這些,就是我說的後端的主要工作內容了,這也是為嘛我說到後端的時候,大部分就是在指Java,而我說Java的時候,基本上是隻指後端,根本就不是指Java的語法。更不是說是Android。

現在明白為什麼後端是大後期了麼, 為什麼不建議前端學後端了麼。後端要懂的東西,太多了。
言歸正傳,我來講一下後端工程師的相關內容。

1 工作內容:

大部分的後端工程師都停留在功能實現的層面上。這是現在國內二流或者是三流的公司的現狀,甚至是在某些一流的公司。很多時候都是架構師出了架構設計,更多的外包公司根本就是有DBA來做設計,然後後端程式設計師從JS到CSS到Java全寫,完全就是一個通道,所有的複雜邏輯全部交給DB來做,這也是幾年前DBA很受重視的原因。

所以你能看到成千上萬行的儲存過程(儲存過程,檢視,事務,外來鍵 這些東西我真心希望永遠不要在Mysql裡出現),這就是外包公司中最常見的架構體系。來個SSH,Over。

好一點的會個WebService,用過ActiveMQ,也用過Redis,甚至還會用過Dubbo。然而大多數情況也根本不瞭解為什麼這麼用。

很多人寫了兩年或者三年程式碼都沒做過獨立的DB設計,不知道什麼是REST,不懂怎麼做介面設計,也不知道怎麼去定位問題。

所以對於他們來說,拿到產品經理的需要,會有一個專案經理或者是Leader分配任務,跟著按步就班的把程式碼寫完,跟前端除錯完,QA測試不通過,加班改回來重新改,改完QA又沒通過,再加班再改,QA終於通過了然後上線了突然發現另一個好的功能不能用了,跟著再接著改,在線上釋出一次又一次。。眼睛熬的通紅最終真的受不了了,休息幾天換另一家公司漲個40%左右的薪水繼續這樣的日子。

不不不。我帶出來的後端程式設計師並不要這麼做。所以,我帶的後端程式設計師的工作方式是這樣的。

拿到產品需求-》後端程式設計師做介面設計,架構設計,DB設計-》拿出方案來做技術方案評審-》評審通過,開始預估時間-》每日更新自己的Task-》介面完成自測一百遍,每日部署到開發環境,隨時整合-》CodeReview-》重構程式碼-》效能測試-》Demo通過-》釋出到測試環境-》修正Bug-》重新發布-》釋出到線上環境。

這中間需要理解需求,需要拿出多個方案,需要跟前端配合,需要跟QA配合,需要跟運維配合。需要跟產品溝通,有時候還需要找UI。後端幾乎是一個核心節點,而這個核心節點接起來了所有的人。

我不知道我講清楚沒,很多時候我都發現我可能太久沒做一個IT新人了,都忘記了新人們關心的問題或者是困惑是什麼。
這就是我知道的,兩種後端程式設計師的工作內容。你選哪一種?

2 需要技能:

環境【IDE(Idea/Eclipse,Maven,jenkins,Nexus,Jetty,Shell,Host),原始碼管理(SVN/Git) ,WEB伺服器(nginx,tomcat,Resin)】
基礎【Http,REST,跨域,語法,Websocket,資料庫,計算機網路,作業系統,演算法,資料結構】
框架【Spring,AOP,Quartz,Json TagLib,tiles,activeMQ,memcache,redis,mybatis,log4j,junit等等等等等】
業務【金融,教育,醫療,汽車,房產等等等等各種行業】
第三方【微信,QQ等各種第三方登入,支付,IM,地圖,語音,視訊,圖片】

環境不說了,搭環境永遠是後端人員比較頭疼的事兒,所以才會有很多人想用簡單方便的的語言來解決這些問題,比如說Python之類的。我還是喜歡Java,大概很多人覺得重,然而我喜歡,我覺得不是“重”,而是“正”。好像劍一樣,王者之劍,路子很正。

基礎知識太多了,正是我一直強調的,做後端,這些基礎知識瞭解多少,其實就是決定了你以後能走多遠。這些科班出身的計算機ER,會了這些,才有了一個平臺,才可以站在這個平臺之上去搭建更高層的建築,如果根基不穩,你覺得你會對上層的知識理解透徹麼?

框架是Java最有資格說自己是架構師的原因。無數的開源框架,選型,篩選,對比,填坑,優化,維護,尋找最適合的業務場景,很多時候很多公司的架構簡直了(我不吐了,很多技術都在用然而每一種用法幾乎都是錯誤用例的典範)。所以你想想,你大概要有多少框架要學要用?很多時候,你必須要想清楚,哪些是需要認真瞭解的,哪些是需要一筆帶過的。

業務對於後端人員來講無比重要,不懂業務,就沒有架構。這是我經常說的一句話,這個世界上不存在不懂業務的架構師(我不怕被打臉),一個架構師必須要深入瞭解業務體系,知道哪些是會變的,哪些是不會變的,哪些是重要的,哪些是不重要的,然後才能做出來適合某個應用場景的架構來。比如說,同樣的表,幾千萬的量和幾億的量差別非常大,頻繁讀和頻繁寫的設計也完全不同。會有一些通用的架構思想和理念在裡面,但是都是需要跟業務結合落地的。

PS:很多金融證券行業的程式設計師,就是靠業務知識混飯吃的。對他們來說,對業務體系的瞭解要比在技術上的追求重要的多。

第三方的東西和JS的內容相似,我不想多說了,而且 JAVA的第三方的東西更是多的離譜,坦白的說Drools這東西我就沒徹底研究明白,雖然很喜歡。而像這種類似的東西,太多太多了。

3 發展前景

對於後端人員的發展前景,我有兩點想說的。

A.無論是B/S還是C/S,無論是WEB還是原生,或者是智慧硬體,後端都會屹立不倒。
B.隨著後端架構體系的穩定和成熟,後端人員在效能上需要擔心的問題不多(再加上大部分應用場景其實並不需要那麼多的效能),所以更多的應該會關注於一個穩定的擴充套件性好的架構,以及快速實現能夠複用的業務邏輯模組實現上。

最近後端人員在價格上,其實有點偏低於前端人員的,就向我之前所說。兩年的JS可能拿到20K。兩年的Java想拿到這個,非常難。然而,五年的Java或者是七年的Java,拿到30~40K,不難。

更高的,也不稀奇。

0~12個月:4K~10K
一年~三年:8K~20K
三年~五年:18K~30K
五年以上:30K~

成長路徑:

Java初級工程師-Java中級工程師-架構師-技術經理-技術總監-CTO-CEO

後端的爆發力並不差,只要你給他時間,只要你願意前進,後端的路線很深,深到你有時候會覺得自己還沒來得及全部瞭解,就已經有無數的新人湧進來要替換你的位置了。

4.入門門檻

計算機網路,資料結構,資料庫,作業系統,Java基礎語法。
Java是入門門檻最高的一個,沒有之一。(好吧,我雖然說的是後端,然而一直把Java等同於後端)

當然,如果你的志向並不是一個架構師,只是像NodeJS和Python或者是PHP一樣隨便做點小專案,那麼也可以說的得上是沒有門檻,但是我說過我有偏見,所以可以直接把我無視掉。如果你覺得我說的哪點不對,你過來揍我啊。

要跟我學Java,就必須把這些基礎知識學好,我只帶想成為架構師的人。

5.哪些行業適合做後端工程師

IT界:無
其他界:無
科班生:計算機專業的中等水平能力以上

所以如果有各種培訓學校告訴你零基礎4個月20000塊錢把你教出來做Java後端,然後你月薪上萬,你就直接一鍋蓋蓋他臉上吧。

6.職業限制

後端的職業限制有很多,第一個職業限制就是不去做獨立的專案,不做DB設計,不做介面設計。
第二個職業限制就是視野不開闊,不知道有什麼樣的開源軟體可以用。
第三個職業限制就是不重視線上環境,不知道如何寫日報,也不知道如何快速定位。我不得不說我帶過的兄弟,有一次解決線上問題的時候快把我氣瘋了,他們在那裡猜測問題出現的原因,跟玩福爾摩斯一樣,不打日誌不看日誌,根據現象倒推結果,直接盲改程式碼再扔到線上看看有沒有解決問題—那是最後逼不得已的辦法好麼,在此之前能不能安靜的把日誌打出來,確認一下到底是哪裡出錯了?
第四個職業限制就是不懂版本管理,不懂Bug修復流程,不懂開發流程。這些其實都是一整套的流程體系(等我心情好了,有人把Java貼吧吧主罵的狗血噴頭了,我大概也會寫出來)

大部分後端的人員都會抱怨自己不會寫前端程式碼,不會寫Android或者是IOS,不能自己獨立完成專案,所以他們才傾向於自己做一個全棧工程師,做一個自己喜歡做的東西。
這也是後端人員會經常覺得不爽的地方,自己寫的東西完全感受不到,而且一旦出問題很多時候都是大問題,解決起來很麻煩,經常不敢改程式碼,因為看不懂前人的東西。

有時候後端人員會比較木,雖然很各種職業都交流,但是多數都會覺得自己很NB其他人都很SB。
這也是後端人員比較大的問題,往上走的話也容易遇到各種瓶頸,做技術的,做到CTO,再去做CEO,其實很難的。

而且,等你走到足夠高的高度,你會發現,一個七年工作經驗的正常發展的後端工程師,一定會有一個七年工作經驗的產品或者是運營,在薪水和職業上秒殺他。這也是做技術的最大的悲劇。

不過大部分的後端工程師都比大部分的產品和運營人員薪水高,這也是這個行業的特徵之一,所謂高不成低不就,小富即安,就是這樣的。

如果你是一個有理想的後端工程師,我建議你多關注一些敏捷開發,多關注一些專案管理,學會帶著自己的兄弟們一起做事兒。再不然,就是在技術這條路上一直走到黑。

--------------------------------------------------------------------

六 DBA

首先說,我對DBA的瞭解並不專業,也不夠多,而且對這個職業也有偏見。所以,我只能把我感受到的,我會的講出來,然後如果說你們覺得我說的不對,要麼自己開貼回答來打我的臉,我虛心學習,要麼就直接笑笑走開,表在評論裡說三道四,最煩這個。

七年或者八年或者很早之前,DBA是非常吃香的職業。講這個,大概要從系統的效能瓶頸說起。
很早之前,網際網路剛開始的時候,算是蠻荒時代。那時候大家寫程式碼還沒有規範,能把功能做出來就不錯了,大家拼的是什麼呢,Sql的效能。基本上就是沒有中間層,也不會分什麼服務層和Web層,很多時候SQL都寫到頁面上。

然後Sql呢,又屬於那種外來鍵,檢視,儲存過程的天下。這就導致了出現一個問題。大部分的功能都是通過DB來實現的,也就是說,什麼計算啊,分組啊,排序啊,篩選啊,全是靠DB來做。
小功能還沒問題,功能一多,問題就出來了,一個Sql語句執行了半個小時沒做完,然後整個系統崩潰掉了。

那麼,怎麼解決呢,解決的方案就是。。。。我其實很難理解這種思考方式。。。。 就是找一些人,對DB特別熟悉,他的職責就是稽核所有程式設計師的Sql語句,去找出來這些Sql哪些用到索引了,哪些沒用,能不能執行,怎麼優化,以及監控線上的慢Sql。一個公司能養得起DBA的,很NB了。很貴的!

所以這是那個時候的DBA,但是,很快大家發現有不同的方式了,這種方式就是,我靠,原來我可以用分庫分表,我可以做讀寫分離,我能做主從。於是對於DBA的依賴又重了一些,再加上資料的安全和備份,所以DBA的作用已經有點偏移,然而最關鍵的還是系統架構的發展變化了。分散式的概念慢慢的起來了,大家明白了一件事兒:機器不夠,並不是說把伺服器升級成小型機就能搞定了,而是應該用更多的機器來做,因為便宜,而且更簡單。所以後臺的系統架構慢慢的演化出來很多不同的層。WEB層,服務層,快取層,DB層。對於快取的使用越來越重要,由此而變化的觀點就是資料分成了快取和持久兩種結果,DB慢慢的變成了持久層-也就是說,只是要把資料持久化,並不希望它去承載使用者的壓力,快取主要用來扛併發,不需要做持久。這是一個很關鍵的點,也是決定DBA命運的轉折點。

當然現在還看不出來(像MongoDB,Cassandra,這些,又是另外一種不同的技術走向,包括Mysql也在不斷的想要提升自己的效能),所以這些東西我們先拋到一邊不談。只說這中間發生了一個變化,對於後端人員來說,對資料庫訪問的變的嚴格起來了。儘量單表操作,不允許複雜查詢,設計架構的時候必須考慮快取,甚至我們在白社會的時候還設計了一套通用的DB訪問機制–雖然是七年前的設計然而現在一直都覺得很贊,只是再也沒有如我在搜狐的時候那群人做這些事了-反正我見識少,一直在小公司混,也不怕你們嘲笑我見識少。

這樣就導致DBA的一個很重要的工作職責,失去意義:就是查詢慢Sql,因為我們在系統架構層已經決定了不再這麼使用DB。這樣使得Oracle什麼的也慢慢的失去了價值-我知道我說的每一句話都有可能會引起爭論,所以我不得不再次強調一次,純屬個人的腦殘關點,不喜歡的話,要麼認真的回覆來打我的臉教我做人我認真學習,要麼就是滾遠點表理我。 包括建表,去除外來鍵,去除事務,去掉檢視等等等,一瞬間,DB的使用簡單多了。

那麼,DBA還能做什麼呢?
對於我現在的理解來說,DBA的職責慢慢變成了資料備份和安全策略–然而這部分又跟運維的工作有了衝突,所以在某種程度上來講,我都會在五十人左右的公司把DBA安排到運維部分,跟運維的兄弟們做基友。可是現在雲伺服器也變的越來越好用了,這裡也推薦一下好友的金山雲和Ucloud。阿里雲跟我並沒有神馬認識的人,所以不推。

DBA除了之前提到的主從,讀寫,資料備份,許可權控制,分庫等等,還應該再擴充套件視野,把MongoDB,Redis,memcache,elasitcSearch,hadoop等等這些資料全部管起來。我覺得,更像是一個運維的分支了。

這就是我目前認可的DBA的價值和意義,已經從之前的效能優化部分轉移到了資料備份和安全。
畢竟,效能,架構,和優化這些東西,是離不開業務系統的。

那麼,接下來,和之前一樣,繼續介紹一下DBA的工作內容。

1 工作內容:

如果你做了一個DBA,基本上會遇到兩種情況。一種是你的後端工程師懂架構,知道怎麼合便使用DB,知道如何防止穿透DB,那麼恭喜你,你只是需要當一個DB技術兜底的顧問就好,基本上沒什麼活可以做,做個監控,寫個統計就好了。你可以花時間在MongoDB了,Hadoop了這些,隨便玩玩兒。再按照我之前說的,做好資料備份。如果需求變動比較大,往往會牽涉到一些線上資料的更改,那麼就在釋出的時候安靜的等著,等著他們出問題。。。。如果不出問題就可以回家睡覺了。

另一種情況就是我剛剛提到的,大部分程式還是靠SQl,然後有時候DBA還需要寫幾萬行的儲存過程,那麼你的主要職責還是優化Sql,優化Sql,永遠不停的優化SQL。

嗯。就這樣。

還有就是多花點時間把MongoDB和hadoop這些都維護起來,或者簡單說,只要跟資料安全,備份相關的東西,都維護起來。

2 需要技能:

環境【Linux,Mysql,Oracle,MongoDB,Hadoop】
工具【各種DB的版本,工具,備份,日誌等】

這個說是環境已經有點勉強了,畢竟是一些吃飯的傢伙。就是各種DB,各種維護什麼的。
工具也是相關的內容,再強調一下對版本的熟悉程度。

馬丹我感覺我沒什麼可說的了。因為剛剛又被 我就靜靜的發圖~_java吧 這個貼子噁心到了。我被Java吧封了,然後他們還@我。我要趕緊寫完然後想辦法去跟他們對罵去。

3 發展前景

DBA的發展前景我說不好。一些簡單的工作。運維也是慢慢學會了。包括薪水,這個是我比較沒把握的。之前的薪水都是有跡可尋的,DBA的薪水我接觸的比較少,實在是沒什麼底氣。

1年~5年:8K~25K
5年以上:20K~40K
(我好心虛。。我只給一個DBA開過工資)

成長路徑:

也不知道有啥成長路徑,感覺這個職業的物種越來越稀少了。

4.入門門檻

DBA的入門門檻也是比較高的,而且,很少於有剛工始就是做DBA的,大部分都是工程師轉的,所以呢,至少要兩到三年左右的時間才有可能做DBA,才能負責一些相對負責DB的事情。

5.哪些行業適合做DBA

IT界:後端工程師,運維工程師
其他界:無

其他行業的想轉DBA,剛剛也說過了,不合適,只能先寫程式碼,再慢慢的轉。

6.職業限制

這個職業最大的限制大概就是。。很容易無事可做,前面有後臺架構師蠶食,後面有運維工程師侵入,中小公司都不太會設定這個崗位,所以有的時候會比較尷尬,大概還有一些外包公司,或者是傳統的IT企業,會是由DBA去設計表,去理清業務還有一些崗位,其他的都不太好。

所以對於其他的各種持久化資料的備份和優化,特別是對一些正在使用的框架,又不夠成熟的東西,更容易找到自己的位置。如果你要做DBA的話,就記著,跟持久層相關的優化,資料安全,備份都要去了解–順便再學點運維的東西

--------------------------------------------------------------------

七 運維

說到運維,就不得不提起來伺服器,以前呢,伺服器很貴,頻寬也很貴,機房也貴,電源也貴,反正啥都貴,而且還不穩定,那個時候運維工程師的大部分技能還是在硬體上,或者是說硬體是必不可缺少的技能,所以守著機房也是運維工程師比較常見的事兒。

而且有的時候還會兼著網管,因此,大部分的運維工作就是裝個系統,搭些內部服務軟體,如郵件,Wiki,Jenkins,VPN等等等。很多的時候還要會佈線,會路由器,會交換機,會做資產盤查,把網管的工作也做了。

當然線上的正常釋出也少不了,規範的點的公司,會分成三套或者是四套環境(我是不太能接受四套環境),就是Dev,Test,Online(三個環境的叫法會有不同,我現在越來越喜歡這種叫法),開發環境就是給開發人員自己瞎折騰用,運維只需要把機器安裝好,IP分配好就行了,開發過程中你們自己瞎折騰,每天部署多少次都可以–細節請等我講敏捷開發的時候再說。測試環境就會嚴謹一些,正常情況下每天只發布一次,太頻繁QA會殺人的。線上環境更嚴格,一般來說不允許頻繁上線,所以只能在週二或者是週四釋出,一週兩次,對於WEB來說,其實是足夠的(但是很搞亂的是,很多公司是週一定需求,週二開發,週三測試,週四上線,週五改Bug,這些都會在講敏捷開發的時候提到)。

所以測試環境和線上的釋出都是運維來做,因為有一個最簡單的真理:只要你把許可權扔給工程師了,他就會偷偷重啟服務以及偷偷改資料以及一不小心刪掉某個檔案,或者是清空所有資料。

而且一定會被你抓到,不要問我為什麼,我要是有線上伺服器的器許可權,我也經常幹這種事兒。。。。這比偷情的感覺要好多了,一個人偷偷摸的瞞著所有人把Bug改掉。。

這個時候運維還是運維工程師,直到虛擬化技術瘋起來,直接生成了阿里雲,金山雲(修真院的重要合作伙伴),Ucloud等這些改變了運維工程師命運走向的公司。

雲時代來臨了。。。視訊雲,IM雲,圖片雲,APP雲等等各種跟業務相關的雲服務也做起來了,確切的說簡訊,郵件也是各種雲服務。
那麼運維工程師的變成兩極分化。一個是,雲服務商的運維工程師越來越重要了,一些大的公司也在搭建很NB的運維自動化系統。另一個是,非雲服務商或者是非大公司的運維工作變簡單了,再也不用去機房換硬碟了。。反而是要熟悉和了解各種雲伺服器的特性。

所以,當我們現在說到運維工程師的時候,其實是分成兩個階段的,一個是傳統的運維工程師做的東西,一個是現在雲時代運維工程師做的內容,如果你現在想做運維,你恰恰是處在這個變革中間,我說不好未來的走向,但是這是一脈相傳的,所以並不用擔心運維中技術體系的中斷。

這就是對運維的一個簡單的介紹,哦對了。運維是一個公司裡非常重要的崗位,剛剛還忘了說到了資料備份和災備和監控。如果你們公司有值班手機,一定是運維同學手裡拿著。24小時不準關機。

無論你洗澡,上廁所,還是吃飯,或者是逛街,還是跟妹子恩愛(天地良心,我沒見過一個妹子做運維,聽都沒聽過),只要你收到報警,你就必須第一時間遠端連線到伺服器,然後通知相應的工程師,立刻解決問題,或者 是直接滾蛋。

通宵熬夜發版本更是正常的事兒。你要問為什麼會通宵,呵呵。
發了一次版本,上線,發現不正常,於是回滾,或者是直接在線上Bug。於是運維同學就等著,老婆催也沒用。然後過了兩個小時,大後期後端同學說好了,可以釋出了,於是執行指令碼,然後又發現出了問題,接著回滾或者是在線上改。。。

你要問不是有測試環境麼,不是有QA麼,我就呵呵一笑。我不知道我說的關於運維的介紹是多了還是少了。反正,這個答案只是一個初稿,如果點贊過5000(感覺是不太現實的),我就再整理一版。

1 工作內容:

運維的工作大概分成幾個部分,我對於修真院學習運維的少年們都這麼說,大概是:

A。基礎環境的搭建和常用軟體的安裝和配置(兼網管的還有各種程控機),常用軟體指的是SVN,Git,郵箱這種,更細節的內容請參考修真院對於運維職業的介紹。

B。日常的釋出和維護,如剛剛講到的一樣,測試環境和線上環境的釋出和記錄,原則上,對線上所有的變更都應該有記錄。

C。資料的備份和服務的監控&安全配置。各種資料,都要做好備份和回滾的手段,提前準備好各種緊急預案,服務的監製要做好。安全始終都是不怎麼被重點考慮的問題,因為這個東西無底洞,你永遠不知道做到什麼程度算是比較安全了,所以大多數都是看著情況來。

D。運維工具的編寫。這一點在大的雲伺服器商裡格外常見,大公司也是一樣的。

E。Hadoop相關的大資料體系架構的運維,確實有公司在用幾百臺機器做Hadoop,所以雖然不常見,我還是列出來吧。

這些就是運維的基本工作內容了,然後如我之前所說,運維一般來說,大點的有兩個,小點的就一個,再小的就是工程師兼著。
而且大部分都在使用雲伺服器了。所以普通的運維工程師的工作都可以標準化和簡單了。這裡並沒有提到效能優化相關的部分,實際上這也是運維工作中比較常見的內容。特別是在出現問題的時候,運維永遠是一個在不出問題可能就被忽視,一旦出問題就會被痛罵的。。。職業。

之前有句話說的好,線上不出故障,是不現實的。現實的做法是,出了故障之後,多久能快速恢復。
我對這個很認可,原話應該是出自一家雲伺服器公司還是。。我不記得了。

但是這裡不得不推薦一下 【獵聘網的技術總監 劉中兵】,我的老同事和好基友,前段時間剛剛在一個神馬神馬會(我靠,我只知道是一個很厲害的會)上分享了獵聘在自動化運維上技術積累,如果PPT能夠公開的話,回頭我會把它也放到運維的體系裡。

當然最好的結識這些技術大牛的方式就是加入修真院,顯示自己的實力之後,讓修真院來幫你牽針引線。

2 需要技能:

環境【Linux,Mysql,Oracle,MongoDB,Hadoop,nginx,apache,F5,lvs,vpn,iptable,svn,git,memcache,redis】
工具【linux 常用工具,Mysql常用工具,Jenkins,zabbix,nagios】
自動化運維【openstack,docker,ansible】
語言【shell,python】

運維的技術體系也很多,基本上是所有的工具都想要你會用,我會慢慢的整理出來一套運維體系的技術架構,當然不只包括運維,包括我說的這些所有偏技術的職業。
所以,如果覺得我寫的還不錯,還算靠譜,就關注我,關注群,關注微信公眾號。
如果覺得我是在扯淡,直接評論裡罵我就好了。

這裡說到的其實並不算全,確切的說,做為一個運維工程師,嚴謹的性格是絕對少不了的,因為線上的操作全部由你來執行,你必須要心細,要嚴謹,如果做不到,就別考慮了。
真出了事,壓力又把你壓死。想想最近幾年出現的運維事故吧。。。

還有就是必須對Linux系統的底層瞭解的深入一些。如果你想做一些高階運維的話。Python和Shell指令碼都是必不可少的,最常見的運維必備語言。

3 發展前景

寫的有點不耐煩了,馬丹如