據說嫁人要嫁程序員,錢多話少死得早。這話多半是程序員本身黑本身的。程序員是有很是特別的幽默感的一羣,善於自嘲,敢於自黑,耐受力超強,不少事無可無不可,不到是不可孰不可忍不會衝冠一怒。不過,就是這麼 nice 的人,也頗有一些受不了的事兒。程序員
需求變化網絡
爲何把「需求變化」排第一呢?函數
由於有人說:殺一個程序員不須要用槍,改三次需求就能夠了。spa
因而可知,需求變化的殺傷力有多強。3d
我見過很多程序員,和產品經理(需求人員)關係緊張,話不投機半句多,或者關公秦瓊比臉紅。在程序員看來,每每需求一句話,程序員幾天的工做都白費了。程序員是最珍視本身勞動的,內心能不窩火嘛。你早說嘛,有變化你早說嘛,爲何非等我幹個差很少了才說呢,你早說我能不讓你改嘛……blog
加班
加班呢,在程序員的字典裏,是個熱詞。徹徹底底的熱詞。遊戲
不少程序員過的是「固定程式」般的生活——上班、加班、回家開夜車而後再起牀上班,周而復始。項目管理
由於你們都知道有加班這麼一回事兒存在,其實,一開始領導要求加班,雖然我是不肯意加班的,也仍是從了。趕進度嘛,一塊兒聯調嘛,市場時間點定了嘛,都情有可原。開發
但是,我真的不肯意加班,對於無情可原的加班,我是深惡痛絕的啊。產品
好比,明明一個項目須要 20 我的月,老闆一句話,四我的幹倆月就要交活,項目經理還竟然答應了,這明擺着一開始就把加班算計在內了,讓高智商的程序員情能夠堪呢。
好比,明明是張三的活兒出了岔子進度沒控制住,卻把我李四拉過來加班搞定,我白天的盡職盡責不就是爲了可以按時完工不加班麼,張三白天吊兒郎當看新聞打遊戲聊QQ卻讓我來收拾這爛攤子,我能平衡嗎我。
好比,需求討論了幾遍了,都肯定了,程序員都沒日沒夜幹了兩個月要發版本了,領導一句話,說哪哪不合適,產品經理一句話,說哪哪不符合用戶習慣,需求一句話,說哪哪還要改一下……你一句話不當緊啊,你還說「這個應該很簡單吧」,你知不道的事兒多啦,咱們的程序就像蛛網,彼此糾纏,關係那是剪不斷理還亂,牽一髮動全身,你這一改動,提及來簡單,實現起來可能要從網頁一直改到數據還有手機客戶端,那是全線崩潰啊,結果呢,不加班能行嗎,我能加的開心嗎
好比,老闆說,咱們產品作很差,就是由於這幫開發老不加班,時間投入不夠,因而,咱們要加班呢……
好比,線上系統週六出個 BUG ,找張三張三不在,就拉李四來加班,現趴代碼現找問題……
很簡單
最怕外行領導內行。由於他們不能理解技術細節,老是從外面去看程序和軟件,常常會對程序員說,「這個應該很簡單吧」。
要知道,「這很簡單啊」,這話是多麼惹人惱怒。好比你讓張三實現一個登陸功能,你認爲就是在界面上放兩個輸入框,一個用戶名,一個密碼,再加上一個肯定按鈕,能有多複雜。其實呢,你看到的只是冰山一角。從程序員的角度來看,用戶名是否合法、密碼多少位合理,與後臺經過什麼協議交互,後臺如何保存這些信息,要不要支持多點登陸,用戶權限是否不少是否要根據用戶角色來分配,支不支持找回密碼,登陸過程當中網絡異常了怎麼辦,來電話了又怎麼處理……你看,程序員要作的工做,是否是比你想象的要多,是否是一堆一堆的細節須要考慮,這仍是說得出來的,說不出來的,還有一大波與登陸相關的 BUG 正在趕來……
因此,「很簡單」這種話,不該該從需求、項目經理、老闆等等嘴裏蹦出來,大家不是程序員,不瞭解程序員的痛有多深。就算你曾經是程序員,但是你也不寫程序不少年,早不能原音重現了。
做爲一個程序員,我特別討厭「這個很簡單吧」這種話,但是又常常遇到,甚至我本身有時也會說,但這話真的讓人很蛋疼,除了顯示說話者的無知、自覺得是、炫耀以外,再沒別的什麼好內涵了。
角色錯位
項目經理幹程序員的活兒,老闆幹項目經理的活兒,程序員操心老闆的活兒……
有一部分小公司,角色就這麼亂。
出現這種現象,通常的過程是這樣的:
項目經理是程序員出身(碼而優則仕),技術很牛X,雖然當了項目經理,可還沒從「我本身能夠搞定一切」的自慰自大中跳脫出來,一旦項目進度趕不上預期或者某個程序員的進度出現問題,項目經理就會把別人背上的猴子搶過來,從新下沉到寫代碼或解問題的細節中,一旦項目經理這樣作了,更壞的事情就連續不斷的發生了。由於項目經理被具體的問題絆住,無暇顧及團隊管理和項目管理,項目的執行狀況就會愈來愈離譜,進展堪憂,可項目經理可能還存在幻想,以爲等我搞定這幾個問題再回頭來收拾局面也來得及。這真是童話啊。
老闆是不信童話的,他會看到項目經理的問題,內心也火燒火燎的,因而就伸出手來,幫着項目經理管項目,你這我的閒了,你那我的沒事兒幹了,你應該先作這個功能,大家老不開會怎麼能瞭解團隊情況,各類各樣的擔心和實際看到的問題,會亂了老闆的心,讓他身不禁己的插手項目執行層面上的事兒。好了,如今老闆下水了。
程序員是清醒的,或者自認爲清醒的,他們能看到老闆的越級管理,直覺上就認爲這不是老闆該操心的事兒,他們會以爲,老闆應該放手,應該去考慮更高 Level 的事情,你伸手來管項目這算哪門子道理麼,你要項目經理幹嗎呢。那老闆到底應該幹什麼呢,這個問題會攫住一部分程序員的心……還有一部分程序員反感項目經理的作法,認爲項目經理不信任本身,也懷疑是否是項目經理內心看不起本身才插手本身的代碼,那項目經理你幹嗎呢,你該幹嗎幹嗎去啊,咦,你到底該幹什麼呢,好吧,這些程序員操心起項目經理的份內事兒了……
你看,就這麼錯位了。
一旦錯位局面造成,要扭轉就須要九牛二虎之力。
首先要改變的是技術出身的項目經理,他認爲技術是立身之本,捨不得丟棄,擔憂本身沒了技術之後很差發展,他一時半會看不到投身項目管理所能產生的效果,這須要有人告訴他,幫助他,陪着他走過這段弔詭的歲月。另外老闆也須要捆住本身的手,給團隊時間,讓團隊本身去解決問題,若是你以爲項目經理還沒合格,那你能夠給他找個教練,但不要本身下場比賽。
親,能不打斷我嗎
當程序員陷入潭水深深深幾許的思考中時,一個電話,一個提問,一聲「進展如何」,甚至一句「吃飯去吧」,都會像一記大招同樣將程序員豐富的心裏世界轟得粉碎。相信你們都體會過本身睡得正香被人喊起或吵醒的憤怒,沒錯,就是這樣,高速行駛的途中就怕這些情況,哪怕是一隻小鳥迎着你窗玻璃撞過來,也可能致使交通事故。
改別人的Bug
女兒小的時候,拉臭粑粑後我會給她擦屁股,沒以爲臭也沒以爲有什麼不爽。可若是讓我候在一個大男人身邊,等他拉完屎了替他擦屁股,那我不管如何不能接受!
你的代碼就是你的孩子,不管他醜仍是美,遇到問題,你不會追究石榴樹上爲何結出櫻桃,你責無旁貸得去 Debug 它,並且由於是你親生的,你通常不會嫌棄。
別人的代碼,別人的 Bug ,那就是另一回事兒啦,憑什麼我要給你擦屁股啊,聽見「你幫張三改個Bug」這類的話均可能有生理反應,真沒辦法,頂不住領導施加的壓力,短衣襟小打扮擼擼袖子,不情不肯地進了張三的屬地,也極可能收不到好效果。原來,這裏只有一條通往蜘蛛巢的小徑,張三已忘了,李四尋尋覓覓尋不到,結果誤入代碼深處,嘔吐,嘔吐,帶出 Bug 無數。
維護老代碼
老代碼啊老代碼,可能已經被 N 波人維護過了,可能有「拿個錘子看什麼都是釘子」的程序員到此一遊,可能有愛貼膏藥的程序員到此一遊,可能有隨地大小便的程序員到此一遊,可能有瀑布式程序員到此一遊……
在老代碼裏,你可能看到不少硬塞進去的、突兀的、生硬的、硌人的代碼,這是眼裏都是釘子的程序員的傑做:無論某個功能放到某個類、某個模塊裏是否合適,硬釘進去完事兒。
你也可能看到代碼裏處處都是膏藥,好比調用某個函數可能有溢出,愛貼膏藥的哥們就在調用的地方添加各類糾偏和預防措施,無論合不合適,這會兒不出錯就好了。
你也可能看到有些標註爲修復某個Bug的代碼,用的都是臨時解決辦法,而這些臨時的代碼,竟然還隱藏了不少一觸即發的 Bug 。
你還可能看到有人留下的超級大瀑布,一個函數超過 2000 行,飛流直下三千尺,十次翻頁看不完……
老闆一直認爲大家的系統是這樣的:
看起來健壯、層次清晰、結構緊湊、易於擴展,因此,老闆以爲加個功能知足一下客戶的小需求很簡單。
老闆不知道,你面臨的情況是這樣的:
因此,你只能這樣:
或者,這樣: