網路工程師如何創業
在網際網路的浪潮下,產品在快速地推陳出新,技術在不停地推陳出新,在這種大環境下,人心趨於浮躁,往往很難靜下心專心做技術,唯有耐得住寂寞,才守得住繁華。以下是小編為大家蒐集的相關文章,希望對你有所幫助。
:工程師的自我突破
態度決定一切
有句老話叫作:態度決定一切,你的態度如何,在一定程度上已決定你是失敗還是成功。我覺得這點在做技術時體現得淋漓盡致,就以Openstack專案為例,在其中發現一個bug,其實不是難事。那麼在發現某個Openstack服務的bug時,不同的工程師有著不同的態度:有的人隨意Google一下找到解決方法然後接著幹活,有的人嘗試閱讀原始碼後去自行修復bug,有的人會把寫好的bugfix嘗試推送到社群的upstream去。我們都會以工作太忙為理由,只以問題的解決作為目的驅動,從不去細究問題的源頭。因此,這就導致了若干年後,有的工程師還只在原地踏步,有的已經不僅深入掌握原始碼,還能快速地做二次開發,還有的人不僅養成了良好的程式碼風格,還能積極地參與到upstream的開發中去。
記得在剛進入Sina雲端計算部門的時候,團隊協作平臺的副標題是28號加粗的一行文字:Develop is not easy。雖然不知道是哪位大牛寫的,直到現在我仍然記憶猶新。Develop不光狹義地指開發,而是囊括了所有的技術崗位,我們要時刻清晰地認識到把事情做好並非易事。這裡不僅指技術本身,還涉及許多相關的細節,這些細節常常被多數工程師忽略,而正是這些細節才能體現出一個工程師的閃光點。
我常使用業務素質一詞來評論工程師:這個工程師的業務素質很高,指的是他不僅在專業技能上出類拔萃,更重要的是在做事上非常認真,事無鉅細,小到程式碼格式,註釋,變數名稱,程式碼提交資訊,文件等每個細節都能體現出認真兩字有多麼難得可貴。凡是做過技術的朋友應該都會有所共鳴,並且從腦海中立馬浮現出那些閃閃發光的人名來。
保持努力
我不想在努力這一點上舉例來說明努力是多重要的因素,因為我們從小就開始灌輸努力的重要性。我只想強調在正確技術突破的道路上,你必須不停地更新自己的知識和技能,才能越走越遠。
我認識的另一位朋友,社群核心開發者,我詢問他聖誕節打算去哪裡過,他給我的回答是:I'm not going anywhere, just writing codes at home. 所以,那些外國工程師之所以如此牛逼,並非他們生來如此,而是他們的不懈努力。
所以請一定要做到保持這份幹勁,並且時不時買些心靈雞湯激勵一下自己,或者按老羅所說:噁心一下自己,保持大腦亢奮。現在我腦子裡只要一想到Emilien的那句“I write puppet codes except eating and sleeping“,就開始失眠,這雞血的劑量使得我的生物鐘又延時了一個小時。
充滿熱情
在我認識的技術人中,做得出色的人大都有一個相同特點:富有激情,他們總以一種積極主動的態度去對待生活和工作。我相信所有剛入IT行業的同學們都是滿懷對於未來的憧憬,只是這種彌足珍貴的熱量很容易被許多外界的負面因素慢慢磨滅:工作單調乏味,生活壓力太大…但不要因此就把你的熱情埋藏起來,一旦你習慣了埋藏,你將是一個了無生氣的人。如果你失去了對於追逐技術的熱枕,那麼很難在技術的道路上有所突破。激情,在很多時候,往往能點燃我們創新的本能。有了激情就有了不竭的動力,你的內心同時也會變化,越發有信心,別人也會逐漸認識到你與眾不同的價值。
善於溝通
工程師們常常把精力放在編碼上,而很少去關注自己溝通能力的培養。我曾遇到過一些大牛,有的不屑寫文件,有的不會用git等團隊協作工具,還有的連話都說不清。不能否認他們在自己各自的領域中耕耘得很深,但是在分工如此細化的時代,大多數專案都需要團隊協作才能完成,因此溝通是無法避免的:產品經理和設計師之間的溝通,後端組和前端組之間的溝通,研發部和運維部之間的溝通…為什麼有時候對方聽不明白我們想表達的意思,導致跨部門的工作寸步難行。
TED上有個有趣的演講題目叫作:怎麼說話人們才聽,聲音學專家朱利安給我們上了生動的一課,列舉了為什麼沒人願意聽我們說話。因此,我們在與別人打交道的時候,我們必須明白對方在想什麼,也要讓對方明白我們想表達什麼。
除此之外,對於工程師而言,溝通能力並不侷限在語言溝通上,還有在協同開發時的溝通,例如對於使用git做版本控制的專案,若是沒有掌握好git工作流,溝通將異常困難。程式碼審查系統上的互動,也是溝通方式的一種,你需要理解他人給你的意見,你能夠向他人表達清楚你的意思。
全面 vs. 專精
以部署系統為例,早先的部署系統完全為公有云打造,要求做到細粒度控制,但操作起來比較繁瑣;而現在要求同時管理公有云和數量龐大的託管雲集群,並且每家在架構上都會有所差異,這就要求部署邏輯解耦,靈活可變,支援不同環境,不同拓撲,不同軟體棧,還要解放實施人員,減少部署時間。
但由於每個人的精力都被分散到多個領域,因此很難集中精力把部署系統做好,於是我們開始從多面手向專一轉變。也正是因為這兩年我們什麼都做,猛然一回頭大家有些迷茫:自己什麼都懂,但又什麼都做不精。那麼問題來了,學技術到底是…到底是精通一種還是全面發展好?
Take it easy,在技術的道路上看似會有兩種截然不同的方向:橫向擴充套件和縱向深入。橫向的猶如瑞士軍刀,十八般武藝樣樣精通;縱向的是削鐵如泥的倚天劍,倚天不出,誰與爭鋒。橫向擴充套件可以拓寬你的視野,讓你不再侷限在某一種技術中,並也給你的未來多了一種可能;而縱向擴充套件,可以使用你深刻理解一項技術的細節,讓你靜下來思考問題的本質,你可能會驚訝地發現某些原理都是相通的。這兩個方向都沒有對與錯,發展到一定程度都會相互溶合,就好比中國佛家禪修的南頓北漸,其實到了最後,漸悟與頓悟是一樣的,頓由漸中來。
不過哪個在前,哪個在後,我個人認為還是先做到對某一個領域有較深的理解和掌握後,進而去學習其他方向,這個道理就如同精通一門語言的程式設計師再去學習其他語言時就能駕輕熟路。
關於這兩點的結合,我有很深的印象,如上面提到的情況,剛開始的時候,運維相關的事情繁雜,每個人都得是多面手,要去cover多個領域,也因為此只能把每件事情做好而無法做精。在叢集規模不斷擴大和業務量的增長後,原先不是問題的地方開始暴露出來,這就有精通該領域的工程師來獨擋一面。這是一個自我學習,自我改變的過程,也是自我突破的關鍵。
瞭解自己,把握方向
在大學課堂裡,工作面試和入職培訓時常常能聽到一個詞:職業規劃,就是對職業生涯乃至人生進行持續的系統的計劃過程,它包括職業定位、目標設定、通道設計三部分內容。職業定位主要是指:一是確定你是誰,你適合做什麼工作;二是告訴別人你是誰,你擅長做什麼工作。人生是應該有一個規劃,這樣可以對於未來設立一個期望,明白前進的方向。但這類職業規範往往過猶不及,覬覦通過把自己的人生畫在紙上,然後按圖施工的想法是不切實際的。仔細想想你真的能在剛踏入社會時就能真正瞭解你擅長做什麼工作,適合做什麼工作?
喬幫主說過一句話:“如果你瞭解自己,能夠明白地做自己,職業規劃如同虛設”。所以,你只要清楚自己想要什麼,然後朝著這個目標去做自己想做的事,就可以了,為什麼要給人生設限?何不嘗試一下跨界?
前文中我談到了一個網路工程師的華麗轉身,接著聊一聊我們運維團隊從UnitedStack成立伊始到現在發生的故事。
從理想國際大廈走出來開始創業的第一天,一個現實擺在了我們面前:採購伺服器和交換機,選擇IDC。在新浪,伺服器選型有專門的部門做,採購硬體有專門的部門做,交換機配置有相應的部門做,伺服器上架有相應的部門去做,我們只有基礎運維和業務運維的經驗,原先所擅長的只是一個狹小的領域…
看來唯有自己動手,才能豐衣足食,我們著手開始調研伺服器的選型,交換機的配置,IDC的選擇。通過不斷的摸索,現在我們制定了一套成熟的機制去根據不同業務來選型伺服器,形成了一套完善的網路拓撲去連線分佈在全國多個機房的公有云和託管雲集群,也有了穩定的IDC合作伙伴。
許多朋友可能還記得UnitedStack去年釋出的UOS 1.0發行版,其後端程式碼完全由運維組編寫。當時,我們轉身從運維變成研發,調研了主流的StackOps, Fuel Web,根據產品設計的需求,開發了一套由Python+Puppet編寫的後端程式碼,實現了Openstack叢集的自動化部署;內部的持續整合&持續釋出系統也全由運維組負責,我們根據研發工程師的實際需求對持續整合工具鏈做了多次整合以匹配整個研發體系的日常工作;14年初公司業務開始涉足公有云和託管雲,我們和研發部門共同設計了公有云,託管雲的整體架構。由於業務量的急劇上升,我們著手開發了資產管理,節點管理等多套運維平臺。同時,和一般的運維團隊不同,我們還負責虛擬伺服器的映象自動化製作和維護,參與Openstack最龐大的計算專案Nova的定製開發並一直保持與社群upstream同步,參與puppet-openstack社群的開發,一直在向社群貢獻原始碼。
因為我們清楚所做的一切都是為了能把“事”做成,因此做什麼並不重要。而且通過這兩年的磨練,我們在技術上最大的收穫在於大家的視野不再侷限於各自的一畝三分地裡,在面對新問題時,可以站在不同的角度去思考,這種在大公司裡無法獲得的經驗就顯得彌足珍貴。因此瞭解你自己,明白你自己想要什麼,然後把握好方向。