ps: 前面兩篇都在吹牛,這一篇開始寫點有意義的東西。回想自己的工作經曆,總結了一下以前犯的一些錯誤,用案例的形式展現出來,希望對後來者有所協助。
一:使用者體驗
那時候,我還是個處男,在通用汽車實習。混了一段時間以後,總監要我單獨完成一個項目(J2EE),給我做需求的是業務經理(技術牛人,是技術轉業務的那種,而且是我的學長)。我充分展現了自己的實力,用最快的速度,完成了所有的功能。但是業務經理驗收的時候,整整教育了我一個下午,而且不是從技術方面教育我,完全是站在使用者角度指出項目的不足(也就是所謂的使用者體驗)。大家也知道,網頁程式裡面,都會有大量網頁元素,比如這個:
我做的時候,只求速度和功能的完整性,對一些細節非常不注重。本來輸入框和“百度搜尋”按鈕必須水平對齊,我居然沒有搞定。當然,我也不是鳳姐那種二貨,我也知道對齊,只是對齊的不是很完整。業務經理給我舉了一個例子:“你買一雙鞋,品質非常好,外觀整體也還不錯,但是有部分地方的縫紉線對的不齊,彎來彎去的,你會覺得這雙鞋是精品嗎?”我一下子感覺到了問題的嚴重性,不是技術方面的問題,而是心態的問題,技術隨時都可以學習,但是心態很難改變。我們做程式,不應該像攪屎棍一樣,總是攪在技術裡面,而更應該重視使用者體驗,畢竟,做程式的最終目的,就是使用者。使用者永遠不會關心你是用什麼技術實現的,也不管你用了什麼高深的演算法,他們只是需要你的最終成果。所以,重視使用者體驗,是一個程式員的基本準則。(多少兩句,你現在寫的程式,後面來的程式員就是使用者,所以,你應該多寫點注釋,如果你不寫注釋,那麼變數名,方法名一定要取的淺顯易懂,如果你不寫,畫個圈圈詛咒你,以後接手的項目都是經過10幾批人修改的遺留項目,你應該知道的,這種項目是程式員殺手,做多了這種項目,會影響那種能力的)
二:在合適的時候,做合適的事情
整體來說,我還是一個非常熱愛學習的人,主要是覺得自己矮窮齪,如果再不努力一點,怎麼和人家高富帥搶女人?但是發現,做軟體這一行,由於技術方面的東西太多,盲目的學習,只可能導致效率底下。舉兩個例子:第一,想當初,php很火,那就搞php哇,下載了視頻,買了書,倒也爽快,把知識點全部掌握以後,由於沒有實際的項目練手,就做幾個隨心所欲的demo,一年之後,再看php的代碼,感覺就像見到前女友——陌生了。第二,工作以後,從事的是J2ME開發,覺得Android火爆,就想轉Android,老大給我說,做好手上的事情,積累,等機會來的時候,你再爆發。於是我就那樣做了。後來有了Android的項目,我才開始學習Android,由於J2ME基礎很好,所以轉Android非常輕鬆,而且剛學習Android基礎以後,馬上就可以動手開發實際項目,效率很高。ps:我老大更厲害,以前做塞班開發的,後來開始搞J2ME,黑莓等一系列平台,但是iphone不怎麼會,自己有點名氣,出版社找他寫本iphone的書,他還真敢接,接下來以後,隨便買了幾本國外的iphone資料,把那些知識點整合一下,再把以前他做過的塞班平台的項目簡單移植一下,作為書本後面的項目。就這樣,一本暢銷書就誕生了(其實現在國內大部分的技術書,就是這樣誕生的)。從我老大的例子可以看出,他是多方面收穫的:首先掌握了iphone平台的開發,其次,寫書了,賺錢了,最後,出書了,名氣也就更大了。大部分人根本不知道,一本技術書的編寫一般也就4個多月(當然,有些書要花很長時間),而四個多月以前,我的老大還是iphone小白(但是人家是移動開發專家,平台的轉換速度不是一般人比得了的,這也就是他說的,把一個平台搞清楚以後,其他平台就是換了一個API)。
三:把項目當做自己的項目
上班一段時間以後,項目已經非常熟悉(這裡熟悉的定義就是隨便給你一個功能,你都可以輕鬆的完成),就覺得成長空間不大,想跳槽,總覺得一直待在一個項目組沒意思,沒挑戰性。後來,有人給我說,把項目當做自己的項目,而不是公司的項目,就當做是自己做產品,那麼,就會上心了。於是,我嘗試著用這種態度去對待問題。顯然的效果,基本屬於立竿見影,我不再討厭測試,反而很感激他們,因為他們找出了軟體的bug,讓我可以把它變的更好。我也不再討厭需求,因為他們提出的合理需求可以讓軟體更有競爭力(當然,不排除一些sb需求,而且真的很sb)。甚至在沒有bug和需求的日子裡,我就開始最佳化代碼,最佳化圖片的載入,最佳化連網(當然,這裡的最佳化一定要小心,必須是自己完全吃透項目的情況下,而且一定要反覆測試,我就吃過虧,自己改了代碼,覺得是最佳化了,但是其實引入了bug,測試人員不知道我最佳化了,也沒有針對性的測試,過了幾個版本,才發現這個問題,後面改起來就非常麻煩)。這樣,我又在工作中找到了成長點。當然,有些人說,可以把敲代碼當做愛好。我真的實在是想不通,為什麼會有人把敲代碼當做愛好。以前讀書的時候,成績一直不錯,父母就覺得我喜歡學習。其實我最討厭學習了,我也根本想不明白,一個人為什麼會喜歡去做那些複雜的圓錐曲線問題?難道僅僅因為你可以做出來,而其他同學不可以?你有了優越感?當然,我也就不可能把敲代碼當做愛好,試問,在網上把妹和在eclipse裡面敲代碼,你更願意做哪一樣?
後記:這篇文章寫了一周多,每次想寫的時候,都很忙。本來還有很多想寫的,但是實在是抽不出時間(晚上回來也要寫代碼的,賺點外快)……