国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
多數(shù)學生認為“軟件靠吃年輕飯”之我見

前幾天做過一個小調(diào)查,問覺得“軟件靠吃年輕飯”的有多少,結(jié)果近80%的人舉起了手。多數(shù)人覺得軟件靠吃年輕飯,是因為覺得做軟件就是埋頭寫代碼、通宵寫代碼、玩命寫代碼,靠的是年輕的拼勁和體力。

 

  1. 吃過豬肉不代表見過豬跑,軟件不只是寫代碼而已

 

先讓大家看個行業(yè)數(shù)據(jù):在軟件行業(yè)里,產(chǎn)業(yè)化團隊的生產(chǎn)率只有1000代碼行/年,當然這是以人為單位。許多在校大學生光作業(yè)和考試寫過的代碼,早就超過1000代碼行/年的速率,就我前陣子提過的那個一小時完成的小項目,也有近200的代碼行,按這個數(shù)量級看來,1000代碼行不過是一天的工作量。

 

大家不用吃驚或懷疑,上面的數(shù)據(jù)是真實的情況(見《人月神話》)。為什么會有這么大的反差?因為我們說的是程序,而人家說的是軟件,這得看看我們平日的工作和軟件行業(yè)的真實產(chǎn)出有哪些差距。

 

我們學生平日所做的,叫程序,它本身是完整的,可以由作者在所開發(fā)的系統(tǒng)平臺上運行。但那樣的東西還未能達到實用化、商業(yè)化、產(chǎn)業(yè)化的高度,還有兩種途徑可以使程序轉(zhuǎn)變成更有用的、但成本更高的產(chǎn)物。

 

一種是將程序變成編程產(chǎn)品,這是可以被任何人運行、測試、修復和擴展的程序。它可以在多種操作系統(tǒng)平臺上運行,供多套數(shù)據(jù)使用。這就要求程序必須按照普遍認可的風格來編寫,特別是輸入的范圍和形式應廣泛適用于各種合理的基本算法;接著還得對程序進行徹底的測試,確保它的健壯性和可靠性,這意味著必須準備、運行和記錄詳盡的測試用例庫(絕大多數(shù)學生編程時都未考慮到測試的因素),用來檢測輸入的邊值和范圍;最后還要完備的文檔,以便每個人可以使用、修復和擴展(見過不少學生寫程序連注釋都未能做好,這里面也包括我)。

 

另一種是將程序變成編程系統(tǒng)中的一個構件單元。要求它是在功能上能相互協(xié)作、具有規(guī)范的格式、可以進行交互的程序集合,并可以用來組裝和搭建整個系統(tǒng)。這就要求程序符合一定的要求編制,使輸入和輸出在語法語義上與精確定義的接口一致,同時程序還應符合原先設定的資源限制——內(nèi)存空間、輸入輸出設備、計算機時間等。最后,還是測試的問題,即程序須和其他構件單元一道,以任何能想象到的組合進行測試,且測試用例會隨著組合不斷增加,范圍愈加廣泛,而且一些意想不到的交互會產(chǎn)生許多不易察覺的BUG,測試工作會是一個非常耗時的環(huán)節(jié)。

 

而事實上,軟件產(chǎn)業(yè)真正需要的產(chǎn)出,是以上兩種的結(jié)合體,即編程系統(tǒng)產(chǎn)品,經(jīng)驗數(shù)據(jù)表明,這樣結(jié)果的成本是起初程序的9倍,然而只有它才是真正有用的產(chǎn)品,也是大多數(shù)系統(tǒng)開發(fā)、項目研發(fā)的目標。

 

前一篇日志里寫說中國當代大學生普遍不符合社會的需求,就軟件業(yè)來看,學校里做的,只是最低層次——即程序的實現(xiàn),甚至連程序?qū)崿F(xiàn)的要求都遠未及社會企業(yè)的實際要求。因為在大家眼里,很少能見到哪一本教科書、哪一個教師或是哪一場考試會做出以下這些要求:

 

  1. 單一功能子函數(shù)代碼不得超過50行、形參個數(shù)不得超過7個、程序嵌套深度不得超過7層;
  2. 圈復雜度必須在15以內(nèi),對程序的修改或擴展不得增加其原有圈復雜度;
  3. 代碼未寫,文檔先行,注釋必須按照固定統(tǒng)一范式撰寫;
  4. 各類編程風格規(guī)范:關系運算必須常量在左、變量在右,不許使用復雜的運算表達式,必要時添加括號而不依賴于優(yōu)先級,魔鬼數(shù)字需用宏定義替代等等;
  5. 局部變量必須初定義、避免不必要的內(nèi)存操作、內(nèi)存操作必須考慮異常處理;

……

 

    可以列出的要求條目還有好多,而這些,還僅是新員工入職前要記住和注意的內(nèi)容罷了,在工作過程中還有功能重量評估、測試用例編寫(不僅限于測試人員,研發(fā)人員也需做自己的測試用例)、循環(huán)迭代敏捷開發(fā)等等,各種學校里接觸不到的要求和環(huán)節(jié),這在公司里僅是家常便飯。

 

  1. 只有在中國,才能聽到“軟件靠吃年輕飯”的論斷,而且說得最多的不是行業(yè)的專家,而是不明真相的學生和外行人

 

上面從軟件行業(yè)產(chǎn)出的角度,表明了編代碼寫程序只是軟件行業(yè)里最底層最基礎的工作。從性質(zhì)來看,軟件其實就是利用計算機模擬人的計算與邏輯能力,從而以各種形式快速得到和展示思維的結(jié)果。所有軟件活動都包括一根本任務——打造構成抽象軟件實體的復雜概念結(jié)構,和一次要任務——使用編程語言表達這些抽象實體,在空間和時間限制內(nèi)將它們映射成機器語言。

 

前一篇日志也提過,完整的軟件設計是要經(jīng)歷需求分析、系統(tǒng)設計、編碼實現(xiàn)三個步驟,對應的職位分別是系統(tǒng)分析師、軟件架構師和程序員。把軟件設計比作打仗,程序員就像小兵,實現(xiàn)的是軟件中的次要任務,而根本任務的實現(xiàn),就掌握在系統(tǒng)分析師、軟件架構師、項目經(jīng)理這些元帥和將軍的手里。

 

系統(tǒng)分析師、軟件架構師、項目經(jīng)理這些都是程序員的高階形態(tài),或都歸類于軟件工程師,正如元帥和將軍都先要經(jīng)過小兵這一過程一樣,而這一過程的轉(zhuǎn)變,并非朝夕可達的。中國最缺的,就是有10年以上工作經(jīng)驗的軟件工程師。金山軟件董事長雷軍(其投資的還有凡客、多玩、UCWEB、小米)曾說過:“在印度,包括在美國,我見到的項目經(jīng)理都是三四十歲的人,他們‘越老越值錢’,有些人甚至擁有超過20年的行業(yè)經(jīng)驗?!笔聦嵣?,做軟件和做硬件的一樣,都是越老越值錢,當然這里指的是程序員的高階形態(tài),而非程序員。

 

只是,不見得每個小兵都能往上發(fā)展,因為打仗這東西,光靠點手腳功夫是不夠的,正如程序員埋頭學習新的開發(fā)工具、鉆研程序代碼,一邊揮灑汗水、熬夜寫代碼,一邊又對自己30歲以后的職業(yè)方向充滿恐慌,卻不知逐步提升自己的視野、思維和經(jīng)驗。

 

前一篇日志也論述過管理和心理知識對研發(fā)人員的重要性,其對軟件從業(yè)人員的作用更加明顯,這是軟件根本任務所決定的,也是解決軟件固有屬性困難——復雜性、一致性、變化性和不可見性時,所需具備的角度和能力。做軟件的愈往上走,對從業(yè)人員的綜合素質(zhì)要求就愈高,這也才有了“越老越值錢”的說法。

 

前陣子,聽朋友說做應用層的軟件沒前途,因為技術門檻低,沒能把握住核心競爭力,可后來想想,不是沒有競爭力,只是應用層軟件是面向客戶需求的,其核心競爭力不在于技術的實現(xiàn),而在于需求的分析與心理的把握。

 

舉兩個簡單例子,像近年來大熱的小游戲——植物大戰(zhàn)僵尸和憤怒的小鳥,二者的市場價值早已突破10億美元關口。單從技術角度而言,其實現(xiàn)并非難事,但稍微有點心理學知識基礎的會發(fā)現(xiàn),二者有一明顯的共同特點,即利用對比的手法,將兩種不具關系的事物通過某種方式強制關聯(lián)起來(植物和僵尸,小鳥和綠豬),游戲模式中還涉及到不同層次的動機與能力塑造,進一步加深玩家的喜好、甚至狂熱程度。這兩個游戲的成功,依靠的不是技術的優(yōu)勢,而是對心理知識的把握與運用,而這樣的思維與成就,單靠寫寫代碼、用用工具是達不到的。

 

軟件的魅力在于它的創(chuàng)造性、不重復性和純粹思維活動,但其困難也是隨之產(chǎn)生的追求完美的必要性、由他人設定目標和思維邏輯的復雜性,這些問題的解決方法不單一依存于某本具體的書中,而是涉及管理、心理、邏輯、哲學等多方面的知識,恰巧中國教育方式將軟件和這類知識分在了對立的兩塊中,也難怪會有中國軟件業(yè)的這種囧態(tài)。

 

其實上述這些,許多企業(yè)和專家、從業(yè)人員都已意識到(像華為軟件培訓里相當一部分時間就是在進行管理類的培訓),用百度或谷歌一搜“軟件靠吃年輕飯”這句話,出來的基本都是否定的論斷。這樣的言論,流傳得最多的便是學生和外行人,外行人就不提了,但學生是行業(yè)未來的人員,持有這樣道聽途說得來的觀點,中國軟件行業(yè)能不陷入惡性循環(huán)么?

 

只是也應該說,這是正常的事。人在不確定的時候總是傾向于相信周圍人的意見,學校里的知識給不了更高更廣的視野,學生們不清楚不了解,也難怪會聽風就是雨。

 

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Think in Code,用代碼思考-袁紅崗編程思想
【觀點】風雨20年:我所積累的20條編程經(jīng)驗
軟件測試工程師要從哪方面開始學習?
代碼大全(Code Complete)
初學程序,程序員都看一些什么書?
都快2021了,你還不知道怎么成為優(yōu)秀程序員?大牛推薦6個軟件開發(fā)步驟
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服