來源:RayChase
這篇文字是我好久以來的想法,有一些感悟,有一些激烈的言辭,我很自豪我就是一名程式設計師,我希望給程式設計師或者前程式設計師們帶來一點啟發。也許你認可我的言辭,也許你不屑我的觀點,無論如何,歡迎談談你的看法。
讓程式設計師做更多種類的事
為什麼有人說小公司鍛鍊人?在小公司,條件並不那麼齊備,很多事情都需要程式設計師自己做,自己去澄清需求、自己做設計、自己搭建環境、自己測試,甚至自己上線、自己維護(這件事情在我們團隊被稱為“自己吃自己狗食”)。
然而到了某些公司,在一些正規的流程下,“人”反而顯得不那麼重要了:一個完、整的流程被切分成若干環節,程式設計師只能負責那小小的一環,更嚴重的是,他們顯示出消極和片面的情緒,他們稱自己碼農,自嘲並且覺得在總做一些低階和毫無技術含量的事情。
關於“碼農”——這似乎是一件很悲哀的事情,在美國,程式設計師是一個相當值得尊敬的行業,去年矽谷的技術員工年薪平均已經超過10萬美元;在中國,教師的行業起碼獲得了人們口頭上的尊敬(雖然實質上也許並沒有獲得應有的待遇),而程式設計師,往往只能看到自己給自己吶喊。
這裡沒有絕對的對錯之分,但我一直在部落格中強調軟體開發實質是一種創造性的勞動,只是在一個流程嚴格控制的公司內,這樣的創造的火花可能被扼殺,換來的好處是人員的流動中,代價最小化:誰都可以走、誰都可以代替誰,所有問題都被認為只是時間問題……那麼,程式設計師,你的自我價值何在呢?
關於測試
我聽到很多真實的聲音,都在抱怨測試工作乏味、加班辛苦。我認為,國內大部分的測試,其實完全是程式設計師扭曲的工作形態導致的。
專職的測試人員去做專項測試、整個系統的整合測試等等,我都能理解,但是絕對不應當深入模組內部去測試開發人員的程式碼,絕對不應該去考慮所謂的程式碼覆蓋率——因為這些,比如白盒測試,本都是程式設計師自己該完成的事情。程式設計師自己開發的程式,當然要自己驗證功能,很多軟體公司在一些專案流程裡就是沒有專職測試介入測試執行,原因很簡單,難道自己拉了稀,讓別人給你擦屁股?
另一方面,測試該掌握哪些技能?
我見過許多測試人員,他們抱怨工作總是被輕視,沒有說話的分量,但是每天的工作就是了解開發的流程,根據流程完成用例的編寫,然後執行那些用例,發現bug並填寫bug report。如果一名測試只需要做這些事情,那麼確實太沒有技術含量了、太沒有入門門檻了,太單調乏味了。
測試需要成長,既為自己考慮,也為團隊中的程式設計師考慮。
做一名優秀的測試,除了要有分析能力、辨識能力等等軟實力以外,基礎技能如通訊協議、指令碼、編譯原理、作業系統等等,亦視情況掌握,只有這樣,才能和程式設計師從並不清晰的需求開始,一起去分析、設計、實現和質量保證、去和上上下下的環節做溝通、論證。微軟的測試(SDET)都把演算法和編碼視為基礎要求,敢問國內一些公司的測試人員,有幾個敢這麼說?
讓程式設計師遠離浮躁
去看看國內幾家知名部落格和論壇,多少浮躁的博文和帖子四處亂飛?多少人在罵公司狗血,在自嘲薪水,甚至在人身攻擊?
浮躁的心態可能是造成這種現象的罪魁禍首,有一位同事說得好,很多具體的技術都可以學,但是執著的心和對技術的熱愛是不容易學得的。
整個社會都在日益浮躁,ITEye本來也是一個有技術深度、氛圍濃厚的網站,現在看起來有些魚龍混雜;微博的流行正驗證了社會浮躁的趨勢,很多人沒有時間和耐心去寫完整的文章,但是兩三句感慨、甚至一詞半句的驚歎卻容易得多;程式設計師像尋找速配男女一樣,在這個概念翻飛的時代,茫然地尋找自己應該進入的領域,應該瞭解的技術,於是,很容易看到許多所謂的架構師和諮詢師可以把這些東西講得海闊天空、天花亂墜,這個概念、那個素語,但是——給他一個具體問題吧,要他寫寫實際程式碼吧,你會要了他的命。
給程式設計師一點寬鬆和鼓勵
都在說國內的IT環境不如歐美,大量勞動力的富餘讓人力成本變得無比廉價,能讓青年付出賣腎代價以購買大部分配件都“Made In China”的iPhone,中國卻只獲得了1.8%的利潤,這些都讓人感嘆,為什麼中國做不出蘋果系列這樣的產品?為什麼中國始終要給別人套上“廉價勞動力”的帽子?中國的程式設計師,你們的創造力呢?你們精彩的點子呢?
好吧,我聽到有人在說是教育體制的問題。對於程式設計師的地位的思考有很多,可惜我們不是教育工作者,我們也沒有那麼大的影響力,不過,在團隊中間,我們應當多給予這些脆弱的程式設計師們一點鼓勵,讓他們表達出自己的想法,特別是在設計上、實現上的想法,不要嘲笑任何人弱智,不要咒罵評審的程式碼狗屁,多一點溝通,把眼光放長遠一些。
這些能表達出想法的人起碼可以證明兩點:有思考、有勇氣,僅這兩點,僅足以讓旁觀的人鼓掌。
一名優秀的Team Leader,不應該整天陶醉在跟蹤專案進度和獲取程式設計師工作反饋上。我們都明白,所謂一張一弛,在工作壓力恰當的時候,是最適宜工作的,程式設計師的工作本來就需要創造性,沒有適度寬鬆的環境,就沒有思維的火花。
讓程式設計師自己去佈置工作臺,給他們創造機會聊聊天,把各個團隊、各個角色放到一起說說話,組織分享一些有趣的話題,做一些有意思的研究(最初程式設計師都很靦腆,得勞煩您多牽線搭橋了),Team Leader的工作,絕不僅僅是說“行”或“不行”。
程式設計師的理想
1983年,賈伯斯對百事可樂的CEO John Sculley說:“Do you want to sell sugar water for the rest of your life, or do you want to change the world?”(你想賣一輩子糖水,還是改變世界?)就這樣,一段傳奇的合作開始了。
我們已經不在戰火紛飛的年代,有多少程式設計師還願意懷抱那些原始的理想,還能說出“做網際網路的弄潮兒”、“用技術改變世界”這樣的話來?
這個世界執著的人並不多,用這樣的理念去吸引程式設計師的公司,則更少。
關於技術
我始終覺得,做軟體的公司是需要依賴於技術的,當然國內可以稱得上是“技術公司”的並不多,但是,優秀的技術能讓程式設計師脫穎而出,也作為一種謀生的手段,為其覓得不錯的回報。
做技術能不能一直有飯吃?我想答案是肯定的,有許多公司聲稱技術路線可以一直有發展的可行性,但是技術牛人還是轉了管理或者一走了之,有一種粗暴但是易行的鑑別技術公司的辦法,就是尋找裡面又沒有40歲,甚至50歲以上還在做實際設計和編碼的人(不是那些脫離了具體實現向客戶吹噓的角色)。
世界上有兩種最賺錢的人,一種是真正的生產者,他們用自己獨一無二的聰慧、靈感和勞動創造了價值;一種是極其老道的投機者,專門從別人口袋裡把錢掏出來放到自己口袋裡。他們都受人尊敬、受人矚目,後一種讓自己的生活變得更美好,但是前一種,讓整個世界更美好。
如果你不能在技術的道路上堅決地走下去,在大部分公司做市場、做管理、做諮詢,順便鄙視一下別的辛苦工作的程式設計師,那麼也可以混得很好——畢竟,生活的解總是有很多種。