注:本文轉載自飄飄渺渺的部落格
首先來說一個高階程式設計師並非靠自己讀幾本書寫幾萬行程式碼就能練就的,我更關注於低層的環境,也就是程式設計師實實在在的工作環境。因為程式設計師的高低還得從實際的工作來衡量,而非其它。所以我想說的是,中國的軟體公司的性質直接導致程式設計師的水平的高低。而我所說的軟體公司,不是指某個或者某幾個,而是指主流的軟體公司,大眾型的軟體公司。所以我希望那些已經步入一個理想的公司的程式設計師理解我這篇文章的定位。
軟體公司的無償加班對程式設計師的影響:
國內的軟體公司中程式設計師是常常加班的,每日加,周未也常加。基於這種性質,出現了一種很莫名其妙的現象:每天程式設計師的實際下班時間總是要晚於規定下班時間,至於晚一個小時還是兩個小時還是更多這就另說,總之,程式設計師這份工作,如果按時下班反而自己感覺自己像是做賊似的。表面上公司並沒有強迫誰加班,但實際上在潛移默化中有一種威懾力,要求你要多為公司工作幾個小時,而且表面上你所工作的這幾個小時還是你自己願意的。正因為是“自己願意的”,所以公司更有理由認為是無償的。
還有就是周未加班,一般周未加班是因為“忙”(關於這個帶引號的“忙”,見“軟體公司的‘忙’對程式設計師的影響”)。但周未加班一般是無償的,至於法律所規定的那種“償”就更嘗不上了。不過一般公司是這樣規定的:周未加班可以倒休。關於倒休,一般是周未的班真的加了,倒休卻遙遙無期,原因很簡單,公司“忙” 嘛!
這種情況對程式設計師的影響:消極、軟弱無主見、虛偽、對前途渺茫。
軟體公司的“忙”對程式設計師的影響:
軟體公司的“忙”其實有時也是真忙,從原因來說,軟體公司認為是程式設計師(其實也有其他員工,但本文不涉及討論)造成的,程式設計師認為公司造成的。而根據“一個巴掌拍不響”原則來看,應該是公司與程式設計師合作不協調出現的惡性迴圈造成的。深層原因大家自己研究去吧。不過從我這裡的表象來看,這種“忙”有這麼幾點,這幾點如果不代表大家的意見,大家可以補充:
- 專案開發與計劃脫節,表現為專案開發慢於計劃
- 突如其來的事件
- 為某種說不清道不明的原因,像是作秀
- 假忙
- 真忙
上面說的第一種情況最常見,這涉及到軟體工程的話題,其實也是軟體公司做不大,程式設計師水平提不高的核心。而“軟體公司做不大”已有前輩文章《淺談國內軟體公司為何無法做大做強?》中說過了,而“程式設計師水平提不高”本文所言即是,所以這個原因大家讀完這兩篇自己體會吧。
上面說的第二種情況也常有,比如偶爾趕個標書,比如客戶那裡突然出現了BUG,急著去改等等。
第三種情況就很讓人暈菜了,有點無病呻吟的感覺,比如不知道從哪裡冒出一個會議,開到個七八點;
第四種情況很特別,也比較常見,大家同室坐、彼此各自心。一片共同耕作的美好景象,但果實見不到兩顆豆呢。這可是大家齊心虛度時光。程式設計師可以拿出這個時間提高自己嗎?當然不可以了,你表面上還是得幹活呢。
第五種情況就不說了,因為這是正根。
總之軟體公司是“忙”的,一般是以上三種“忙”,偶爾這三種都沒有了,第四種就馬上出來的。
這種情況對程式設計師的影響:混亂無序、怨由心生、虛偽做作、學習時間少。
軟體公司的流程不規範對程式設計師的影響:
無像樣的需求、無像樣的設計、沒有測試、沒有文件、沒有維護(所謂維護也大都是客戶測試出BUG來改一改)。
其實說到需求這一塊也並非完全是軟體公司的問題,大多數情況下,客戶也是根據程式設計師直接上來編碼後暴露出來的問題才漸漸明白自己的需求是什麼的。
“什麼都沒有”的問題在於,什麼也不清楚,如果寫一堆以不變應萬變的程式碼,第一,時間不允許,第二,難度太大。要是稀裡糊塗去實現,擴充套件與維護性又差,整個一堆豆腐渣工程,總之是沒法下手。長了一堆“打鐵”技巧,神不像神,程式設計師不像程式設計師的。
這種情況對程式設計師的影響:無規劃性、程式碼質量低、手忙腳亂、技術永遠停留在“打鐵”水平。
軟體公司對程式設計師員工的“全能型”要求對程式的影響:
裝系統、修印表機、寫文件、編程式碼、見客戶、掃地搬桌子、接網線,在國內軟體公司中程式設計師做什麼事都有可能。單單說技術方面,也是要求事事能做,看一下招聘要求就知道了。
這種情況對程式設計師影響:術業無專攻
軟體公司的工資拖欠對程式設計師的影響:
很悲哀,這是存在的。我向來認為一個員工與公司合作的最底線應該是按時按量發工資。但很多公司打破了這個底線。一個朋友開玩笑地說過:“家庭有錢,誰幹程式設計師呀!”這話雖只可信一半,但是從國內情況來看,程式設計師的生活質量還是不高的,工資的拖欠直接影響到程式設計師的心態,甚至影響到程式設計師的生活。
這種情況對程式設計師影響:低調、迷茫、心態不穩、思想徘徊、生活困難。
軟體公司對軟體開發的要求對程式設計師的影響:
軟體公司對軟體開發的要求一般是實現即可。如果說寫一個和記事本一樣的程式,公司感覺程式設計師應該在一天內搞定;如果寫一個WPS,公司也就感覺程式設計師應該在兩到三個月搞定。這不是浮誇,事實就是這樣的。公司所著眼的點在於“就這麼一點功能”,而非在於“怎麼實現這‘一點’功能。
這種情況對程式設計師的影響:開發難度大、維護難度大、壓力大、難溝通。
軟體公司的承諾對程式設計師的影響:
國內軟體公司一般實際行動能力差,但沒理難說話,他們也知道自己沒理,所以比較愛承諾,把實際問題拋向以後解決。然而承諾也只是口頭的,有一點“我以人格擔保”的意思。不過一般情況下,國內的程式設計師還是比較有忍耐能力的(從上文來看不忍耐還能混嗎),但公司層面的“人格”卻是不可信,多承諾少兌現,員工面試時聽到的說話到幹了兩年走了都沒做到的事根本不少見。然而路遙馬乏力,日久人變心,這樣的結果往往是使公司與員工走入惡性迴圈。
這種情況對程式設計師的影響:不滿、被動、拿不起放不下、進退兩難。
結論:
消極、軟弱無主見、虛偽、對前途渺茫、混亂無序、怨由心生、虛偽做作、學習時間少、無規劃性、程式碼質量低、手忙腳亂、技術永遠停留在“打鐵”水平、術業無專攻、低調、迷茫、心態不穩、思想徘徊、生活困難、開發難度大、維護難度大、壓力大、難溝通、不滿、被動、拿不起放不下、進退兩難。
上面這些短語概括了程式設計師的性格、心態、生活環境、工作環境等方面,它們就像毒素一樣,日久能把一個健康的程式設計師毀掉。在這樣的環境下,還問為什麼你的技術這麼低?太搞笑了。