在中國,軟件工程師的考試有:計算機等級考試和全國計算機技術與軟件專業技術資格考試
……
也有這樣一些侷限性:
以答題/評分爲主要考試形式,沒有面對面的考試git
一個軟件工程師,對於他的能力應該如何量化地評定?我認爲這些所謂的考級並不能評定軟件工程師的能力。如今網絡上對於譚浩強的C語言教材能夠說是頗多批判之聲,更是有著名段子「i+++i+++++i」,來諷刺這一隻弄書面知識不顧實際應用的編程考級。然而不少計算機二級的所謂培訓卻很推薦這一教材,說明了這些以答題爲主的考試更偏向理論。那麼在實際中,所謂考級是不是軟件工程師的一條發展之路?考級好的人可否說明其工程能力強?若是不能,那麼咱們怎麼說一我的是軟件工程師中的「大牛」?程序員
在結對編程模式下,一對程序員肩並肩、平等地、互補地進行開發工做。他們並排坐在一臺電腦前,面對同一個顯示器,使用同一個鍵盤,同一個鼠標一塊兒工做。編程
這樣的結對編程是否會有更優的編程形式?例如兩我的先同時編寫一個模塊,而後相互複審、交流,而後進行下面模塊的編寫。這樣能夠提高編程的效率,同時結對編程交流、複審的優勢並不會消失。
而以駕駛員/領航員形式的結對編程,當然能不斷地處於「複審」的工程,可是是否存在駕駛員被領航員帶偏了道路的可能?瀏覽器
在現實生活中的軟件開發過程,有哪些軟件項目是根據敏捷流程開發的?具體說來,敏捷流程現在在軟件工程開發中的地位是怎樣的。
另外,傳統的如計劃驅動(plan-driven)的開發流程,形式化的開發方法(Formal Method)又有哪些軟件項目?若是咱們如今就業了,那麼通常的開發流程會是敏捷流程嗎?安全
你是否以爲你的長處並不在於寫代碼和debug,而是協調、溝通,讓一個團隊或組織有效運轉起來……服務器
就計算機系而言,目前的教育每每會專一於教你寫代碼和debug,那麼有沒有必要針對於一些表達能力強的人,教學如何協調、溝通,讓一個團隊或組織有效運轉起來?就目前而言,這些能力又應該從哪裏學到呢?網絡
若是有人發明了一種在常溫常壓下能把石墨變成鑽石的方法,能夠廉價地生產大量的鑽石,那麼目前鑽石產業鏈上的公司和從業人員,以及已經購買,儲存了鑽石的人們會有什麼反應?他們會喜歡這個創新嗎?併發
據說不久前真有關於製造鑽石的研究成果出現。就我我的理解,若是這一方法真的發明,必定不會受到鑽石產業鏈公司,鑽石儲存者的支持,由於這一創新阻擋了他們的利益來源。關於鑽石早有陰謀論「鑽石騙局」,論點是鑽石儲量其實很大,可是由鑽石產業巨頭隱藏下來,讓鑽石保持稀有才能讓價值升值。這一陰謀論雖然不肯定真僞,可是確實說明這些影響到部分人利益的創新可能會遭到阻撓。例如現現在的傳統出租車司機很不歡迎共享單車、滴滴打車之類創新的出現。個人困惑是若是一個新的創新成果出現,卻遭到了利益相關工做者的打壓、阻撓,這種狀況下創新可否成功,若是被阻撓了應該怎麼辦。分佈式
John Tukey在1958年的論文"The Teaching of Concrete Mathematics"中,首次提到了software即「軟件」一詞。但在工程背景上,最先出現「軟件」一詞是在1953年8月由Richard R. Carhart在蘭德公司提出。
維基百科——John Tukey
Margaret H. Hamilton在阿波羅計劃期間,在麻省理工學院提出了Software engineering「軟件工程」一詞,以使軟件具備硬件工程等其餘領域的合法性。隨着時間推移,軟件工程一詞才真正得到了與任何其餘學科相同的尊重。
維基百科——Margaret Hamilton (scientist)工具
現現在軟件工程已是一個廣受承認的領域,可是關於專業的軟件工程師,全球各地的許可或者認證的法律要求並不相同。在英國使沒有許可或法律要求承擔或使用「軟件工程師」職稱。在加拿大的某些地區(如安大略省等)軟件工程師能夠擁有專業工程師(P.Eng)的指定。在歐洲,軟件工程師能夠得到「歐洲工程師」的職稱。在美國的某些地方,如德克薩斯州,「工程師」一詞的使用受法律管制,僅僅保留給擁有專業工程師執照(PE執照)的我的使用,不過這種強制許可的方式現在是飽受爭議的。
有趣的是,自2013年以來,美國爲軟件工程提供了NCEES的專業工程師考試(PE考試),從而容許軟件工程師得到許可和承認。可是自2013年最初提供考試以來, 進行了五次考試, 總人數爲81名考生。而僅僅只有19名候選人登記參加2018年4月的考試。根據NCEES考試發展政策,考試政策和程序委員會(EPP)須要向NCEES董事會提出關於繼續考試的可取性的建議。在2018年1月的會議上,EPP委員會審查了PE軟件工程考試的歷史。在考慮全部信息後,EPP委員會建議NCEES中止PE軟件工程考試。在2018年2月的會議上,NCEES董事會接受了EPP委員會關於中止提供PE軟件工程考試的建議。因爲此考試每一年僅提供一次,所以董事會指示NCEES在2019年4月考試後中止舉辦PE軟件工程考試。也就是說在這篇博客發表的一個月後,NCEES將會舉辦最後一次PE軟件工程考試。
維基百科——軟件工程
NCEES discontinuing PE Software Engineering exam
根據維基百科的數據,搜索到如下源代碼託管程序的用戶數:
維基百科——Comparison of source-code-hosting facilities
git:目前毫無疑問最受歡迎的源代碼管理軟件。
參考資料:維基百科——git 博客
優勢: 適合分佈式開發,強調個體
與現有系統和協議的兼容性強
可以高效處理大型項目
良好的分支機制,可讓主幹代碼保持乾淨
離線工做,管理代碼成本低,不須要依賴服務器
缺點: 學習難度大
代碼保密性差,一旦開發者把整個庫克隆下來就能夠徹底公開全部代碼和版本信息
SVN:目標是成爲普遍使用的併發版本系統(CVS)的最兼容的後繼者
參考資料:維基百科——Apache Subversion 博客
優勢: 代碼的一致性高
採用集中式,易於管理,保證安全性
管理方便,邏輯明確,理念符合常規思惟
適合人數很少的項目開發
缺點:必須鏈接在服務器上,不然基本不能工做、提交、對比、還原等
不適合開源開發
Microsoft TFS:應用軟件生命週期管理(ALM)軟件,涵蓋整個應用程序生命週期
參考資料:維基百科——Team Foundation Server 張洪君的博客
優勢:高度集成其餘工具,主流的開發工具(如Visual Studio, Eclipse)和常見的辦公工具(Excel,瀏覽器)
除了支持集中式代碼庫,還支持分佈式代碼庫
缺點:搭建、維護比較複雜,硬件要求較高
Mercurial:輕量級分佈式版本控制系統 優勢: 高性能和可擴展性,分散化,徹底分佈式協做開發 對網絡的依賴性更低,甚至能夠離線進行管理,只需在有網絡鏈接時同步