今天,我們來探討一下,程序員到底苦在哪里。算法很難,編程不易,但這些并不是程序員苦的全部原因。身為程序員的你,一定也聽到過下面這樣的段子: 段子 產(chǎn)品經(jīng)理有三句奇葩口頭禪 這個功能必須加 那個需求不能砍 明天上線 老板有三句奇葩口頭禪 這個其實很簡單 具體細節(jié)我不管 你們抓緊 客戶有三句奇葩口頭禪 我不要這個我要那個 我不要那個我要這個 都不是我想要的 客戶不到關(guān)鍵的時候見不著 老板是神龍見首不見尾 產(chǎn)品經(jīng)理要么下班就走 要么留下看著別人加班 剩下一班程序員夜以繼日敲代碼 噠噠噠噠噠…… 1 程序員和客戶 當客戶說:你們先開發(fā)出來,我再提需求 小魚兒(注:Pilot Fish,本文主角的名字)接到了一個軟件項目,項目的要求是能夠處理公司客服中心收到的各種服務請求,內(nèi)容包括服務調(diào)度,設備跟蹤,工程師的服務請求以及一些設計問題。 “我非常盡心盡責,拿著紙筆一個一個地跟各個部門的頭頭談話,想把他們的需求或者意見記錄下來?!毙◆~兒苦惱的說?!八麄兘o我的答復卻千篇一律:’我不知道,你先大概弄一下,然后我們再看看了?!?/p> 小魚兒并沒有氣餒,他跑到各個部門的潛在用戶那里去征求意見。可這些家伙跟他們的老板們?nèi)绯鲆晦H。他們給小魚兒的答復是:“大致搞一下,然后我們再給建議?!?/p> 小魚兒冥思苦想:“沒有具體的需求的話,如何才能把項目做出來呢?” 突然靈光一現(xiàn),他有主意了。沒過多久,他開始邀請所有的部門頭頭來參加他的項目演示。 他甚至邀請了公司的總裁,而當總裁真的出現(xiàn)在會議室的時候,小魚兒幾乎嚇尿了。但此時已經(jīng)由不得他回頭了。 會議室里坐了滿滿一屋子人,小魚兒打開投影儀,開始演示他的項目。大屏幕上顯示出項目的標題。幾秒鐘后,電腦的CD-ROM自動打開了,幾秒鐘后,它又自動關(guān)閉了。 演示結(jié)束。 “是不是設備出了什么問題?” 某部門頭頭問。 “沒問題啊,”小魚兒說,“你們想再看一次嗎?” 他雙擊了一下項目圖標,項目標題再次顯示在大屏幕上,CD-ROM自動打開然后自動關(guān)閉。 “但它的功能只不過是打開CD-ROM而已,”分管機械工程部的副總說。 “沒錯,然后關(guān)上它,” 小魚兒說,盡可能微笑地面對著滿屋子的憤怒面孔。 “可這并不是我們想要的!” 電子部門的副總說,其他的部門頭頭們也紛紛表達他們的不滿情緒。 小魚兒大聲說道:“你們,沒有一個人告訴我你們想要什么,所以我就照我自己的想法做了一個。你們還想不想再看一遍?” 會議室靜了下來,充滿了憤怒的氣息,這沉寂直到坐在會議室最后面的老總從椅子上摔了下來才被打破。 “我嚇得要死,以為他被我氣得心臟病發(fā)作了,直到最后他哈哈大笑起來。” 小魚兒后來說。 “那天下班前,我從各部門收到了他們對項目的需求。然而,接下來的幾個月里,他們都不理我?!?/p> 2 程序員和項目 3 程序員和用戶 我曾經(jīng)說過,程序員不是一般的人,是具有某種超能力的人。但問題是,程序員往往意識不到自己的這種特異功能。看看下面這些段子: 1.從前有個程序員,買了輛車,車牌尾號 404,后來車找不到了。2.對程序員來說世界上最遙遠的距離不是生與死,而是親手制造的 Bug 就在眼前,卻怎么都找不到它。。。 3.程序員最常見說的一句冷笑話:提交代碼不寫注釋的人,xxx就跟注釋一樣長。 4.一個程序猿在肉店買了 1 公斤肉,回家一稱,他不高興的跑回肉店對老板說:少了 24 克…… 5.服務器按功能可以分為:數(shù)據(jù)庫服務器,web 服務器,cache 服務器,下片兒服務器等等。下片兒...... 6.十行代碼九個警告八個錯誤竟然敢說七日精通六天學會五湖四海也不見如此三心二意之項目經(jīng)理簡直一級下流。 7.網(wǎng)絡聊天的時候,想表達對方是豬,一般人會打“xxx你這個豬?!保绦騿T會打 xxx.isPig = TRUE。 8.這個人肯定是程序員呀,因為他的估算能力暴露身份了 。 9.寫代碼寫到崩潰的時候,程序員經(jīng)常這樣鼓勵自己。 10.女程序員的報喜方式。 但是在他們的眼里,他們會認為自己很普通,跟常人一樣,所以,程序員能做到的事情,其他人——比如他們的客戶/軟件用戶——也應該很容易做到。 但事實上,由于大部分人——絕大部分人(包括軟件開發(fā)公司的客戶/購買軟件的用戶)——都是電腦小白(對電腦知識/計算機知識/軟件知識知之甚少的人)。 一個對于程序員來說很顯而易見的軟件操作,換成讓用戶來操作,就會出現(xiàn)各種各樣奇怪的事情。這讓程序員非常痛苦。 記得有一次,一個客戶打電話給我,說他電腦桌面上的大 e 找不到了,我沒聽懂,什么大 e 找不到了?客戶解釋說:就是那個長的像大個兒的英文字母 e 的圖標找不到了。我倒。終于明白了他指的是桌面上的 IE 瀏覽器的圖標不見了。 還有一次,有個客戶提出一個需求,要求在頁面上增加一個搜索功能,我問它,系統(tǒng)里有搜索功能,為什么還要在這個地方新增一個搜索功能,他說他要的不是那個搜索,他要的是在這個頁面上搜到某個關(guān)鍵詞。 經(jīng)過進一步的溝通,我明白了,他要的是瀏覽器上的快捷鍵 CTRL F 的功能。 因為用戶的這些特征,導致了程序員認為完美的程序,到了客戶的手里,卻變成極其難用的軟件,投訴電話如鄉(xiāng)下罵街的潑婦似的響個不停。 而事后分析發(fā)現(xiàn),根本原因都是因為程序員高估了用戶對軟件的掌控能力,低估了自己對軟件的創(chuàng)造能力,于是導致了他們看這些客戶使用他們開發(fā)的軟件時,都是那樣一種可笑的行為,如下圖: 在程序員的眼里,用戶是這樣使用他們開發(fā)的軟件的 如果是脾氣暴躁的程序員,遇到這種情況,難免會對著客戶發(fā)一頓牢騷,而且,程序員的脾氣一般都不是很好。所以,程序員通常跟客戶溝通時,項目經(jīng)理一般都是跟著一起,以免事態(tài)激化。 用戶雖然給程序員帶來很多麻煩,但其實程序員的所有榮耀感都來自客戶,因為只有客戶用得滿意,程序員才會有成就感。比如像下面這幾個客戶在使用一個新款軟件時顯露出來的表情,足夠讓一個處在北京重度霧霾的下午的程序員也能露出笑容: 用戶在使用一款新軟件時的樣子 程序員雖然脾氣不好,但他們都是為工作著想,不帶任何個人恩怨。當開發(fā)軟件有緊急任務時,他們都是任勞任怨的加班加點,當在已經(jīng)發(fā)布的軟件中出現(xiàn)了重大 bug 時,他們都會深深在自責,會連夜趕制出緊急修復 bug。 如果不能在第一時間讓用戶滿意,他們會茶不思、飯不想、覺不睡。即使在實在沒有短期內(nèi)完整的補救措施的情況下,他們也會想出一些歪招,但也是行之有效的方案,讓用戶暫時度過難關(guān)。比如,下面就是一個緊急修復補?。?/span> 用戶應該體諒程序員。程序員的生活實際處在一種十分矛盾的狀態(tài)中。編程不像其它行業(yè),比如泥瓦匠砌磚,砌一層磚,墻就會高一次。 但編程不一樣,有時候一個程序員寫了一天的代碼,急得滿頭大汗,但開發(fā)進度未必就有所進展,有時候甚至還會倒退。 軟件編程是一個亦虛亦實的世界,有時候你搞不清一段代碼為什么好用,有時候也會詫異由那樣的代碼構(gòu)成的軟件也能跑起來,正如下面這張圖片中所示: 最后,說一下跟程序員打交道的一些注意事項。程序員因為整天和編程邏輯打交道,所以對因果關(guān)系特別敏感。 如果你的話語的因果關(guān)系不是很明確,這會讓他們感到疑惑,如果你的話語的因果關(guān)系不完整,這會讓他們辦錯事。如果你的話中有 if,最好后面用 then 做結(jié)束,或者用 else 給出選擇,主語要明晰。如果不明晰,就會出現(xiàn)下圖中出現(xiàn)的事故: 如果你是一個程序員,你會理解我說的話。可是程序員的“苦”豈止這些: ▼ 當程序員太辛苦了,想換一行怎么辦? 話 題 討 論 作為程序員的你,還有哪些“苦”,歡迎大家一起來吐槽! |
|