1. 程式人生 > >讓程序員蛋疼的那些事兒

讓程序員蛋疼的那些事兒

兩個 生活 幽默 項目執行 導致 小鳥 瀑布式 輸入框 尋尋覓覓

 

聽說嫁人要嫁程序員,錢多話少死得早。這話多半是程序員自己黑自己的。程序員是有非常特別的幽默感的一群,善於自嘲,勇於自黑,耐受力超強,很多事無可無不可,不到是不可孰不可忍不會沖冠一怒。不過,就是這麽 nice 的人,也很有一些受不了的事兒。

需求變化

技術分享圖片
為什麽把“需求變化”排第一呢?

因為有人說:殺一個程序員不需要用槍,改三次需求就可以了。

由此可見,需求變化的殺傷力有多強。

我見過不少程序員,和產品經理(需求人員)關系緊張,話不投機半句多,或者關公秦瓊比臉紅。在程序員看來,往往需求一句話,程序員幾天的工作都白費了。程序員是最珍視自己勞動的,心裏能不窩火嘛。你早說嘛,有變化你早說嘛,為什麽非等我幹個差不多了才說呢,你早說我能不讓你改嘛……

加班
加班呢,在程序員的字典裏,是個熱詞。不折不扣的熱詞。

很多程序員過的是“固定程式”般的生活——上班、加班、回家開夜車然後再起床上班,周而復始。

因為大家都知道有加班這麽一回事兒存在,其實,一開始領導要求加班,雖然我是不願意加班的,也還是從了。趕進度嘛,一起聯調嘛,市場時間點定了嘛,都情有可原。

可是,我真的不願意加班,對於無情可原的加班,我是深惡痛絕的啊。

比如,明明一個項目需要 20 個人月,老板一句話,四個人幹倆月就要交活,項目經理還居然答應了,這明擺著一開始就把加班算計在內了,讓高智商的程序員情可以堪呢。

比如,明明是張三的活兒出了岔子進度沒控制住,卻把我李四拉過來加班搞定,我白天的盡職盡責不就是為了能夠按時完工不加班麽,張三白天吊兒郎當看新聞打遊戲聊QQ卻讓我來收拾這爛攤子,我能平衡嗎我。

比如,需求討論了幾遍了,都確定了,程序員都沒日沒夜幹了兩個月要發版本了,領導一句話,說哪哪不合適,產品經理一句話,說哪哪不符合用戶習慣,需求一句話,說哪哪還要改一下……你一句話不當緊啊,你還說“這個應該很簡單吧”,你知不道的事兒多啦,我們的程序就像蛛網,彼此糾纏,關系那是剪不斷理還亂,牽一發動全身,你這一改動,說起來簡單,實現起來可能要從網頁一直改到數據還有手機客戶端,那是全線崩潰啊,結果呢,不加班能行嗎,我能加的開心嗎

比如,老板說,我們產品做不好,就是因為這幫開發老不加班,時間投入不夠,於是,我們要加班呢……

比如,線上系統周六出個 BUG ,找張三張三不在,就拉李四來加班,現趴代碼現找問題……

很簡單
最怕外行領導內行。因為他們不能理解技術細節,總是從外面去看程序和軟件,經常會對程序員說,“這個應該很簡單吧”。

要知道,“這很簡單啊”,這話是多麽惹人惱怒。比如你讓張三實現一個登錄功能,你認為就是在界面上放兩個輸入框,一個用戶名,一個密碼,再加上一個確定按鈕,能有多復雜。其實呢,你看到的只是冰山一角。從程序員的角度來看,用戶名是否合法、密碼多少位合理,與後臺通過什麽協議交互,後臺如何保存這些信息,要不要支持多點登錄,用戶權限是否很多是否要根據用戶角色來分配,支不支持找回密碼,登錄過程中網絡異常了怎麽辦,來電話了又怎麽處理……你看,程序員要做的工作,是不是比你想象的要多,是不是一堆一堆的細節需要考慮,這還是說得出來的,說不出來的,還有一大波與登錄相關的 BUG 正在趕來……

所以,“很簡單”這種話,不應該從需求、項目經理、老板等等嘴裏蹦出來,你們不是程序員,不了解程序員的痛有多深。就算你曾經是程序員,可是你也不寫程序很多年,早不能原音重現了。

作為一個程序員,我特別討厭“這個很簡單吧”這種話,可是又經常遇到,甚至我自己有時也會說,但這話真的讓人很蛋疼,除了顯示說話者的無知、自以為是、炫耀之外,再沒別的什麽好內涵了。

角色錯位
項目經理幹程序員的活兒,老板幹項目經理的活兒,程序員操心老板的活兒……

有一部分小公司,角色就這麽亂。

出現這種現象,一般的過程是這樣的:

