送給即將成為程序員的你們
親愛的你們即將從動(dòng)力節(jié)點(diǎn)畢業(yè)進(jìn)入到工作單位中,我希望你們?cè)谛碌墓ぷ鲘徫恢杏行碌氖斋@,動(dòng)寶兒送給你們幾句祝福和工作中的注意事項(xiàng).
初入職場(chǎng),對(duì)一個(gè)程序員來說更重要的是什么?
初入職場(chǎng)的你們要有初級(jí)程序員應(yīng)有的職業(yè)規(guī)劃比如以下幾點(diǎn).
• 1.技術(shù)基礎(chǔ)
• 2.業(yè)務(wù)積累
• 3.職場(chǎng)情商
技術(shù)基礎(chǔ)是指作為一名程序員來講的一些基本的、通用的技術(shù),諸如數(shù)據(jù)結(jié)構(gòu)、算法、數(shù)學(xué)能力、軟件工程理論、操作系統(tǒng)基本知識(shí)、編譯原理以及你所從事的技術(shù)崗位所使用的技術(shù).這些是學(xué)校里教給你的東西,無論學(xué)得怎么樣,在你的程序員生涯中它們都將跟隨你一輩子,因?yàn)闊o論你從事什么技術(shù)崗位,在這個(gè)行業(yè)中,這些東西都是共通和必要的,是身為一名軟件工程師的立足之本.
業(yè)務(wù)積累指的是你在部門里邊具體承擔(dān)的業(yè)務(wù),相對(duì)前一條來說,這一條是不存在行業(yè)中的普遍性和通用性的,然而如果說前面一條是使你順利拿到校招offer的前提,那么這一條則是你所在的公司每個(gè)月付給你”比任何一個(gè)行業(yè)的任何職位在初期都要高得多”的薪資的理由.換言之,如果你是一名實(shí)習(xí)生而你手上卻沒有任何業(yè)務(wù)積累,你該為自己能否得到offer而感到忐忑,而相反的情況如果你手上已有很多業(yè)務(wù),每天忙得要命,你也該清楚現(xiàn)在的這個(gè)部門給你發(fā)offer應(yīng)該是板上釘釘?shù)氖铝?
第三點(diǎn)也許是更容易被我們程序員這樣一個(gè)群體所忽略的——情商.這也是本文真正想要表達(dá)的要點(diǎn),是我想在這篇文章中給你的建議.
程序員的情商有那么重要嗎?
引用大家所熟知的OOP的思想,無論你是一名服務(wù)端、Android還是機(jī)器學(xué)習(xí)算法、數(shù)據(jù)挖掘工程師,你的職位title都是從軟件工程師這個(gè)父類繼承下來的,而軟件工程師這個(gè)職位繼承于工程師,更繼承于”公司職員”.
但凡是一名公司職員,就免不了職場(chǎng)中的人情冷暖、酸甜苦辣.因?yàn)樯硖幑净鶎?每一個(gè)工作日你無法避免的要與各種人和事打交道.說的直白一點(diǎn),有人的地方就有利益,職場(chǎng)中人與人之間的利益不可能沒有沖突.
當(dāng)你的個(gè)人利益與其他同事的個(gè)人利益、團(tuán)隊(duì)利益甚至公司的利益發(fā)生矛盾時(shí),你至少應(yīng)該清楚沒有哪個(gè)職場(chǎng)人能夠避免這一點(diǎn).
在諸多利益交織下,到一定程度以后你會(huì)明白始終維持著這一切的不是別的,是人情!
那些充滿”正能量”的新員工培訓(xùn)可能告訴你什么”主人翁意識(shí)”什么”不想當(dāng)老板的員工不是好員工”,然而在現(xiàn)階段對(duì)你來說更重要的卻是融入團(tuán)隊(duì),和你身邊的同事還有領(lǐng)導(dǎo)搞好關(guān)系.
如果你跟部門里的任何一位同事關(guān)系鬧僵,我敢保證在這個(gè)公司里你將舉步維艱,每天上班的心情猶如上墳.
情商體現(xiàn)在哪里?
對(duì)于一名初入行業(yè)的軟件工程師來說,你不只需要和代碼打交道,更需要與產(chǎn)品溝通需求、向領(lǐng)導(dǎo)匯報(bào)工作進(jìn)度以及跟其他技術(shù)崗位的同事協(xié)商和聯(lián)調(diào)代碼.
我從沒見過或是聽過哪個(gè)公司的哪個(gè)項(xiàng)目可以從產(chǎn)品策劃到UI設(shè)計(jì)再到前后端編程開發(fā)調(diào)試測(cè)試上線發(fā)布后續(xù)運(yùn)營(yíng)維護(hù)等工作全部由一個(gè)人來完成的,如果有,這也一定不常見.
我知道校招生們多數(shù)愿意進(jìn)BAT這些大公司,并且回頭看來這一步也確實(shí)沒有錯(cuò),大公司給你的不只是更高的起薪以及畢業(yè)時(shí)在老師們面前優(yōu)人一等的光環(huán),更重要的是你將會(huì)認(rèn)識(shí)更多和你一樣出色的同齡人,你的視野將會(huì)更開闊.
然而細(xì)細(xì)想想在一個(gè)大公司里,我們工作的更多時(shí)間是開會(huì)而不是寫代碼.捫心自問在一個(gè)公司里干了一個(gè)月以后,你究竟寫了多少行代碼?你又開了多少個(gè)會(huì)?
這不叫效率低下,在公司體制龐大以后這些溝通我認(rèn)為全都是必要的,這些花在管理和溝通上面的成本對(duì)公司來講很值得,就像一塊硬盤能存下多少數(shù)據(jù)就必須產(chǎn)生相應(yīng)的區(qū)塊保存數(shù)據(jù)的物理地址和邏輯地址,再加上系統(tǒng)級(jí)的內(nèi)存管理、應(yīng)用級(jí)的框架消耗和垃圾回收,仔細(xì)想想我們每天使用的手機(jī)、平板和電腦設(shè)備的更多內(nèi)存資源和CPU使用其實(shí)都是消耗在了設(shè)備自身對(duì)數(shù)據(jù)的管理上,機(jī)器尚且如此,更何況人呢.
所以不要對(duì)開會(huì)產(chǎn)生反感,每一次會(huì)議都是你學(xué)習(xí)的機(jī)會(huì),更是你表現(xiàn)自己的機(jī)會(huì).如果在一次會(huì)議上你提出了一處UI設(shè)計(jì)稿上面的缺失剛好是你的leader沒考慮到的,他下次還會(huì)帶上你一起開會(huì);如果在服務(wù)端Rest接口確認(rèn)的過程中你想到了一個(gè)leader們沒考慮到的數(shù)據(jù)項(xiàng),這很可能為整個(gè)開發(fā)周期節(jié)省一到兩天;與產(chǎn)品溝通需求時(shí),并不是一味地否定和砍減需求,也不是毫不過腦子的點(diǎn)頭,你應(yīng)該設(shè)身處地的站在把一個(gè)產(chǎn)品做到盡善盡美的角度去跟對(duì)方溝通,刪掉對(duì)大家都沒有利益的需求,必要的時(shí)候甚至增添一個(gè)對(duì)雙方都有收益的需求.
這一切都能夠讓你的工作狀態(tài)更為積極,而積極的工作狀態(tài)對(duì)你對(duì)公司對(duì)所有人都是有利的.
初期應(yīng)該如何融入團(tuán)隊(duì)?
舉個(gè)例子:如果說部門里缺前端,你作為服務(wù)端也該自己學(xué)會(huì)寫后臺(tái)管理頁面,這些東西leader看在眼里,他會(huì)明白你的努力.
另外千萬不要放過任何和同事們溝通的機(jī)會(huì),哪怕是午餐時(shí)的閑談.這恰恰是發(fā)現(xiàn)一些”可撿的活兒”的一個(gè)途徑.
遇到技術(shù)上的問題該怎么解決?
第一個(gè)原因是作為一名初入崗位的工程師,不是看不起你,很多時(shí)候你對(duì)自己遇到的問題究竟該不該問別人,該問的話該問誰你都是不知道的.在這樣的情況下,你很可能把一個(gè)google五分鐘就能解決的程序語法報(bào)錯(cuò)拿過去問了你的同事,問問題存在溝通成本和理解成本,你的描述不清以及對(duì)方缺乏上下文了解這些都可能增加以上兩個(gè)成本,這樣一來不僅耽誤雙方的時(shí)間,長(zhǎng)此以往還會(huì)讓對(duì)方覺得你記得技術(shù)基本功不扎實(shí),獨(dú)立處理問題能力差.
第二個(gè)原因是,即使這個(gè)問題真的是一個(gè)較為冷門的編程語言運(yùn)行環(huán)境層面的bug,你在不經(jīng)過任何思考的前提下把它拋給了你的導(dǎo)師或是你的leader,他很可能是遇到過這個(gè)問題的,于是直接把問題的答案告訴了你,這樣你就錯(cuò)過了一次在你所使用的語言環(huán)境下親自踩坑然后填坑的機(jī)會(huì).
我認(rèn)為對(duì)于程序員來說,總有一天你要獨(dú)立面對(duì)這些編譯環(huán)境、運(yùn)行環(huán)境的偏門bug,因?yàn)槟悴豢赡芤惠呑又粚懸婚T語言或是只從事一種開發(fā)崗位,你現(xiàn)在可以問你的導(dǎo)師問你的leader,那么你自己當(dāng)上leader之后又該問誰呢?總不能告訴自己的老板,這問題太難了,我解決不了.
對(duì)于初入開發(fā)崗位的你來說,每一次踩到一個(gè)坑然后獨(dú)立填坑的經(jīng)歷都將會(huì)加速你對(duì)更多技術(shù)領(lǐng)域內(nèi)的知識(shí)和問題的學(xué)習(xí)速度,也將會(huì)提高你作為一個(gè)工程師的價(jià)值.
如何與產(chǎn)品溝通?
在技術(shù)圈里這是老生常談的話題,我認(rèn)為與產(chǎn)品溝通的過程中是更能體現(xiàn)出一個(gè)程序員情商的時(shí)候.無論對(duì)方提出的需求是怎樣的,你考慮問題的邏輯應(yīng)該是:當(dāng)前提的這一條需求做完以后對(duì)產(chǎn)品有什么收益?對(duì)技術(shù)這邊又有什么收益?更重要的是leader們是否會(huì)在乎這一點(diǎn)?
然而這一切都應(yīng)該發(fā)生在你的內(nèi)心中,權(quán)衡利弊之后如果有什么沒考慮到的你可以提出來,如果并不是十分確認(rèn)自己的想法,你可以等會(huì)后私下里和你的leader提出自己的看法,這既是對(duì)leader的尊重也是節(jié)省開會(huì)時(shí)間.
人是復(fù)雜的動(dòng)物,一個(gè)PM提出了一個(gè)看似無理的需求,你卻不應(yīng)該不問青紅皂白直接拒之門外,設(shè)身處地將心比心的想一想,公司里這樣復(fù)雜的環(huán)境下,他/她是否也有自己的無奈和苦衷?如果有,這個(gè)問題是否存在其他折中的解決方案?
武斷砍需求的程序員往往錯(cuò)過了這樣的商討”折中方案”的機(jī)會(huì),同時(shí)也錯(cuò)過了一個(gè)讓PM認(rèn)可你的機(jī)會(huì)!這一點(diǎn)其實(shí)很重要.
換個(gè)角度考慮,我倒覺得在其他職位的人眼中,你的技術(shù)多么多么的NB他們是無法直觀洞悉的,每一個(gè)無理取鬧的需求也都是一個(gè)你證明自己的機(jī)會(huì).
情商不是叫你如何精明的算計(jì)對(duì)方,那叫”別有用心的智商”,情商是包容與理解.有了人情作為基礎(chǔ),我覺得沒有哪個(gè)PM會(huì)和你在一兩天的deadline問題上面扯皮.
即使利益之間的沖突真的無法解決,也沒有任何折中方案,你至少可以把問題記錄下來,拿到leader們那里交給他們?nèi)プ鰶Q定,而沒必要當(dāng)面撕破臉傷及雙方的感情,畢竟產(chǎn)品是公司的,人際關(guān)系是自己的.
如何看待加班?
加班就像借錢,原則上必然是救急不救窮.然而并不是說對(duì)于一個(gè)”窮”的部門程序員就一定要選擇離開,這既不是負(fù)責(zé)任的表現(xiàn),又錯(cuò)過了一個(gè)成為部門核心骨干力量的機(jī)會(huì).很多公司里的leader都是在危難關(guān)頭扛下了部門的人手不足的壓力,leader的職位也就順理成章.除非部門真的氣數(shù)已盡.
最后祝愿各位同學(xué)在未來的程序員招聘中的潮流中能夠成為offer收割機(jī),并且得到自己真正心儀公司的offer!