早上在微博上看到郭安定老師的微博,我在微博上也改了下發了一條,萌生寫這篇文章。
已故的中國社會學家費孝通認為文化應包含三個層次:第一個層次是生產、生活的工具,國家社會用什么樣的器物、工具來生產、生活。比如中國人用筷子、西方人用刀叉、印度人用手抓,所用的器物不一樣。這當然也包括國家打仗時用什么,用洋槍大炮、還是用大刀長矛?這是器物層次;第二是組織層次,按照費先生的定義,包括這個社會里面怎么把人組織起來,讓單獨的個人能夠結合在一起、在一個社會里面共同生活以及他們之間怎樣行動,他包含很多內容,比如政治組織、宗教組織、生產組織、國家機器等等;此外還包含一個價值觀的層次,人怎么想,什么可以接受?什么不可以接受?什么好?什么不好?好壞之間,各個社會的價值觀念、行為選擇標準不一樣。三個層次不可分割,是一個有機整體。
個人認為,目前一個成熟的面向企業應用的軟件開發組織,如果想很好的完成一個系統,必須包含以下幾項要素:1、項目管理;2、軟件工程;3、合理的編程語言和框架。而一個IT人才要想在此行業有所發展,則需要反向發展,由編程語言學起,直到可以對一個大型項目進行項目管理。
一、編程語言和框架
經常聽到這樣的說法,學習編程擔心最后都變成了編碼工人,學習C#擔心C# 只是能做個網站,不想一輩子編碼,在簡歷中寫精通.NET,熟練各種框架等等。編程語言和框架只是我們我們編程的基礎,屬于第一個層次的生產工具。
語言就是把我們的想法讓計算機理解,讓計算機按照我們的想法完成一些功能,具體功能如何實現還是需要我們告訴的,實際上還是我們的解決方案。可能就是我們所說的編程思想和業務領域的解決方案吧。另外一種語言是要解決很多領域的問題的,尤其是C#、C、C++這些語言,因為要解決很多問題,所以他的語法、類庫可能會很多,而在開發你的某個系統的時候可能僅僅用到其中的很少一部分,另外可能不如一些專門的語言解決的好。
框架是為工程提供一些公用的功能或者模塊,本身并沒有簡化應用的復雜性,反而是增加了應用的復雜性,只是大部分的復雜工作由系統完成了,留給開發人員的內容可能不復雜了。這些框架通常都是在解決了很多同類的問題之后提出的,并不是適合所有情況。我們要用某個框架的時候,我們的思路必須和她一致,受框架的約束,而在完成一些簡單應用并且后期發生變化很小的時候沒有必要使用框架,可能最簡單的解決方案就是最好的。另外當項目中的功能比較復雜的時候,框架并不能幫上忙,有時候還會幫倒忙,因為框架提供的畢竟是最常用的通用的功能,不一定能夠滿足我們特定的要求。
語言是工具,在開發的時候應該選擇一個好工具,但是最重要的是你要有解決問題的思路,你要能夠靈活運行語言這個工具來表示的你的思想。框架能夠提供在多數時候能提高效率,但是仍然要選擇好框架,更重要的時候你要有組織項目的能力,這個能力應該是完成很多實際項目之后才能有的。如果只是停留于這一個層次,你就會糾結于.net /c#版本。舉個例子,同樣是使用.net下的web開發,有asp.net mvc,asp.net webform, nancyfx 等等,大部分的人還在糾結于用那個框架。
二、軟件工程
在這里談談以面向對象為指導思想的軟件工程。面向對的軟件工程采用用例來捕獲需求,采用OOA來進行系統分析,采用OOD來進行系統設計,采用面向對象的語言進行開發。OOA的過程中,要懂得使用分析模式,而OOD的過程中要懂的設計模式。在不斷的項目經驗積累中靈活的運用這些知識,最終達到運用自如的境界。在工作中見過不少人拿著面向對象的語言卻是在使用著面向過程的編程,很多會使用c# 語言的同仁都在做著這樣的事情。
三、項目管理
項目管理的好壞在很大程度上左右的項目的成功與否。沒有很好的項目管理,會導致項目出現很多狀況,下面舉幾個例子:
1、溝通不足:程序員的溝通能力普遍偏低。在自己老板和客戶的雙重壓力下,很多必要的溝通都不能及時進行,以至于在項目進行中總是出現各種不愉快的事情。
2、責任不明確:當項目出現延期或其他狀況時,應該由誰負責呢?這是個十分重要的問題。但項目管理沒有做好的話,責任就變得模糊不清。例如測試問題,用戶只期盼結果,但殊不知這個結果必須由他們仔細驗收才行。在溝通不足的情況下,如果不能很好的要求用戶配合測試,結果可想而知。程序員催著用戶趕快測試,而用戶卻推脫沒有時間的情況比比皆是。
3、進度難以控制:面對需求的不斷變更,程序員的懶惰,技術難題甚至各種人員的離職,你是否已經做好了各種應對準備?如果沒有很好的進度管理,這些都會使你手忙腳亂,痛苦不堪。最重要的是,最終無法達成交期,造成項目失敗。
一名程序員只有從掌握編程語言做起,一步一個腳印才能做到項目經理這個位置。我的理解,經理以行政手段管理項目經理,項目經理以項目管理的手段管理項目(包括項目團隊成員),分析師與架構師用軟件工程的方法進行分析與設計,程序師用健壯優秀的語言并按照設計文檔編寫代碼。這構成一個項目開發的層次關系。
文章列表