網際網路職業入門聖經

為愛修行發表於2018-04-11

以下文章轉載自知乎,暗滅-京華九月秋近寒,浮沉半生影長單.



暗滅

京華九月秋近寒,浮沉半生影長單

10,850 人贊同了該回答

IT修真院 - 知乎專欄

知乎 Live - 全新的實時問答

我想這篇文章說是【網際網路職業入門聖經】一點都不過份,畢竟2年以來有數萬人從本文收益,而且,文中內容沒有太多變動,和當前的職業變化相差不大,除了單純CSS幾乎消失,Android和iOS走如低谷後略有回暖。

希望你們喜歡。

網際網路行業的薪資水準相對較高,剛入行一個月,半年,或者一年超過其他行業薪資很正常。

那麼,網際網路行業究竟有哪些職位呢,又分別適合哪些傳統行業轉型?

1.產品

2.UI

3.CSS

4.JS

5.後端(Java/php/python)

6.DBA(mysql/oracle)

7.運維(OP)

8.測試(QA)

9.演算法(分類/聚類/關係抽取/實體識別)

10.搜尋(Lucene/Solr/elasticSearch)

11.大資料工程師(Hadoop)

12.Android

13.IOS

14.運營

然後等下我會分別介紹每個職業的工作內容,發展前景,入門門檻,適合哪些職業轉行,成長週期,薪水範圍等。

* 薪水都以北京為例

* 運營和市場都有更細緻的劃分,然而我並不太瞭解了

* 其他的偏門的

一.產品

========我是求某個姑娘快原諒我的的分割線=============

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

大致這個樣子。

4.入門門檻

無(甚至你可以不認識字)

5.哪些行業適合做產品經理

IT界:程式設計師,UI,QA,運營,市場

其他界:無限制

PS:想了想,還真是沒見過身邊有做運維的轉產品經理的。

6.職業限制

很多產品經理都很怕跟程式設計師溝通。而且經常會苦惱,覺得自己設計的功能,程式設計師做不了,做不出來,做的太慢,做的太差。惟獨不會覺得自己設計的太爛。

所以,很多產品經理都會認為不同技術是自己的一個弱項,我曾經整理過一個產品經理需要了解的技術術語,有需要直接看樓下的廣告。

7.去哪裡學,怎麼成長

還用問,自然是跟著大修真院最好。

如果IT修真院你看不上,可以去一些有產品經理培訓的地方去,雖然我肯定覺得自家的好。

如果這些產品經理培訓的差不多了,有了一個基本概念了,找個產品助理或者是實習的職位去吧。

會畫點兒原型圖,有個線上的作品,就能找工作(雖然我很不喜歡這樣的產品經理)。

然後有機會就去大公司瞭解一下各個部門是如何扯皮的,鍍鍍金,Over了。

二  UI

=============我是累死了的分割線================================

馬丹,首先寫軟文,又要寫成乾貨,又要帶廣告真心不是一件容易的事兒。我在之前如何在一個月之內從零基礎成為初級CSS前端開發工程師? - xdyl 的回答的貼子中,寫了整整一個星期才寫出來。我寫小說都是分分鐘好麼。

可是沒辦法。一個是確實需要跟大家介紹一下每個職業的比較和特點,一個是也確實需要告訴更多的人,寫程式碼真的不是看視訊看會的。

好了我接著說。

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的錯。

7.去哪裡學,怎麼成長

對於初學者來說,找個培訓學校還真是比較好的選擇。

我大修真院暫時並未打算去培養UI人員,主要是沒有時間也沒有精力去做一個系統的教程,而且我們自己在UI上也在不斷的摸索。

一般來說,最好的成長路線就是不斷的去參考別人的例子,然後再多動動腦子,多看一些UI規範。

先想清楚自己要表達什麼,然後想想用什麼表達,再去查查怎麼樣能做到自己期望的結果。

三 CSS

=============我是再也不要寫軟文的分割線================================

沒辦法。自己拉的屎不能拉個開頭就提褲子走。。。說起來這也是知乎挺好玩的地方,如果不是知乎允許這種自問自答的方式,只要你說的是真正有價值的內容,並不拒絕你有做廣告的嫌疑,恐怕我也不會寫這些東西,你們也看不到這個貼子。

以下的內容是我從UI那邊粘過來的,還沒改呢,等我去沙發上喘口氣歇會再寫。中午吃的麻辣香鍋有點鹹。

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

所以CSS工程師和OP一樣,都是可以在不用瞭解業務需求的情況下就能完成工作的唯一兩個特殊職業。

一般來說,CSS工程師並不存在,寫CSS的人多少要寫一些JS程式碼,然而確實也會有一些妹子真的就是學不會JS,有一些漢子真的就是寫不出來JS,所以我還是把他們兩個拆開了。

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

當頁面切完以後,另一個工作就是去幫助菜鳥後端和某些JSER把頁面又重新套錯了,什麼是套頁面,可以看這個http://www.zhihu.com/question/22689579/answer/69899644

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做起,跟著用自己的其他時間惡補計算機基礎了。

7.去哪裡學,怎麼成長

之前說我的貼子是廣告的,你們錯了。

看到這裡,這才是真正的廣告。

要說去哪裡學CSS,絕對是IT修真院,請先看這裡如何在一個月之內從零基礎成為初級CSS前端開發工程師? - xdyl 的回答

IT修真院跟其他任何一家培訓機構都不一樣 ,完完全全不一樣的教學模式。看完這篇貼子,其實你就能大概明白這是什麼樣的教學方式。

而且,線上學習完全是免費,不僅如此,大修真院還給你入院就提供了良好的人脈關係。嗯。

然後,如果你真的不想來大修真院,或者我沒看上你,那麼你就也不要看視訊或者是交錢學什麼的,看W3C吧,自己偷偷按照修真院的Task做專案,跟著就找家公司實習去吧。

雖然慢了點,好壞也入門了。

四 JS

=============我是第一次過100讚的分割線================================

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上去。

7.去哪裡學,怎麼成長

不用說。首推的當然還是我大IT修真院。IT修真院是先總結歸納一個能夠獨立完成專案的JS工程師需要掌握的技術體系,然後設計15個Task來讓你逐步完成對於知識的掌握。修真院一直在傳播程式碼是寫出來,而不是看視訊看出來的概念。更看重你們在真正去做Task的時候獨立解決問題的能力,除此之外,還有跟你一起學習和成長的師兄。這就是IT修真院去培養JS工程師的方式,而且,線上是完全不收費的。

如果你不想用這種方式去學習,還是我之前說的那些話,W3C,然後做點東西,跟著去一家公司實習。

五 後端(Java/python/go)

=============我是想玩Dota的分割線================================

說到後端,其實我主要想說的是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,其實很難的。

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

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

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

7.去哪裡學,怎麼成長

基礎知識不要來找我,我不教。隨便去其他的學校補基礎也可以。想要提高或者是想要成為架構師,就來找我。

我在說培宇的時候其實已經講清楚了我是怎麼帶人的,但是線上上做這些,確實有難度,而我又不想教一些虛頭巴腦的東西害人害已,所以我還在想辦法解決怎麼樣線上上把後端工程師帶好的問題。

如果看到這裡覺得我說的有道理,一定要稱讚我,催促我,還有幫我宣揚大修真院的思想和做事風格,讓我覺得這個事情有意義,值得做。

想做好,真的挺不容易的。所以,能轉就轉,能收藏就收藏,能推薦就推薦。我想我應該能想到一個好的辦法,來幫助後端工程師,把成長的時間從五年到七年,縮短到一年到三年,至少線上下,我是絕對有信心的,這種信心來自於我之前這麼做過。以及我正在做。

你們可以隨時找培宇聊聊,看看他這些日子倒底是怎麼被我罵的狗血噴頭然後開心快樂的活著的。

六 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的話,就記著,跟持久層相關的優化,資料安全,備份都要去了解--順便再學點運維的東西

7.去哪裡學,怎麼成長

基本上,DBA可以由運維工程師和後臺架構師去轉,也會有一些資料庫方面的認證之類的的過程。這個崗位啊,跟其他的崗位真心有點不一樣,很少有剛畢業或者剛入行的人就要去做DBA的--你也做不了親,跟資料相關的東西,沒個三年五年的經驗,真的很難做,而且有些技術細節,是必須要了解的比較多的。

PS:剛剛想到了,雲伺服器裡是DBA的一個好去處,其實這裡跟大資料也有一些相關的。這麼說的話,DBA的職業需求度跟雲伺服器公司的發展是有比較密切的關係。但是總之,不太可能變成一個標配了。

七 運維

=============我是被知乎刪除了答案的分界線================================

先說點的別的,早上發現知乎登入不了,提示說我的賬戶異常,然後發了封郵件,賬戶能登了。

然後發現答案被刪,找不到了。

傷心難過了七秒鐘,然後我一直都沒有備份的習慣,在修真院的群裡喊了半天,終於有一位小兄弟出來了,給了我一份儲存的文件。

不然還真的是不想再寫下去了。以及,其他的答案也讓我很無語,特別是居然並不知道CSS和JS可以是兩個職位,實在忍不下去了,我會在後續講敏捷開發的時候再重新提一下軟體開發的全過程,來告訴你們為什麼CSS和JS要分開,那個才是我執行敏捷開發落地七年的乾貨,當然,時間不定,只是贊越多,分享越多,我覺得自己的答案越有價值,心情就會好,然後知道修真院的人也會越多。

我可能會出一個系列,這個只是第一個,來講一下網際網路的各個職業發展,第二個,講敏捷開發,第三個,講應該怎麼樣對IT技術人員的團隊管理和績效考核,第四個,講如何做自己的職業規劃以及如何找到一份更好的工作或者是怎麼判斷一個公司靠不靠譜,第五個,大概會聊一下創業公司怎麼做,以及如何用MVP的方式去創業。

這些如果你們都看到了,我講出來了,也差不多是我這八年中經歷和感受到的所有了,至少會對網際網路的各個方面都有了一個全面的認識。

這裡面不可避免的會有對修真院的介紹,但是我能確保的是,每一篇都是乾貨,只不過不保證客觀,也不保證有用。所以,讓贊和分享更多一些好麼。

言歸正傳,講一下運維,這是一個很神奇的行業,一個在漸漸蠶食其他各種職業的職業,一個本來不是程式設計但是現在卻程式設計越來越多的職業,你要問為什麼?

一個字:雲

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

而且有的時候還會兼著網管,因此,大部分的運維工作就是裝個系統,搭些內部服務軟體,如郵件,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 發展前景

寫的有點不耐煩了,馬丹如果不是為了宣傳大修真院,我才不要做這種丹藤的事兒。我去勾搭小姑娘多好。

運維和前端其實有點想像,都是屬於柳暗花明又一村的。

本來運維的工作要被後端工程師蠶食了(後端工程師真是一個可怕的職業,可以這麼說,沒有後端工程師做不了的。。。包括產品,市場和運營)

然而隨著雲的發展, 運維工程師簡直是有了新生。

1年~3年:6K~20K

3年以上:28K~40K

成長路徑:

網管-初級運維工程師-中級運維工程師-高階運維工程師

運維做到這個級別,已經到頭了。很少有運維的同事能做到技術叫監的級別的。所以,對於資質一般的你來說,選擇了做運維,就代表著天花板很近,但是對於大多數人來說,已經可以了。

4.入門門檻

OP的門檻其實並沒有太高,經常玩玩Linux會好一些,但是要學的東西,確實挺多的。處理線上故障,也是一個經驗積累的過程,所以說呢,基本上算是0門檻,誰都可以考慮做,只是要看你喜歡,或者是不喜歡,進度快和慢的問題而已。

5.哪些行業適合做運維

IT界:後端工程師,網管

其他界:All

剛剛介紹過了,門檻不太高,所以比較容易一些,而且,可以考慮做一段時間網管。半年或一年之後轉運維,網管的薪水比較低。3000或者是5000已經到頂了。

但是轉到運維,就不一樣了,簡直是新生。

6.職業限制

運維的大部分事情其實都是跟業務無關的。這在之前介紹CSS的時候說到的,兩個不需要懂業務邏輯的職業。

曾經有過運維工程師覺得工程師寫的Sql不對幫他改了。。。然後被我狠狠的罵了一頓。這表示著:運維工程師必須按工程師所寫的步驟去執行,不允許有任何的差錯,如果出錯了,如果沒在測試環境跑通,或者發現有問題可以跟後端工程師溝通,但是,不可以改他們的東西。

這樣責任和權利分開。所以運維工程師能夠相對有更多的時間去研究技術,然而壞處就是對一個行業瞭解的會比較少。

所以這個職業比較大的問題就是,想要再轉行成其他的職業,已經很難了,只能一條路走到黑。嗯。比較難。

天花板和CSS一樣,能看得到,但是!已經很適合了,薪水畢竟不算低呢。

7.去哪裡學,怎麼成長

當然是修真院了,第一個。

然後還有一些其他的運維培訓,我不太瞭解,運維這個其實是幾種職業培訓裡相對來說比較簡單的。因為大部分都是跟業務關係不大,是可以培養出來的。

自己找資料的話,只能根據技術的關鍵字去找了,還好大部分都不算特別難,等遇到難題的時候,你也一定是工作了不少,然後會遇到一些技術上大牛的運維。

八  QA

=============我是被小郭惹煩了的分界線================================

“QA最好的出路就是產品經理”。這是我對QA最好的認知。

我知道這裡有無數反對的聲音,我說的每一句話大概都會有認同和不認同的人,所以如果看到這句話不喜歡,就表再繼續看了。

QA的這個職位,大致分成兩個流派,一個是功能測試,一個是效能測試。功能測試就是指的是各種點點點點。然後看看功能和資料有沒有問題。什麼瀏覽器,什麼版本,什麼情況,能否復現。

效能測試就是指:用Jemter,LoadRunner等做壓測,測跨後端人員的信心。

基本上就是這兩種,很少有專門針對安全的層次去做測試的。那麼問題就來了,工程師和QA之間,倒底誰該做功能測試,誰該做效能測試?

我姐告訴我說:工程師才應該做效能測試,因為只有他們才最應該知道自己開發的系統效能瓶頸在什麼地方。

然後也是因為這句話,我舉一反三的瞬間懂了什麼才是一個工程師,並且在不斷的踐行者這個理念:

如果你是一個後端工程師,你必須對伺服器的線上資料瞭如指掌,有多少張表,在哪臺機器上,分了幾個庫,一個表裡有多少條資料,資料的分佈是什麼樣的,起了多少臺Service,佔用多大的記憶體,高峰期的TPS有多少,CPU的負載怎麼樣,頁面總響應速度有多少,一個請求呼叫了幾個方法,每個方法執行時間是多少,是否載入了快取,從快取里載入的資料是多少個,大概多少MS,訪問一個資料庫需要多久。

你做不到這一點,你就沒辦法做好效能優化。所以,QA很難做到這些,也完全沒有必要做到這些-實際上我們的團隊是沒有QA的。工程師負責所有的問題。

前端也是一樣的,做了一個App,耗電量,頻寬,記憶體,相容性,都是前端應該關心的問題。

所以我在這裡給出的一個明確答案就是:效能測試,開發人員做,功能測試,QA做。

