劉大,您好。面試的時候面試官經(jīng)常會問: (1)你們的用戶量是多少,項目的QPS是多少,TPS是多少,接口的數(shù)據(jù)量大概有多大; (2)生產(chǎn)線上的部署情況是否了解,怎么做的前后分離,如何做的集群等。 像這些問題普通開發(fā)要怎么去弄清楚呢,比如QPS、TPS、接口數(shù)據(jù)量這些怎么測出來呢?還有像第二個問題項目架構(gòu)這些,現(xiàn)在前后分離,系統(tǒng)的架構(gòu),比如網(wǎng)關(guān)、微服務(wù)集群、數(shù)據(jù)庫集群這些普通開發(fā)根本接觸不到,也看不到那些架構(gòu)的文檔,有專門的人來弄,很是煩惱,像這些問題要怎么解決呢?
一
如果這個項目已經(jīng)運行多年,一個普通開發(fā)想把這些東西搞清楚確實不容易。
我在《這個游戲太難了,我花了15年還沒有通關(guān)》這篇文章有過這么一句話,可能大家一掃而過,沒注意:
“不滿足于當(dāng)前的工作,開始學(xué)會從全局,從端到端看待系統(tǒng),思考問題?!?/p>
在平時的工作中就不能把自己定位為一個普通開發(fā)人員,只關(guān)注自己的一畝三分地,要經(jīng)常站在比你更高一層,甚至高兩層的崗位去思考問題。
如果做到這一點, 這些問題的答案在平時的工作和溝通中應(yīng)該已經(jīng)搞定了,找工作面試時那是信手拈來。
那在平時工作中到底怎么去獲取這些數(shù)據(jù)呢?
用戶量,QPS 這些數(shù)據(jù),生成環(huán)境的部署情況,架構(gòu)師對這些東西肯定門兒清;網(wǎng)關(guān),服務(wù)器集群這些東西運維的人肯定也知道, 直接去問行不行?
可能有這么幾種情況:
1. 你和他們很熟,人家耐心細致地給你做了解答。
2. 和他們不熟,但是人家為人很好,耐心細致地做了解答。
3. 和他們不熟,人家可能會敷衍你,介紹一點兒皮毛。
第一種情形當(dāng)然是最好的,第二種發(fā)生的可能性不太高,第三種可能性最高,這時候該怎么辦?
此時程序員軟技能的重要性就體現(xiàn)出來了,之前我在星球畫過一個圖,叫程序員的鐵三角,可以在精華區(qū)看到。
你和公司負責(zé)系統(tǒng)設(shè)計的人有沒有建立連接?關(guān)系怎么樣?比如在老大的會議上有沒有認真傾聽,主動參與討論,提出讓人印象深刻的問題?有沒有在高級技術(shù)人員面前分享過技術(shù)? 有沒有認真地分析項目存在的問題,并且向老大提出切實可行的建議?
有沒有和搞運維扯上關(guān)系?假設(shè)生產(chǎn)環(huán)境出了問題,你幫著做了調(diào)查, 難道沒有順勢多聊聊生產(chǎn)環(huán)境的情況?
這些都是建立連接的機會,要抓住。
不要怕,一定要主動, 大家都是人,只要能展示出主動學(xué)習(xí)的意愿,深入思考的習(xí)慣,那些高層的人以及相關(guān)的同事會對你印象深刻,并且樂意幫忙的。其實一個人教會了別人一些東西,得到了別人贊賞和尊敬,是有不小的成就感的。
二
有人可能會覺得不屑:這是不是在搞關(guān)系,巴結(jié)領(lǐng)導(dǎo)?
我給大家講個小故事。
五六年前,我在一個項目做架構(gòu)師,組里來了一個90后,經(jīng)常跑來問各種各樣的問題,中午吃飯要跟著我,吃完飯去散步也會跟著我,有時候我確實覺得他有點煩,纏著我問得太多了,于是我告訴他很多問題自己先找下文檔,研究一下再問。
這個小伙子是個極端的例子,但是我覺得他挺上進的,從他的提問中我能看出一個新人加入項目面臨的問題和困惑,這也是以后應(yīng)該改進的地方。他對新技術(shù)也很熱衷,吃飯時和我討論起來,也會讓我學(xué)到新的東西。
與此相反,有些人就是經(jīng)常趴在那里干活,按部就班,一聲不吭,反而讓我覺得他沒什么想法,沒什么追求,其實他是有追求,只是沒有表達出來,或者只能通過一些偶然的事件上讓我認識到他的想法和意愿 -- 這對技術(shù)人員來說是吃虧的。
這么說似乎有點殘酷,但現(xiàn)實就是如此。在大公司,有完善的上下級溝通制度,上級可以定期地通過一對一會議的方式了解你的想法,給你規(guī)劃未來的發(fā)展。中小公司可能就缺乏這種機制,如果你不主動,不能把自己展示出來,發(fā)展的路徑就受限了。
三
和領(lǐng)導(dǎo)建立連接,這只是非常初級的一步, 只是一味地去搞好關(guān)系,也許一時有所收獲,長久肯定得不償失。
如果這個領(lǐng)導(dǎo)就喜歡那些搞關(guān)系的人,那這個部門也沒有呆下去的必要了。
關(guān)鍵的步驟是你能給領(lǐng)導(dǎo)、給部門帶來價值,這才是職業(yè)發(fā)展的真正動力。想想看,你提出的想法,開發(fā)的工具,做出的項目和產(chǎn)品,能給領(lǐng)導(dǎo)和部門增光,你的進步能不快嗎?還需要刻意去搞好關(guān)系嗎?
如果運氣不錯,再碰上一個能把蛋糕做大,提供很多上升機會的好領(lǐng)導(dǎo),你的職業(yè)生涯想不起飛都很難啊。到這個時候,你就變成那個掌握用戶量、QPS等數(shù)據(jù),設(shè)計網(wǎng)關(guān)、集群的人了。
總結(jié)一下:做一個主動的程序員,和同級、上級建立良好的連接,與此同時,想辦法給部門、給公司帶來價值。