聽說嫁人要嫁程序員滔悉,錢多話少死得早。這話多半是程序員自己黑自己的单绑。程序員是有非常特別的幽默感的一群氧敢,善于自嘲,勇于自黑询张,耐受力超強(qiáng)孙乖,很多事無可無不可,不到是不可孰不可忍不會沖冠一怒份氧。不過唯袄,就是這么 nice 的人,也很有一些受不了的事兒蜗帜。
需求變化
為什么把“需求變化”排第一呢恋拷?
因為有人說:殺一個程序員不需要用槍,改三次需求就可以了厅缺。
由此可見蔬顾,需求變化的殺傷力有多強(qiáng)。
我見過不少程序員湘捎,和產(chǎn)品經(jīng)理(需求人員)關(guān)系緊張诀豁,話不投機(jī)半句多,或者關(guān)公秦瓊比臉紅窥妇。在程序員看來舷胜,往往需求一句話,程序員幾天的工作都白費(fèi)了活翩。程序員是最珍視自己勞動的烹骨,心里能不窩火嘛翻伺。你早說嘛,有變化你早說嘛沮焕,為什么非等我干個差不多了才說呢吨岭,你早說我能不讓你改嘛……
加班
加班呢,在程序員的字典里峦树,是個熱詞未妹。不折不扣的熱詞。
很多程序員過的是“固定程式”般的生活——上班空入、加班络它、回家開夜車然后再起床上班,周而復(fù)始歪赢。
因為大家都知道有加班這么一回事兒存在化戳,其實,一開始領(lǐng)導(dǎo)要求加班埋凯,雖然我是不愿意加班的点楼,也還是從了。趕進(jìn)度嘛白对,一起聯(lián)調(diào)嘛掠廓,市場時間點(diǎn)定了嘛,都情有可原甩恼。
可是蟀瞧,我真的不愿意加班,對于無情可原的加班条摸,我是深惡痛絕的啊悦污。
比如,明明一個項目需要 20 個人月钉蒲,老板一句話切端,四個人干倆月就要交活,項目經(jīng)理還居然答應(yīng)了顷啼,這明擺著一開始就把加班算計在內(nèi)了踏枣,讓高智商的程序員情可以堪呢。
比如钙蒙,明明是張三的活兒出了岔子進(jìn)度沒控制住茵瀑,卻把我李四拉過來加班搞定,我白天的盡職盡責(zé)不就是為了能夠按時完工不加班么仪搔,張三白天吊兒郎當(dāng)看新聞打游戲聊QQ卻讓我來收拾這爛攤子瘾婿,我能平衡嗎我蜻牢。
比如烤咧,需求討論了幾遍了偏陪,都確定了,程序員都沒日沒夜干了兩個月要發(fā)版本了煮嫌,領(lǐng)導(dǎo)一句話笛谦,說哪哪不合適,產(chǎn)品經(jīng)理一句話昌阿,說哪哪不符合用戶習(xí)慣饥脑,需求一句話,說哪哪還要改一下……你一句話不當(dāng)緊啊懦冰,你還說“這個應(yīng)該很簡單吧”灶轰,你知不道的事兒多啦,我們的程序就像蛛網(wǎng)刷钢,彼此糾纏笋颤,關(guān)系那是剪不斷理還亂,牽一發(fā)動全身内地,你這一改動伴澄,說起來簡單,實現(xiàn)起來可能要從網(wǎng)頁一直改到數(shù)據(jù)還有手機(jī)客戶端阱缓,那是全線崩潰啊非凌,結(jié)果呢,不加班能行嗎荆针,我能加的開心嗎
比如敞嗡,老板說,我們產(chǎn)品做不好航背,就是因為這幫開發(fā)老不加班秸妥,時間投入不夠,于是沃粗,我們要加班呢……
比如粥惧,線上系統(tǒng)周六出個 BUG ,找張三張三不在最盅,就拉李四來加班突雪,現(xiàn)趴代碼現(xiàn)找問題……
很簡單
最怕外行領(lǐng)導(dǎo)內(nèi)行。因為他們不能理解技術(shù)細(xì)節(jié)涡贱,總是從外面去看程序和軟件咏删,經(jīng)常會對程序員說,“這個應(yīng)該很簡單吧”问词。
要知道督函,“這很簡單啊”,這話是多么惹人惱怒。比如你讓張三實現(xiàn)一個登錄功能辰狡,你認(rèn)為就是在界面上放兩個輸入框锋叨,一個用戶名,一個密碼宛篇,再加上一個確定按鈕娃磺,能有多復(fù)雜。其實呢叫倍,你看到的只是冰山一角偷卧。從程序員的角度來看,用戶名是否合法吆倦、密碼多少位合理听诸,與后臺通過什么協(xié)議交互,后臺如何保存這些信息蚕泽,要不要支持多點(diǎn)登錄蛇更,用戶權(quán)限是否很多是否要根據(jù)用戶角色來分配,支不支持找回密碼赛糟,登錄過程中網(wǎng)絡(luò)異常了怎么辦派任,來電話了又怎么處理……你看,程序員要做的工作璧南,是不是比你想象的要多掌逛,是不是一堆一堆的細(xì)節(jié)需要考慮,這還是說得出來的司倚,說不出來的豆混,還有一大波與登錄相關(guān)的 BUG 正在趕來……
所以,“很簡單”這種話动知,不應(yīng)該從需求皿伺、項目經(jīng)理、老板等等嘴里蹦出來盒粮,你們不是程序員鸵鸥,不了解程序員的痛有多深。就算你曾經(jīng)是程序員丹皱,可是你也不寫程序很多年妒穴,早不能原音重現(xiàn)了。
作為一個程序員摊崭,我特別討厭“這個很簡單吧”這種話讼油,可是又經(jīng)常遇到,甚至我自己有時也會說呢簸,但這話真的讓人很蛋疼矮台,除了顯示說話者的無知乏屯、自以為是、炫耀之外瘦赫,再沒別的什么好內(nèi)涵了辰晕。
角色錯位
項目經(jīng)理干程序員的活兒,老板干項目經(jīng)理的活兒耸彪,程序員操心老板的活兒……
有一部分小公司伞芹,角色就這么亂忘苛。
出現(xiàn)這種現(xiàn)象蝉娜,一般的過程是這樣的:
項目經(jīng)理是程序員出身(碼而優(yōu)則仕),技術(shù)很牛X扎唾,雖然當(dāng)了項目經(jīng)理召川,可還沒從“我自己可以搞定一切”的自慰自大中跳脫出來,一旦項目進(jìn)度趕不上預(yù)期或者某個程序員的進(jìn)度出現(xiàn)問題胸遇,項目經(jīng)理就會把別人背上的猴子搶過來荧呐,重新下沉到寫代碼或解問題的細(xì)節(jié)中,一旦項目經(jīng)理這樣做了纸镊,更壞的事情就接二連三的發(fā)生了倍阐。因為項目經(jīng)理被具體的問題絆住,無暇顧及團(tuán)隊管理和項目管理逗威,項目的執(zhí)行情況就會越來越離譜峰搪,進(jìn)展堪憂,可項目經(jīng)理可能還存在幻想凯旭,覺得等我搞定這幾個問題再回頭來收拾局面也來得及概耻。這真是童話啊。
老板是不信童話的罐呼,他會看到項目經(jīng)理的問題鞠柄,心里也火燒火燎的,于是就伸出手來嫉柴,幫著項目經(jīng)理管項目厌杜,你這個人閑了,你那個人沒事兒干了计螺,你應(yīng)該先做這個功能期奔,你們老不開會怎么能了解團(tuán)隊狀況,各種各樣的擔(dān)憂和實際看到的問題危尿,會亂了老板的心呐萌,讓他身不由己的插手項目執(zhí)行層面上的事兒。好了谊娇,現(xiàn)在老板下水了肺孤。
程序員是清醒的罗晕,或者自認(rèn)為清醒的,他們能看到老板的越級管理赠堵,直覺上就認(rèn)為這不是老板該操心的事兒小渊,他們會覺得,老板應(yīng)該放手茫叭,應(yīng)該去考慮更高 Level 的事情酬屉,你伸手來管項目這算哪門子道理么,你要項目經(jīng)理干嘛呢揍愁。那老板到底應(yīng)該干什么呢呐萨,這個問題會攫住一部分程序員的心……還有一部分程序員反感項目經(jīng)理的做法,認(rèn)為項目經(jīng)理不信任自己莽囤,也懷疑是不是項目經(jīng)理心里看不起自己才插手自己的代碼谬擦,那項目經(jīng)理你干嘛呢,你該干嘛干嘛去啊朽缎,咦惨远,你到底該干什么呢,好吧话肖,這些程序員操心起項目經(jīng)理的分內(nèi)事兒了……
你看北秽,就這么錯位了。
一旦錯位局面形成最筒,要扭轉(zhuǎn)就需要九牛二虎之力贺氓。
首先要改變的是技術(shù)出身的項目經(jīng)理,他認(rèn)為技術(shù)是立身之本是钥,舍不得丟棄掠归,擔(dān)心自己沒了技術(shù)以后不好發(fā)展,他一時半會看不到投身項目管理所能產(chǎn)生的效果悄泥,這需要有人告訴他虏冻,幫助他,陪著他走過這段吊詭的歲月弹囚。另外老板也需要捆住自己的手厨相,給團(tuán)隊時間,讓團(tuán)隊自己去解決問題鸥鹉,如果你覺得項目經(jīng)理還沒合格蛮穿,那你可以給他找個教練,但不要自己下場比賽毁渗。
親践磅,能不打斷我嗎
當(dāng)程序員陷入潭水深深深幾許的思考中時,一個電話灸异,一個提問府适,一聲“進(jìn)展如何”羔飞,甚至一句“吃飯去吧”,都會像一記大招一樣將程序員豐富的內(nèi)心世界轟得粉碎檐春。相信大家都體會過自己睡得正香被人喊起或吵醒的憤怒逻淌,沒錯,就是這樣疟暖,高速行駛的途中就怕這些狀況卡儒,哪怕是一只小鳥迎著你窗玻璃撞過來,也可能導(dǎo)致交通事故俐巴。
改別人的Bug
女兒小的時候骨望,拉臭粑粑后我會給她擦屁股,沒覺得臭也沒覺得有什么不爽窜骄〗跄迹可如果讓我候在一個大男人身邊摆屯,等他拉完屎了替他擦屁股邻遏,那我無論如何不能接受!
你的代碼就是你的孩子虐骑,無論他丑還是美准验,遇到問題,你不會追究石榴樹上為什么結(jié)出櫻桃廷没,你義不容辭得去 Debug 它糊饱,而且因為是你親生的,你一般不會嫌棄颠黎。
別人的代碼另锋,別人的 Bug ,那就是另外一回事兒啦狭归,憑什么我要給你擦屁股啊夭坪,聽見“你幫張三改個Bug”這類的話都可能有生理反應(yīng),真沒辦法过椎,頂不住領(lǐng)導(dǎo)施加的壓力室梅,短衣襟小打扮擼擼袖子,不情不愿地進(jìn)了張三的屬地疚宇,也很可能收不到好效果亡鼠。原來,這里只有一條通往蜘蛛巢的小徑敷待,張三已忘了间涵,李四尋尋覓覓尋不到,結(jié)果誤入代碼深處榜揖,嘔吐勾哩,嘔吐股耽,帶出 Bug 無數(shù)。
維護(hù)老代碼
老代碼啊老代碼钳幅,可能已經(jīng)被 N 波人維護(hù)過了物蝙,可能有“拿個錘子看什么都是釘子”的程序員到此一游,可能有愛貼膏藥的程序員到此一游敢艰,可能有隨地大小便的程序員到此一游诬乞,可能有瀑布式程序員到此一游……
在老代碼里,你可能看到很多硬塞進(jìn)去的钠导、突兀的震嫉、生硬的、硌人的代碼牡属,這是眼里都是釘子的程序員的杰作:不管某個功能放到某個類票堵、某個模塊里是否合適,硬釘進(jìn)去完事兒逮栅。
你也可能看到代碼里到處都是膏藥悴势,比如調(diào)用某個函數(shù)可能有溢出,愛貼膏藥的哥們就在調(diào)用的地方添加各種糾偏和預(yù)防措施措伐,不管合不合適特纤,這會兒不出錯就行了。
你也可能看到有些標(biāo)注為修復(fù)某個Bug的代碼侥加,用的都是臨時解決辦法捧存,而這些臨時的代碼,居然還隱藏了很多一觸即發(fā)的 Bug 担败。
你還可能看到有人留下的超級大瀑布昔穴,一個函數(shù)超過 2000 行,飛流直下三千尺提前,十次翻頁看不完……
老板一直認(rèn)為你們的系統(tǒng)是這樣的:
看起來健壯吗货、層次清晰、結(jié)構(gòu)緊湊岖研、易于擴(kuò)展卿操,所以,老板覺得加個功能滿足一下客戶的小需求很簡單孙援。
老板不知道害淤,你面臨的狀況是這樣的:
所以,你只能這樣:
或者拓售,這樣:
還有很多很多的事情窥摄,未完,也不待續(xù)础淤。