項目經理是程序員出身(碼而優則仕),技術很牛X,雖然當了項目經理,可還沒從“我自己可以搞定一切”的自慰自大中跳脫出來,一旦項目進度趕不上預期或者某個程序員的進度出現問題,項目經理就會把別人背上的猴子搶過來,重新下沈到寫代碼或解問題的細節中,一旦項目經理這樣做了,更壞的事情就接二連三的發生了。因為項目經理被具體的問題絆住,無暇顧及團隊管理和項目管理,項目的執行情況就會越來越離譜,進展堪憂,可項目經理可能還存在幻想,覺得等我搞定這幾個問題再回頭來收拾局面也來得及。這真是童話啊。

老板是不信童話的,他會看到項目經理的問題,心裏也火燒火燎的,於是就伸出手來,幫著項目經理管項目,你這個人閑了,你那個人沒事兒幹了,你應該先做這個功能,你們老不開會怎麽能了解團隊狀況,各種各樣的擔憂和實際看到的問題,會亂了老板的心,讓他身不由己的插手項目執行層面上的事兒。好了,現在老板下水了。

程序員是清醒的,或者自認為清醒的,他們能看到老板的越級管理,直覺上就認為這不是老板該操心的事兒,他們會覺得,老板應該放手,應該去考慮更高 Level 的事情,你伸手來管項目這算哪門子道理麽,你要項目經理幹嘛呢。那老板到底應該幹什麽呢,這個問題會攫住一部分程序員的心……還有一部分程序員反感項目經理的做法,認為項目經理不信任自己,也懷疑是不是項目經理心裏看不起自己才插手自己的代碼,那項目經理你幹嘛呢,你該幹嘛幹嘛去啊,咦,你到底該幹什麽呢,好吧,這些程序員操心起項目經理的分內事兒了……

你看,就這麽錯位了。

一旦錯位局面形成,要扭轉就需要九牛二虎之力。

首先要改變的是技術出身的項目經理,他認為技術是立身之本,舍不得丟棄,擔心自己沒了技術以後不好發展,他一時半會看不到投身項目管理所能產生的效果,這需要有人告訴他,幫助他,陪著他走過這段吊詭的歲月。另外老板也需要捆住自己的手,給團隊時間,讓團隊自己去解決問題,如果你覺得項目經理還沒合格,那你可以給他找個教練,但不要自己下場比賽。

親,能不打斷我嗎
當程序員陷入潭水深深深幾許的思考中時,一個電話,一個提問,一聲“進展如何”,甚至一句“吃飯去吧”,都會像一記大招一樣將程序員豐富的內心世界轟得粉碎。相信大家都體會過自己睡得正香被人喊起或吵醒的憤怒,沒錯,就是這樣,高速行駛的途中就怕這些狀況,哪怕是一只小鳥迎著你窗玻璃撞過來,也可能導致交通事故。

改別人的Bug
女兒小的時候,拉臭粑粑後我會給她擦屁股,沒覺得臭也沒覺得有什麽不爽。可如果讓我候在一個大男人身邊,等他拉完屎了替他擦屁股,那我無論如何不能接受!
你的代碼就是你的孩子,無論他醜還是美,遇到問題,你不會追究石榴樹上為什麽結出櫻桃,你義不容辭得去 Debug 它,而且因為是你親生的,你一般不會嫌棄。

別人的代碼,別人的 Bug ,那就是另外一回事兒啦,憑什麽我要給你擦屁股啊,聽見“你幫張三改個Bug”這類的話都可能有生理反應,真沒辦法,頂不住領導施加的壓力,短衣襟小打扮擼擼袖子,不情不願地進了張三的屬地,也很可能收不到好效果。原來,這裏只有一條通往蜘蛛巢的小徑,張三已忘了,李四尋尋覓覓尋不到,結果誤入代碼深處,嘔吐,嘔吐,帶出 Bug 無數。

維護老代碼
老代碼啊老代碼,可能已經被 N 波人維護過了,可能有“拿個錘子看什麽都是釘子”的程序員到此一遊,可能有愛貼膏藥的程序員到此一遊,可能有隨地大小便的程序員到此一遊,可能有瀑布式程序員到此一遊……

在老代碼裏,你可能看到很多硬塞進去的、突兀的、生硬的、硌人的代碼,這是眼裏都是釘子的程序員的傑作:不管某個功能放到某個類、某個模塊裏是否合適,硬釘進去完事兒。

你也可能看到代碼裏到處都是膏藥,比如調用某個函數可能有溢出,愛貼膏藥的哥們就在調用的地方添加各種糾偏和預防措施,不管合不合適,這會兒不出錯就行了。

你也可能看到有些標註為修復某個Bug的代碼,用的都是臨時解決辦法,而這些臨時的代碼,居然還隱藏了很多一觸即發的 Bug 。

你還可能看到有人留下的超級大瀑布,一個函數超過 2000 行,飛流直下三千尺,十次翻頁看不完……

老板一直認為你們的系統是這樣的:

技術分享圖片

看起來健壯、層次清晰、結構緊湊、易於擴展,所以,老板覺得加個功能滿足一下客戶的小需求很簡單。

老板不知道,你面臨的狀況是這樣的:

技術分享圖片

所以,你只能這樣:

技術分享圖片

或者,這樣:

技術分享圖片



讓程序員蛋疼的那些事兒