但是這裡的功能測試,並不是指的是普通的功能測試。實際上,開發人員應該自測一百遍再提交到測試環境(我在講到敏捷開發的話,會再次提到整個開發流程是怎麼樣的,以我在幾家公司實施的經驗來看,這套敏捷開發流程,對於很多公司梳理內部結構都會有幫助。)

QA做的應該是自動化的迴歸測試,邊界條件測試,極限條件測試等種種很難測試得到的問題。

對了,再解釋一下為什麼要有QA,以及為什麼Bug總是測不完。

因為在我根本記不清的一篇文章裡說到,哪怕是最簡單的幾個功能組合,想無窮窮舉測完都很困難--馬丹,原話我記不住了。

所以這就是給無數擅長效能測試的QA判了死刑,你之所以能做效能測試,是因為你們的開發模式和流程不對--別看我,我就是喜歡這麼說,一點都不委婉。愛聽聽,不聽拉倒。

但是QA真的不是一個很簡單的活兒,可以這麼說吧。QA幾乎是所有職業中,最熟悉系統的人-甚至包括設計它出來,開發它出來的產品經理和各種工程師!

很多時候QA做的事情都是非常單調的,但是又必須有責任心的,拿我之前的話說,QA就是最後一道關口。

所以,如果你想成為一個PM,你可以考慮先做QA,當然,前提是你必須遇到一個願意給你機會做產品的好老大-比如說我。

So,接下來就開始來閒扯一下QA了。

1 工作內容:

QA需要了解需求,很多公司會要求QA寫測試用例,我覺得是扯淡。完全是在浪費時間。

通常開發三週,QA測試的時間只有一週到一週半。還有關於提前寫測試用例的,都不靠譜。

但是總之,瞭解需求,就算是不寫也要自己知道自己測,這是QA的必備職責。

跟著就是等開發人員開發,這個時候也會有一些奇葩公司,要求QA提前界入的,理由是加快上線週期。之前還有說過完成一個Story就要測試完整的,我也不想吐槽了。總之,如果你真的遇到了這樣的公司,你的工作就是測試,然後跟開發人員說不對。然後開發人員說改好了,然後再測。然後你大喊一聲,好毛線啊。然後開發人員說,稍等,我先梳個頭。然後再告訴你好了。然後你再說,好毛線啊。然後開發人說。。。這次真的好了,於是你測了一下,真的好了,開發人員很Nice的說:完美!你也很開心,但是沒過幾秒鐘,你就會喊:什麼鬼,之前的功能是好的,為什麼又改回去了?

如果你呢。遇到好點的流程。會在上QA之前,打版本(我始終無法理解不打版本是什麼流程),會Demo,那麼你可以有一個安心的測試環境了。

這個時候稍微正常點的工作,就是測試,然後把Bug錄入到Jira,禪道,或者Bugzilla等各種專用的Bug管理工具。

跟著就是追蹤bug(如果你們公司有Bug處理流程的話),如果有晨會就在晨會上說明,如果有周會,就在週會上統計。

大部分的QA都比較羞澀,並不太敢提Bug,並不太敢說哪個程式設計師的程式碼寫的有問題。畢竟,這是唯一一個必須要當面揭短的職業,哈哈哈哈。

基本上到這裡QA的任務就沒了。等著釋出上線就好了。實際情況上釋出上線的時候QA要等著程式設計師改程式碼,驗證。。。

2 需要技能:

流程【Bug修復流程,版本釋出流程】

工具【禪道,BugZilla,Jira,Excel表格來統計Bug數,自動化測試】

性格【嚴謹,耐心】

QA裡經常會嘲笑自己是技術Team裡最沒技術的一個。如果說你是一個標準的QA的話,真的不用去特地研究一些壓測工具的。

不過也確實可以瞭解一下,Jmeter怎麼用,TPS是什麼概念,90%線是什麼意思,PostGet什麼的。

自動化測試工具是我一直都強烈推薦的,無論是神馬辦法,只要你能做到哪怕只有一部分自動化的測試,你做迴歸測試就很容易了。相信我,迴歸測試在每一個版本釋出都是需要的。只不過有的時候,只是需要跑一下指令碼就好了。有問題再詳細測一下。

嚴謹和耐性是非常非常難得的,也是QA最重要的能力。

當然也包括需求的理解能力啦。

3 發展前景

QA的發展前景。。真的不算好,跟網管一樣,如果說並不能轉產品的話,20K基本上就封頂了,就算是有公司,願意出30K讓你們做效能測試,也是到天花板了。

1年~2年:4K~15K

2年以上:12K~20K

成長路徑:

測試工程師-測試組Leader-PM

如果能轉到PM,真的就很讚了,我推薦的時間應該是在半年到一年左右就開始轉。

4.入門門檻

QA並沒有什麼門檻,一般來說,是妹子比較多。漢子比較少,是漢子的,也多數是做點效能測試相關的。但是請相信我,這絕對不是一個好的天賦加點方式,就算是效能測試做的再6又怎麼樣?

所以稍微懂一點Bug修復流程就好啦。勇敢的去做QA吧。。。

5.哪些行業適合做運維

IT界:all

其他界:all

雖然是IT界的All都可以轉QA,但是說實話,我沒有看到過一個從其他職業轉到QA的。。

也許除了運維。。

6.職業限制

職業限制也說過啦。總有重複的使用技能的厭倦感,畢竟這些技術水平都不需要太多。理解能力好一些,嚴謹一些就能做。

說的直接點,從事五年的QA和從事一年的QA,本質上並沒有什麼差別啊。

但是好處就是,如果你有心,你會對系統特別特別的瞭解,這對於你轉行做PM,是一個非常非常大的優勢。再強調一遍,並不推薦QA轉走技術路線。

7.去哪裡學,怎麼成長

修真院並不提供QA的培訓,暫時並沒有,以後大概會講一下Bug處理流程和敏捷開發流程。

所以,我也不知道哪裡有QA的成長機會,一般都是在公司。

九 演算法工程師

=============我是傷透了心的分界線================================

“真正NB的程式設計師都是寫演算法的”-----我自己瞎編的。

演算法工程師其實是一個很虛的概念,但是在大資料忽悠了人這麼多年以後,慢慢的也開始吃香起來了。很多經典的演算法都是十年前,二十年前的,在演算法本質上,諸多數學家或者是IT學者沒有做過太多的改進,大家的統一的結論就是:先拿到最應用,然後改進一點是一點。

可是即便是演算法很多時候不完善,也已經暴發出了強大的戰鬥力。

那麼什麼是演算法呢,什麼是演算法工程師呢?簡單來說,演算法就是瞎扯淡想的,從各種自然現象對映到計算機上去的。什麼爬山演算法,模擬退火。。種種種種,反正就是解決問題啦。演算法工程師就是吃飽了沒事幹,調個引數,訓練個模型玩玩的閒人。

一般來說。說到底,還是在機器學習和資料探勘中最常見的幾種東西,首先就是分類。分類演算法是最常見的。分類一般會用來匹配,比如說,上週剛剛有朋友來問我怎麼做穿衣搭配種的一套方案可以快速推給其他同類使用者的設計。那麼首先就要收集使用者的資訊,設定特徵值,然後訓練分類模型等等。最常見的就是新聞的分類,如我之前做過的財經新聞分類,把2000多家上市公司相關的新聞自動分到所屬行業。

分類完之後就是聚類,聚類用的其實不多啦,算是用的比較少的。我瞭解到的使用聚類演算法的並不太多。

實體識別是一個核心的技術。在新聞的領域用的是比較多的,確切的說,在文字領域用的都比較多。人名,地名,股票,時間 等等都是實體識別的一部分。

關係抽取是一個相對來講比較靠上的應用。事件識也是一樣,我們曾經做過上市公司高管變動的東西。也看不出有太大的價值。

協同推薦是在三四年前,還是五六年前的時候比較靠譜的,那個時候個性化推薦剛出來,各種相關商品,書籍,還有個性化閱讀,音樂等等等等。然而也並沒有爆發出什麼好的應用來。

豆瓣和亞馬遜據說推薦的還不錯,我沒仔細對比過。

簡來說,常用的演算法,指的就是這些。而演算法工程師呢?並不是去研究演算法。真的。

演算法工程師只是拿別人的演算法:有的是自己實現,有的是直接拿開源軟體來用,跑語料,找特徵,調引數,優化修改而已。

在我還年少無知的時候,對演算法這個很東西痴迷,後來就漸漸明白了,演算法是那些博士要做的。博士只負責來做演算法。在公司呢。大部分都是要接近業務的,而且說實話,演算法之間的差別,並不大。很多時候都是減輕人工負擔,提供決策支援,更簡單的更有效的可能就是關鍵詞過濾。

嗯。還有很多演算法工程師,做到最後,只能跑個Demo,連個像樣的工程程式碼都寫不出來。經常是一個月調出一個模型,然後再優化一兩個月,然後再優化一兩個月,準確率可能都提高不了一個點。

所以這其實是一個跟業務結合特別密切的崗位,很多時候的先難知識都比較有用。而且也是個很難見到效果的崗位,需要太多語料的配合了。

好的吧。大概就是這麼多。

1 工作內容:

演算法工程師的工作內容,大部分時間都是在調優。就是調各種引數和語料,尋找特徵,驗證結果,排除噪音。

也會和Hadoop神馬的打一些交道,mahout神馬的,我那個時候還在用JavaML。現在並不知道有沒有什麼更好用的工具了。

有的時候還要自己去標註語料---當然大部分人都不愛做這個事兒,會找漂亮的小編輯去做。

2 需要技能:

基礎【機器學習,資料探勘】

工具【Mahout,JavaML等其他的演算法工具集】

這是一個技術含量很高很高的職業。。。。特別是對不懂這個行業的人來說。

雖然有時候大部分做的東西也就那麼回事兒,但是對於最基本的SVM演算法,隱馬模型,最大熵等還是有比較高的要求的。畢竟,懂還是不懂,差別挺大的。

3 發展前景

我對演算法工程師的薪資並不太瞭解,只是知道不會比較架構師的薪水低。這個職業的人數比較少,最少也是需要碩士以上(碩士需要學的東西和寫的論文真不是蓋的,並不排除有很多都是抄的),所以很難給出一個精準的資料。

1年~3年:10K~25K

3年以上:20K~40K

4.入門門檻

嗯。門檻最高的一個。最低也是要碩士,基本上都是博士在做。

大部分都是有一個博士震樓,然後一幫碩士幫著寫具體的程式碼。

所以入門的門檻極高。

5.哪些行業適合做演算法工程師

IT界:計算機演算法相關的碩士或博士

其他界:無

6.職業限制

怎麼說呢。演算法工程師很少會寫工程程式碼,所以寫程式碼的能力基本上等於零。這個是一個瓶頸。另外,很少有機會能讓你研究演算法,只能去不斷的跟業務資料去死磕。

7.去哪裡學,怎麼成長

說不上來怎麼成長,學這東西只能是跟著學校走。自學可能性太低了。成長的路徑也就是去一些大資料的公司--放心,只要是大資料的公司,基本上都是會考慮演算法的。

十 搜尋工程師

=============人啊,就是這樣一波又一波分界線================================

這兒說的搜尋工程師是偏Java的。並不是百度,Google這種大型的搜尋,而是指一般的網站常用的搜尋工程師。

搜尋工程師的主要工作流程就是抓取,解析,去重,處理,索引,查詢。每個環節都有比較強的演算法要求。我自己比較喜歡不區分搜尋和應用組,一直覺得這兩個組的人技能是相通的,能做架構的,演算法也不問題。只能寫模組程式碼的,也可以寫搜尋的專案。

但是實際上搜尋還是值得拿出一個單獨的領域的。每個領域都有比較深的知識點,因此單獨拿出一個搜尋工程師的概念也並不算錯。特別是NoSQL DB興起之後,我還是比較起Search+NoSqlDB的架構。

搜尋工程師算是屬於偏高階別的了,一般來說也是要求碩士以上。最早的時候能做搜尋的都挺厲害的,後來有一段時間之後,開源框架越來越成熟,搜尋工程師也變成了一個門檻低的行業,直到NoSql DB的興起,搜尋並不是侷限於是來做前端模糊搜尋了,反而成了系統架構的一種方式,同樣是可以在做分散式,做分層,分負載均衡,效能比單純用DB好太多,也解析了Cache的問題。特別是Solr和ElasticSearch的出現。

或者這麼說吧。以前的搜尋有很大一部分都是為了前端的索引查詢,只是滿足於搜尋一個功能的需要。後來慢慢演變出來了很多不同的需求,其中一個比較關鍵的詞就叫做Facet。

某種程度上來講,Facet才給搜尋帶來了新生,慢慢的才發現,原來並不是我在搜尋框中才叫搜尋。

原來電商的分類搜尋也是搜尋,原來很多列表也可以用搜尋來做。

這個又剛剛解決了Mysql的問題,各種NoSqlDB做這種索引的東西實在又有點有心無力。所以搜尋才能慢慢演變成一種架構方式。

嗯。至少在我這裡一直是要不斷的去嘗試一下。

1 工作內容:

所以搜尋現在其實分成兩種。

一種是傳統的搜尋。包括:

A。抓取

B。解析

C。去重

D。處理

E。索引

F。查詢

另一種是做為架構的搜尋。並不包括之前的抓取解析去重,只有索引和查詢。

A。索引

B。查詢

從傳統的搜尋來講。先說 A 抓取。

抓取最需要解決的問題就是抓取的優先順序,理論上來講,對一個網站上的訪問,不能過超過2秒一次的頻率,這個並不會給別人網站帶來壓力,被稱為是友好的訪問--表問我怎麼知道這些的,我也不記得了,反正並不嚴謹。

因此你需要有一個很好的機制來給Url打分,判斷哪些抓過了。哪些沒抓。這就是所謂的蜘蛛,也叫爬蟲。但是實際上我被這個名字誤導好久,真心是丹藤。只是發一個網路請求而已,根本沒有到對方網站去,馬丹剛開始想出這個名字的人抽象的能力簡直弱爆了。我一開始就在幻像各種程式寫成的小蟲子會在對方網路上跑。打野的最後才明白原來這些蟲子都不出門,只是在家吐口水而已。

B 解析

解析並不是一件容易的事兒。解析要做的就是把網頁的文字內容和其他沒用的資訊去掉。知道什麼是標題,什麼是作者,什麼是時間,或者是其他特定的需要。一般來說,都是有兩種方式。一種是配模板,不同的網站我有不同的模板。對方網站改版我也改。這種方式最精準。但是很愁人。

所以另一種方式,自動解析,用演算法或者是規則等自動解析內容的東西層出不窮。我到現在為止都覺得一切都是扯淡。尋找最大正文字塊再反向解析是最科學的。

之前還聽到過說,模板的自動生成。抓下來一個網站的資料,然後從上千個網頁中自動解析網頁解析。這個我挺感興趣的,但是一直沒試過。

總之,如果只是抓一個網站上的資料(比如說抓取百度的搜尋結果哈哈哈哈)。用Python的Scrapy這種神器,幾分鐘搞定還是沒問題的。

C。去重。

去重是一個很好玩的事兒。不去重不行。因為國內的風氣就是這樣。你抄我,我抄你。而且。為了怕被大家發現是抄襲,還會手動的增加一段,刪除一段。做為一個智慧的去重系統,你就必須把這些問題都解決掉。

而且,隨著時間的積累,你甚至有可能去做全量的去重(雖然我一直理解不了,為什麼要做全量)。六七年前我知道的最好的演算法就是SpotSig。嗯。一個很機智的演算法。

D。處理。

這裡的處理多了去了。所有的跟NLP相關的東西都可以放到這裡。包括分詞,詞性識別,實體識別,關係抽取,事件識別,分類,聚類,熱點等等等等等。

而且對於實時性的要求比較高。一篇新聞從別的網站釋出,到我們的搜尋系統,最快的可能就30秒或者是1兩分鐘--全部都是30秒不可能,因為抓取受限,只能說,最快的能看到這種新的資料。

E。索引。

索引是比較簡單的。主要牽涉到的就是怎麼做實時索引。大概是在記憶體裡做兩個索引,然後檔案有一個索引,跟著來回倒騰。。具體演算法我不記得了,也是一個很機智的策略,在Bob中使用的。

如果有Facet的話,也要考慮一下Facet的設定。

F。查詢。

查詢裡主要是分詞,並不牽涉到句法分析。還有一個高亮演算法,以及Facet的查詢。相對簡單一些。不過如果是分散式的搜尋就會麻煩一些,又會出現如何分片的問題。是垂直分,還是按時間分?不同的業務有不同的選擇。

2 需要技能:

環境【Linux】

框架【Luence,Slor,ElasticSearch,Cassandra,MongoDB】

演算法【倒排索引,權重計算公式,去重演算法,Facet搜尋的原理,高亮演算法,實時索引】

嗯。演算法偏多。跟NLP的演算法又有很大的不一樣。比那些分類聚類的難度要低一些,又比做專案和工程應用要再高一些。有點兒不上不下的感覺。

3 發展前景

現在來看的話,搜尋工程師的作用越來越大,某種程度上和後臺工程師是重合了,之前說到過拿搜的Facet來做架構。

1年~3年:10K~20K

3年以上:15K~35K

成長路徑:

搜尋工程師-搜尋組leader

在我印象中,很少有做搜尋的能夠做CTO或者是架構師的,這跟搜尋工程師以前的工作職責是有很大關係的,拿搜尋工程師跟Application工程師做對比就能看得出來。

一個偏演算法,偏調優,一個是偏專案,偏工程。偏工程的更需要視角全面,在某一個領域上沒有搜尋工程師研究的深入,但是整體的大局觀會好一些。搜尋工程師需要的則是深度。

4.入門門檻

有過兩到三年Java工程師經驗的人,或者是碩士畢業的,或者是數學比較好的,或者做過NLP的.這就是搜尋工程師的門檻.

如果你對資料結構,對演算法不瞭解,做個搜尋工程師挺沒意思的.

5.哪些行業適合做搜尋工程師

IT界:後端工程師中有兩年經驗,或者是碩士,或者是NLP

其他界:無

6.職業限制

搜尋的職業限制就是他很少去做工程化的程式碼,對於業務邏輯的理解跟工程化的工程師還是差一些.可以選用的框架也比較少.

所以到了搜尋組的leader之後,再往上走有點難.會遇到大資料的部門,跟他們比, 搜尋工程師又不太懂文字分類等演算法,跟專案的工程師比,在程式碼重構,專案規範上又會差一些.

這個就是搜尋工程師的職業限制.不過,這三者之間也在不斷的融合.有些工程出身的,不太瞭解搜尋演算法,只是拿來做架構體系來用,也已經夠了.

7.去哪裡學,怎麼成長

並不知道去哪裡學,等修真院有了搜尋工程師的職業以後,修真院一定是一個好的學習搜尋的地方.

十一 大資料工程師

=============被某人氣到了,以後再也不愛她了 ================================

其實一直都不太喜歡大資料工程師這個說法,總覺得有種多此一舉的感覺。不過實際上呢,確實也會有這麼一種崗位,一般來說,公司裡大概會有個6~7人的小團隊,或者是10個,都無所謂了。

在五六年前的時候,Hadoop的家族還不太多,大資料工程師其實並沒有太多事情可以幹,基礎環境搭起來,然後能夠部署,能夠跑起來就可以了。Hadoop是要在上百臺PC上跑才有顯示出來優勢,然而很多公司只有幾臺機器也是一樣喜歡玩。

後來大資料的家族就突然間多了起來。最主要的就是Spark,Storm,Mahout,Pig,Hive這些框架,以及配套的日誌系統Kafa和訊息佇列,搜尋,NoSqlDB和ZooKeeper等。

Spark,Storm,Mahout,Pig,Hive,Hadoop都算是大資料專用的框架(包括NLP了),其他的都是別的系統架構中也會使用的。

嗯。那麼,什麼叫大資料呢?馬丹我忘記了這是給IT新人介紹的。簡單來講,大資料就是指資料非常多非常多非常多,多到一臺機器放不下,要用上百臺機器儲存。而我們又常常需要從這些非常多的資料中找出來一些有價值的內容,所以就需要對運營的指標有要求,這也是MapReduce產生的原因,當解決了離線資料的時候,很多人又想問我能否做一些線上資料的實時處理。這就有了Storm。再加上其他的NLP模組,大資料就變成了這麼一坨怪東西。

記著,大資料只在幾百臺機器的時候才有用處,其他的都是小打小鬧,也是Hadoop一直被稱為笨重的原因。你要說,幾十臺,甚至是十幾臺能不能用,也可以。只是並沒有把他的價值發揮的更好。

1 工作內容:

工作內容在前期會比較多一些,基礎搭建還是一個挺講究的事兒。系統搭建好之後呢,大概是兩種,一種是向大資料部門提交任務,跑一圈給你。一種是持續的文字資訊處理中增加新的處理模組,像我之前說的增加個分類啦,實體識別神馬的。

好吧第一種其實我也不記得是從哪得來的印象了,我是沒有見到過的。架構穩定了之後,大資料部門的工作並不太多,常常會和演算法工程師混到一起來。

其他的應該就是大資料周邊產品的開發工作了。再去解決一些Bug什麼的。

2 需要技能:

環境【Linux】

框架【Hadoo,spark,storm,pig,hive,mahout,zookeeper 】

演算法【mapreduce,hdfs,zookeeper】

嗯。這些框架的原理和實現都要了解的比較清楚。這才算是一個合格的大資料工程師。

只會使用這些東西的人,終究還是菜鳥而已。

3 發展前景

不知道。看不清楚。從某種程度來說,並不覺得對這些東西的人很NB,但是總會有一些公司人為的把這些東西加上去。所以應該說現在還處於比較混亂的地位。一般人要學的話,也確實是有一些門檻,所以,也確實是屬於偏高薪的職業。

1年~3年:10K~20K

3年以上:15K~35K

成長路徑:

說不上來,大資料這個部門以後還會不會存在都不一定。

4.入門門檻

入門的門檻算是比較高的吧。比不上NLP,跟搜尋比較類似,主要就是五六個框架的原理問題。

全熟悉下來,也就是兩三個月或者是半年左右的樣子。

5.哪些行業適合做大資料

IT界:後端工程師中有兩年經驗,或者是碩士,或者是NLP

其他界:無

6.職業限制

想想該怎麼說,熟悉了這些架構之後,也並沒有什麼東西可以做。

跟NLP相比呢,在演算法的深度上比不過。跟原來的搜尋工程師比較相似,但是現在搜尋和NoSqlDB也成為了現在系統架構的主要場景,所以在工程方面也會偏差很多。

所以有點不倫不類,高不成低不就的樣子。要說以後會不會發展的很好,或者說會不會是這個職業的空缺很大,我並不知道。

7.去哪裡學,怎麼成長

