在教育方面,有句話是“十年樹木,百年樹人“,道出了人才培育的困難。在軟件研發上,其實更是如此,即便中國人口眾多,高校林立,真正合格的訓練有素的人員并不豐富,而且地域上分布不均衡,人才多聚集于北、上、廣、深,二三線城市合格人才稀缺,如我所在的三線城市,基本是幾大當地培訓機構的學生占據90%左右的就業職位,其素質水平到什么程度不用詳述。
不但地域分布不均勻,開發語言和領域也同樣存在,在二三線城市,多用微軟的平臺和技術: windows server, ASP, ASP.net, c#,如果要尋找unix/linux, c/c++, Java方面的公司或人才都不容易,看看幾家招聘網情況即可知曉。
當然這種情況也是相輔相成的,招不到相關的人才,就不敢采用相關的技術和平臺;反之,沒有這些采用相關技術和平臺的公司存在,人才自然呆不住,要么轉學本地流行技術,要么去北、上、廣、深謀求發展。
系統開發是需要具有一定規模的,是根據要開發的對象成比例的,當然不是人越多越好,我們碰到的實際情況常常不是開發人員太多了,人浮于事,而是相對面對的項目和系統,人員要么數量不足,要么技能和熟練程度根本達不到要求,但種種原因導致公司并沒有解決這個問題,依然采取死豬不怕開水燙態度繼續下去,特別是那些通過”關系“圍標得來的項目,沒有任何技術上競爭性,最后,系統是按時或拖延上線了,但系統維護基本就是噩夢。
從而,重構有了廣闊的市場,誰能搞定這個爛攤子,他就是公司的"英雄人物",最后說不定得到一個技術主管職位。
當面對一堆爛代碼,煩燥之時,要明白這是你做”塞翁“的好時候。
當你去一家有相當開發歷史的公司,有面對老系統需要維護和二次開發,記得好好閱讀揣摩<<重構>>和<<修改代碼的藝術>>,<<代碼大全2>>也不錯,太厚了:).
再說說公司在技術選型和業務領域上的問題,對一個中大型公司來說,你可以搞多語言多平臺環境,開拓多個業務領域方向,畢竟有這么多部門這么多人員,而對于小公司,如果也搞這種模式,時間稍稍長一點,問題就出來了,技術根本跟不上,或者說從一開始就跟不上。
但公司決策人物常常掌握市場業務,他們如果采取一兩套系統到處賣,那么開發部門就相對輕松,不過在慢慢推進核心技術水平過程中,伴隨著各種客戶特色化需求開發,但技術領域大方向不變,相對來說還好一點。但是,如果市場部門抓住一兩個客戶,不停挖掘他們的不同需求,為他們開發不同的系統,從ERP系統、OA系統、門戶網站、網絡安全、音視頻系統等,那開發部門就是日子一天比一天難過,有些技術領域不是你一時半刻能理解并運用好的。比如有這樣一個案例,以前公司從來不招美工,也不做門戶網站,突然有一天接了一個門戶網站,而在這個地區也很難招到一般的美工,急忙就準備叫那些開發后臺的人,甚至搞c++出身的人邊學邊搞,結果會怎樣?
道理在口頭上容易講容易理解,而在實際中常常就出現這種不合理的現象,但依然會繼續下去。
這些年來技術管理工作上有一點體會,那就是技術管理的成績好壞,受公司市場業務策略的影響很大,如果開發領域和人員配備是合理的,你多努力一些自然效果明顯,這是順勢而為; 如果開發領域如上面描述的一樣糟糕,即便你努力再多,你親自參與具體開發以填補人員不足,也是無濟于事,說不定你做的實事越多,反而越亂。
<<孫子兵法>>在講”形“與”勢“時,舉了一個例子:把一個圓圓的大石頭放到平地上,用力推也動不了; 如果把它放到高高的山坡上,輕輕一推,這個滾下去不知道會砸死山谷下多少軍士。這就是同樣的形,但勢不同,效果就大不一樣。