不知道。有一些培訓在做這個,但是,也只能說講講演算法的東西。這個還是需要使用場景的。

十二 Android工程師

=============我原諒某人了我還是愛她的================================

Android工程師在兩年前是最瘋狂的時候。一個五年的Java工程師的薪水,比不上一個三年的Android.一方面是蘋果這種高階的裝逼工程師成了很多人不想去學IOS的門檻,一方面是Android的應用使用人數實在是太多了。

在三年前和四年前,個人開發者還很多的時候,經常盛傳一個人開發了幾個Android小應用。一年收成過三百萬或者是一千萬的事兒。這事是真的還是假的我不知道,我身邊還沒有遇到過這種人,至少都是聽別人講的,也許是有人掙了錢並不會告訴我們。

反正,現在啊。這種可能性越來越少了。所以Android工程師整體來講呢。屬於高潮過後的喘息,慢慢平穩。不算高也不算少。另外,也是受H5的影響,現在有兩種應用會使用H5,一種是做的特別簡陋。低制爛造的,一種是懶得頻繁釋出版本,經常需要動態替換內容的。

前者是特殊產物,慢慢會被終結掉。後者呢,是正常的需求,以後的發展空間會越來越大。所以,Android也是會受到JS的侵蝕。記著我之前說的。前端工程師一定要Android,IOS,JS全通,然後主精一種。

還有,Android的相容性是最煩的了。碎片化很嚴重,版本,機型都是有問題的。特別是哪家公司的老闆用的什麼機型,這款機型的適配就必須做的很好。否則。。。

以及Android是用Java開發,資料神馬的都是比較全的,上手也比較容易。不過。Android做的事兒,和Java後端做的事兒,幾乎沒有任何關聯。所以,當說Android。就是Android。當說Java。就是指後臺架構。

1 工作內容:

Android工程師的日常就是聽產品經理講需求,跟後端定介面,聽QA反饋哪款機器不相容,鬧著申請各種測試機,以及悲催的用Android做IOS的控制元件。

馬丹我其實並沒什麼東西可以了,一瞬間不知道該對這個職業說些神馬。嗯。想起來了。WEB端幾乎都是要學會自己切圖的,Android往往會要求UI切圖,原因是啥我不知道,大概是Android程式設計師都認為自己是程式設計師?而CSS工程師往往不會被當成人看?

還有還有,想起來了。各種閃退的修復,以及各種效能的調優,這些都是Android工程師的日誌。

崩潰啊,慢啊。開了會就沒電啊,如果是要做到跟視訊音訊相關的東西更悲劇。Android和IOS之間還需要做一些轉碼。

別的似乎也沒了。嗯。我又想起來了。

Android其實是對地圖,支付,IM,第三方登入,簡訊,統計,音視訊,檔案,照片等等要求比較多的。業務上其實一般並不會有太多的內容。也很少會要求一些動畫效果。再加一些手勢密碼。

還有 各種奇葩的問題。比如說Android的65536的問題。曾經摺磨了一家公司半年多。

2 需要技能:

環境【Android Studio,Maven,Gradle】

基礎【資料結構,Java,計算機網路】

元件【IM,地圖,支付,拍照,視訊,音訊,統計,分享,手勢密碼】

做的好的會對控制元件做一些自適應的改動。會把網路請求也封裝一下。處理好本地快取,處理好記憶體的佔用。

另外,介面的制訂是比較重要的,而且,果斷的使用Rest吧。表再使用一些過時又無聊的介面風格了。

3 發展前景

單純純Android的話,我覺得發展前景不算大。如我之前所說的一樣,差不多兩到三年就已經夠用了。五年的Android並不見得比三年的Android強太多,或者站在公司的角度上來說,兩到三年的Android基本上就夠用了。

0年~1年:6K~10K

1年~3年:8K~30K

3年~      :20K~

成長路徑:

Android工程師->Android Leader-》前端Leader-》

很少有Android工程師能夠做到技術總監的。所以還是早做準備,Android,IOS和JS通吃吧。

4.入門門檻

門檻比較低了。比JS稍稍高一點兒,但也差別不大。主要是因為Android是純客戶端,要做就必須什麼都懂。但是JS就不太一樣了,有的時候要求不高也能做事兒。

這就是Android比JS的門檻高一點的原因。簡單來講的話,最好是懂Java語法,然後是懂Http請求的含義,然後懂點兒MVC的概念,就可以了。

5.哪些行業適合做Android

IT界:都可以。哪怕你是產品,運維或者是QA

其他界:都可以,只要你有點兒基礎。

6.職業限制

偏客戶端的職業怎麼說呢,做的時間長了,公司對你的要求其實並沒有那麼高了。這個是Android工程師有點兒不太好的地方。靠。現在已經快兩點了。我有點神智不清了。

7.去哪裡學,怎麼成長

做Android培訓的挺多的,基本上是四個月1萬6的價格。

所以,為嘛不考慮修真院的線上免費教學呢?

我對於看視訊一直都不看好啊。

十三  IOS工程師

=============我好睏啊我好睏啊我好睏啊================================

什麼是IOS工程師?培訓4個月,薪水10K的工程師,這就是IOS工程師。

雖然有一點誇張,但是也確實存在,只是那個666的人不太可能會是你而已。

IOS之前是用ObjectC開發,現在又推出來了Swift。至少從目前來看,Swift並未成為主流和開發IOS語言。所以現在要學的IOS的話,還是會以OC為主。

從難度上來講,IOS比Android要簡單一些,Android要相容N多機型,系統底層的API也沒有封裝的很好,IOS的編譯器偶爾會出點問題,但是總體來講還是比較簡單的。

只是IOS對UI的要求會比較高一些。做出的效果也會炫很多。

1 工作內容:

IOS工程師的工作內容真的挺簡單的,聽需求,定介面。做個適配,拋棄一下iphone4。

還有啥。。

馬丹,以我為數不多的IOS知識來講,真的不知道還有啥了。

我知道的比較複雜的系統也是各種背景高斯模糊,各種漸變,各種圖片濾鏡處理,其他並沒有什麼。

支付,地圖,統計這些東西。 嗯。

2 需要技能:

環境【Xcode】

基礎【資料結構,Object,計算機網路】

元件【IM,地圖,支付,拍照,視訊,音訊,統計,分享,手勢密碼】

有崩的地方注意一下就好。

3 發展前景

IOS是屬於高階的專案必備的,因為IOS的使用者比Android的還要多一些。很多人都在解釋為什麼自己不用IOS,最被認可的答案就是:窮。

所以IOS的發展前景怎麼樣?我不知道。但是在五年之內,IOS的發展不會有問題。

0年~1年:6K~10K

1年~3年:8K~30K

3年~ :20K~

成長路徑:

IOS工程師->IOS Leader-》前端Leader-》

4.入門門檻

IOS的門檻比Android稍稍低點兒。畢竟不用做相容真的是一件很Happy的事兒。

5.哪些行業適合做Android

IT界:都可以。哪怕你是產品,運維或者是QA

其他界:都可以,只要你有點兒基礎。

6.職業限制

偏客戶端的職業怎麼說呢,做的時間長了,公司對你的要求其實並沒有那麼高了。這個是IOS

工程師有點兒不太好的地方。靠。現在已經快兩點了。我有點神智不清了。

7.去哪裡學,怎麼成長

做IOS培訓的挺多的,基本上是四個月1萬6的價格。

所以,為嘛不考慮修真院的線上免費教學呢?

我對於看視訊一直都不看好啊。

十四 運營

=============歲月沒有假期|前行不需週末|再遠的星空|也比不過內心的寧靜===============================

運營,產品,技術是創業Team的三大主心骨,這從側面也顯示出來了運營同學的重要性。而且,在收入上,運營也是產品和技術遠遠無法比擬的。你想想。技術人員做了七年,積累的是神馬?一堆破程式碼,一身頸椎病。產品人員做了七年,積累的是神馬?一堆破原型,一身鐵布衫。而運營人員呢?做了七年之後,產品再爛,技術再爛,身邊的渠道啊,人脈啊,行業的內幕啊這才是最有價值的。畢竟,什麼事情能離開了人?

不過運營也不好做,因為很多腦殘的公司都有這樣的邏輯,通過一個腦殘的想法拉來一個活不過三集的替死鬼產品經理,折騰了老實巴交的技術人員半年多弄出了一個不倫不類的破系統,一切就緒,就差一個NB的運營了。

如果運營做的不好,就是運營的錯,如果運營做的很好,但是使用者還是不喜歡,那就是產品的錯,如果使用者喜歡了,但是用不了系統總是閃退和504,那就是技術的錯。總之,產品技術運營都有錯,唯一沒錯的就是老闆自己。呃。不對,老闆的錯就是太信任手下這些人了。

運營這個概念呢。在網際網路上怎麼興起來的,說不上來,很多傳統網際網路公司在轉行的時候,經常會不清這些概念,我遇到過好幾家公司,都以為做個網站,找個CTO就行了。CTO下面管著產品,管著技術,管著運營---不對,你太天真了,他們會以為產品運營都是技術做的。

不過他們對如何能保障公司正常運轉還是有了解的。所以對運營還是有一些模糊的概念,但是,馬丹,就算是我也對運營只有一些不清楚的理解而已,他們能理解多深刻呢?簡單說,產品決定做什麼,技術來把它做出來,市場來把它推出去,運營來把它用起來。

嗯。我本來計劃寫一點市場相關的東西,後來想想,自己也實在分不清市場和運營究竟該怎麼分。什麼活動,策劃,執行,渠道,品牌,內容,資料分析。並不能向技術一樣分的這麼清楚。

所以就把市場和運營混在一起了。對於你們這些新入行的人來說,基本上是老闆讓做什麼,就做什麼唄。只是不管怎麼說,運營是一個非常非常有前景的,在之前的介紹裡,我想你們都看到了,有很多職業不適合做CTO,而後端是做CTO的最佳人選。然而,也大多數要止步於此,很多時候,我們要是奔著CEO的話,你會發現,排名第一的是產品,排名第二是的是運營,排名第三的。。沒有了。

而且,很多時候產品和運營是分不開的,也是要經常勾搭在一起的。當然,產品和技術也分不開。技術面向產品,產品和運營溝通,運營收集使用者反饋,交由產品設計,然後技術開發。嗯。

1 工作內容:

我之前給我們家超乖簡單的介紹過,運營可以從幾個大方面來分一下。

1.推廣運營:這裡包括各種論壇,知乎,貼吧,自媒體,大號,微博,SEO,導流等等所有的手段,簡單說就是用很多種方式來擴大自己網站或者是WEB的知名度,也有可能是策劃一場 活動,去人民大會堂辦個結業典禮,也有可能是找某個漂亮明星做陣,來做一出秀,也有可能是找很多行業資源一起來打造個什麼百家蛋糕店對修真院弟子免單之類的東西。

2.內容運營:推廣的話,肯定要有什麼東西才會推,剛剛提到的很多內容,有很多都是要靠內容的。以前是軟文,現在的方式比較多了。什麼易企秀,秀米之類的H5製作,但是絕大多數都是以H5為主,大部分都是線上傳播,形成熱點,靠成口碑效應,一般來說,三天五天之內是傳播的最佳時間,過了三天或者是五天,熱度就會直線下降。

這也是內容團隊需要不斷的生產內容的原因。並沒有一招鮮吃遍天的說法。這篇文章同樣,在最初的一個星期之內,瞬間擠進來1000人,現在呢,每天穩定在4~5個人左右。

3.系統運營:系統運營並不僅僅是包括給出一個後臺。開個賬戶,找回個密碼,查一下使用者的資料是否異常等。有的時候還包括你的系統的核心設定。比如說,要不要有VIP,VIP應該有什麼特權,多長時間合適,能談到多少合作伙伴,應該分幾個級別。這些跟產品要做的事情比較接近了,只是這些都是要根據使用者的表現不斷的反饋來調整的。別的不說。現在大修真院就有好幾個QQ群。這些QQ群怎麼設計,怎麼管理,本身也是運營工作中的一種。

4.資料分析:這個其實是運營中最有技術含量的一種,也是讓運營這個崗位比產品接地氣的原因。運營人員是最接近使用者的,也是最瞭解使用者行為的,在大資料的時代,對使用者行為的分析真的不是一丁半點的重要-雖然在某種程度上,你一點不分析也可以,反正都沒有人用。

資料分析包括很多,使用者的留存率,日活,月活,召回率,轉換率,跳出率,PV,UV,男女,職業,地域,年齡,瀏覽時長,頁面熱點,瀏覽路徑,高峰低谷。這些資料運營人員要頭腦清晰,把這些數學全部整合在一起,結合自己對業務的瞭解,然後制訂定出後續的計劃,看看是需要提高召回率,還是需要提高轉換率,看看系統的主要使用者屬性,藉此去尋找更多的使用者。

嗯。很有意思。

所以運營的工作,有的時候是需要你去申請一個百度認證,提交各種資料,有的時候是需要你去找一些合作伙伴,商量換個廣告位,有的時候是需要你去談幾個合作商家,籤幾個戰略協議,有的時候是需要你去策劃一場活動,挨個去跟活動參與者去談,有的時候是要去刷臉,請朋友來幫你站臺,有的時候是需要你坐下來,寫一篇色情幽默的文章,更多的時候要收集使用者的反饋,幫助他們解答為什麼你們的網站註冊不了,簡訊驗證碼收不到等一系列問題,後臺加個V,換個廣告,最重要的是每週或者是每月出個報表,來給大家彙報一下當前的使用者情況,給領導層做決策使用--雖然我一直都覺得完全是在扯淡,再好的資料都比不上真實的瞭解這個行業,資料只能是輔以支援,二手資料的價值並不是沒有,只是很容易讓人跑偏,就好像我今天剛好看到的說Facebook幾年沒改版,是因為在小範圍內改版發現使用者的活躍度下降--真心覺得蛋疼。FaceBook最終的價值並不應該僅僅是在頁面上,這些會有影響,但是絕對不應該是一個決策的關鍵性因素。

然而做運營最重要的一點就是,不要去詢問使用者,而是去觀察使用者。對於這點我是非常認可的。

2 需要技能:

行業知識【各種行業知識,必須要懂行業,像推廣,渠道,活動,SEO這些都需要了解一些】

人脈【各種刷人臉,湊熱鬧,換資源】

文筆【文筆太差就找個小妹妹,風趣幽默點,否則沒人看】

資料分析【看資料,寫各種各樣的PPT,然後做決策】

還有就是,跟產品和技術搞好關係。運營的職位其實是天生比產品和技術高一層,也正是因為這樣,才會經常招產品和技術罵,哈哈哈哈哈哈哈。特別是當一部分需要從運營這邊傳遞到產品裡的時候。

如果你繞過了產品,直接用所謂的運營驅動去做開發,那更完蛋了。

3 發展前景

絕對好。無論技術發展到什麼程度,無論產品變換多少次風格,運營的核心理念都不會變,積累的人脈不會變。運營,可以做100年。

0年~1年:6K~10K

1年~3年:8K~20K

3年~ :20K~(百萬年薪級別的運營多的是。)

成長路徑:

運營專員-》部門經理-》運營總監-》CEO

4.入門門檻

這個說要門檻,有點談不上。畢竟有深有淺,情商要高是必須的,其他的只能說有了更好。

好的吧,就算是情商低也可以去做編輯,每天只是對著後臺系統一陣改。

5.哪些行業適合做運營

IT界:都可以。哪怕你是產品,運維或者是QA

其他界:都可以,只要你有點兒基礎。

6.職業限制

我想想,運營人員常常會受限於資源,也常常會迷失在資料裡,很多運營的人,其實是做不到那麼 高的職位的,對於他們來說,自己的行業積累和人脈積累沒什麼用處,因為只有你本身有價值,你才能跟別人互相交換。所以有的時候會高不成低不就,退回去做產品和技術,又缺少專業技能,也是一場 人間悲劇。

這大概也是運營這個崗位的職業限制吧,缺少乾貨,心裡容易沒底氣。

7.去哪裡學,怎麼成長

有沒有公司或者是機構做運營?我其實並不知道的。修真院還有一個專案叫做草船雲,是幫助傳統公司和創業公司做技術孵化服務,能夠提供產品和技術的支援,但是運營這部分不太敢碰,嗯。所以運營的最快成長方式,還是從一個崗位切入手,傳幫帶。

資料分析神馬的還好,我會在接下來的修真院系列中寫一些運營相關的基礎名詞(所以快關注我的收藏夾),能有一些入門的術語。其他的呢,大概只能是見多識廣才能做。

嗯。我可以在修真院嘗試一下,看看能否有一些運營簡單的培訓,只是太淺了,並不能像技術一樣,板上釘釘的保證,只要你聽話,認真,努力,就能成為一個初級工程師。

備註14:收尾了~麼有了~累死了~這些都不是一天寫的,所以有時候心情好寫的多,有時候心情差,寫的少。我打算過幾天再整理一下~~儘可能的風格,結構都一樣。

備註13:馬丹,實在不知道怎麼寫了。

備註12:好煩燥啊好煩燥。

備註11:沒什麼。趕緊寫完

備註10:嗯.越來越不想寫了.因為沒多少人看了.

備註9:今天又不開心。演算法工程師也好久沒接觸了,也寫的磕磕跘跘的水份比較多,其實我能寫的更好的,只是被最近知乎上的一些人噁心到了,也提不起來精神去做這個事了。

備註8:不開心。我是一個容易抽風的人,到了一個臨界點我就會毀掉我自己辛苦做好的一切。所以,如果覺得有用但是又沒備份,就趕緊下手吧。我寫貼子都不備份的。

備註7:今天啊。寫的運維有點兒神智不清了。寫東西都不是件容易的事兒,而且寫的時間長了,很容易發現自己思路走偏,變成套模板了。所以這個答案我想,還是要找時間再整理一下的。把硬廣稍稍軟一下,把內容編排的更合理一些,把圖做的更好一些。。就這樣,大家晚安~

備註6:這個DBA寫的我真的是比較糾結,有太多很容易引起爭議的內容(其他的內容也會引起爭論啦然而我不在乎,因為我有了我確定的答案)。所以這個是我比較希望的有其他人能夠補充的。

簡單說,就是三個階段,最早的DBA是處理優化的SQL,後來變成了資料的安全和備份,再往後就是集中到專業的雲伺服器公司,提供更專業的底層服務--這個看起來才是DBA最佳的歸宿。

下次更新時間大概會在兩三天之後。畢竟我還要回貼吧罵街。

備註5:今天本來沒打算上來看知乎的。因為瞬間從知乎來到了群有近600人,折騰了我一天。

本來想回去睡覺了,然後呢,發現有幾個人在評論裡舉報說我是廣告。

      我就想說一句話,是廣告沒錯,但是誰能覺得我說的沒問題,就請過來補充交流,我向你學習。然而如果是沒事找事,純屬蛋疼,不好意思。我不是一個文明的人,我罵人句句帶髒字。

      以及,本文的內容之所以加上廣告,正是以例項來證明文中所舉的例子是真實發生的事情。

      還有,加了群的小夥伴們請認真看群公告。

有些是我懂的,有些是我不懂的,我懂的我會說,我不懂的我就亂說。如果你們覺得你們的答案比我寫的好,比我瞭解的多,比我更專業。歡迎你們去再回答好麼。

本答案中的所有觀點都帶有偏見,等下我就編輯到開篇,我不負責,也一定不客觀。

就這樣,睡覺去了。

備註5:正準備繼續編輯貼子呢,然後發現了中兵大人也在回貼。中兵大人是獵聘網的技術總監,也是修真院的客卿長老,在Erlang和自動化運維部署方面都很犀利,出過好幾本書。所以也順便給獵聘做個廣告,獵聘是我知道的獵頭聚集地最多的地方,職位也挺多的,如果說有個幾年的工作經驗,其實就可以去獵聘上試試啦。

備註4:其實我不太清楚,寫的這些東西你們能否看得懂。畢竟我和一個IT新人的差距還是挺大的,我也經常說,最好的就是師兄帶師弟。如果你們有覺得我沒說清楚的,評論裡多說幾句,給我一些反饋。我可以保證我一定不會百分之百的聽,哈哈哈哈哈。但是我會聽,然後找到我自己覺得有道理的,改進一下。

備註3:我每寫一段,就會加一段備註,我得很認真的告訴你們,我說的每一句話,都是我從業近十年以來的心得和體會。而且絕對不會為我的態度負責,還有,加入IT修真院的小夥伴要記著,IT修真院跟其他的培訓結構截然不同,不要進去喊老師,老師不夠凶殘。還有,我並不是一個好脾氣的人,而且也絲毫不講風度,可以隨時隨地跟任何一個人對噴,也特別喜歡這樣。

寫這麼多,一方面是希望大家知道修真院的正確學習方式,表再看視訊然後感覺懂了結果一行程式碼都寫不出來了,另一方面,也確實想給願意轉行的人提供一個參考。

備註2:好了。讓我休息,休息一下。一天能寫兩個對我來說已經很不容易了。所以,再多點贊,再多點感謝,再多點人加群,再多點認同給我--我還是一天只能寫兩個,哈哈哈哈,不過我會感謝你,大概因為你這麼做,可以讓更多的人知道。

備註1:未完待續,一直在開會。讓我歇會兒。先把廣告打上。

PS:求助 為毛我不能給字型加黑,看起來好麻煩。

另外也推薦大家關注一下我的收藏IT修真院系列 - 收藏夾

接下來的貼子,我要寫的話,還是會收藏到這個系列裡。

第一篇對IT職業做了一個相對深入的介紹,給了想從事網際網路職業的人一個瞭解各個職業的機會,已經有4000+讚了,我想是真的幫助到了很多人。IT行業都有哪些職位,初學者(0基礎,新人)該如何選擇,才能夠快速進入這個行業? - xdyl 的回答

第二篇是對敏捷開發和專案管理做了一介紹,這篇貼子還沒寫完,其實它的價值遠遠大於第一篇走馬觀花的介紹。只是大家還沒有到能夠理解敏捷開發的時候,所以我想了很久,決定暫時不寫了。

網際網路公司的“敏捷開發”流程是怎麼樣的,每個職位的角色和分工是什麼? - xdyl 的回答

這是第三篇,寫這個貼子的動機是因為,在修真院有不少人在問,我要學到什麼程度才能找到工作,我是零基礎啊,有沒有視訊和教程可以教我。有哪些IT初學者(新人)成長為技術大牛的真實經歷? - xdyl 的回答


今天的分享就到這裡啦,歡迎大家點贊、轉發、留言、拍磚~

        技能樹.IT修真院

        “我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。

        這裡是技能樹.IT修真院,成千上萬的師兄在這裡找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧~

我的邀請碼:17742750,或者你可以直接點選此連結:http://www.jnshu.com/login/1/17742750

相關文章