原创 緩解可查錯性問題的手段——單元測試

從本月初開始,我加入了某基站開發團隊。儘管我在通訊行業工作快10年了,但這是頭一次工作於機站項目,所需學習的東西自然很多,還是那句話 — 有挑戰纔會有進步。在此我想與讀者分享過去三週我就軟件的可查錯性的一點新體會。現從事的項目是真正的嵌入

原创 在C++中通過模板規避潛在錯誤

注:本文節選自我正在創作的第二本書《C++跨平臺與框架開發》,其中一些措詞並未就博文進行調整,閱讀時請注意。   模板(template)爲C++帶來了泛型編程的能力,但也帶來了使用難度。大體上,使用模板的三大動機分別是提高複用性、去除

原创 軟件工程師在外企學什麼?

我在Motorola工作了近6年(注:在這期間我經歷了Motorola拆分成Motorola Solutions和Motorola Mobility,以及Motorola Solutions將網絡部門賣給NSN,期間我所在團隊的企業文化和

原创 軟件項目外包之路何以如此坎坷?

通過軟件項目外包的形式獲得令人滿意的產品並非易事,想想當初爲何美國國防部要求卡內基梅隆大學的軟件工程研究所(SEI)制定現在廣爲人知的CMM就明白了。在此,我想就我的工作體會談一談軟件項目外包之路爲何如此坎坷。 首先要明白的一點是,軟件

原创 單元測試實施解惑——別“樁”了!

我在《單元測試實施解惑(一)》中指出,使用象Cmockery這樣的測試框架,將所需測試的模塊通過打樁的方法實施單元測試並不是最有效的方法。在這篇文章中,讓我們一同來探索更好的方法。在繼續探索之前,讓我從傳統單元測試開始引入所主張的方法。圖

原创 技術敏感度 — 基層技術管理者必備

一說到管理者的能力特質,我們馬上會聯想到溝通、授權、決策等能力。然而,對於軟件開發活動中的基層技術管理者(team lead、line manager等),我想指出被極爲忽視的另一種重要能力 — 技術敏感度。 對於基層技術管理者來說,何

原创 在C++中通過模板去除強制轉換

推薦閱讀:《在C++中通過模板規避潛在錯誤》   C++與C語言相比是一個強類型語言,即對數據類型的匹配程度較C更爲嚴格,這有助於避免程序員在編程過程中由於粗心所犯之錯。由於歷史原因,C++中仍保留了reinterpret_ cast、s

原创 單元測試實施解惑——無縫整合

在剛過去的一個月中,我完成了一個小軟件框架的設計與實現。期間由於並行開發的需要,在沒有對代碼完成單元測試的情形下我將之check in到了SVN的主幹上,隨後的心情很是忐忑。因爲我知道我一定會犯錯(事實也證明在單元測試完成之前就發現了兩個

原创 軟件外包的形式與質量控制

大體上,我將軟件外包的形式分成三種。第一種形式是外資企業在華等低成本國家成立新的研發中心。研發中心雖然名譽上是總部的分枝機構,但所從事的研發工作通常不會是高精尖的內容。很顯然,由於所設置的分支機構在公司制度和企業文化上完全採用總部的,因而

原创 一種面向業務流的內存管理算法

在象通訊系統中的基站這樣的複雜嵌入式系統中,對於內存管理模塊的效率具有很高的要求,因此內存管理模塊的算法很有講究。講究在於,不僅要考慮算法的效率,還要兼顧算法是否會帶來大量的內存碎片以及如何進行內存碎片合併。正因如此,這類嵌入式系統軟件大

原创 軟件工程師所需掌握的“終極技術”是什麼?

最近,我在微博上看到@程序員鄒欣老師發的一條微博 — “不少大學同學都有一個想法:先做幾年技術,然後做管理;也有一些同學說:我技術不行,希望直接找到一個管理的工作,就像PM那樣。請看 PM 需要什麼樣的能力:(鏈接略去)”。在讀這條微博的

原创 面向對象設計的優點

一旦明白了軟件設計的真諦(參見《軟件設計的真諦》),我們就更能理解面向對象設計的優點。簡單說來,它更便於我們在軟件中構建更真實的虛擬世界。 首先,對象的引入方便了在軟件虛擬世界中模擬現實世界。現實世界是由很多獨立的抽象或具體物體組成的,比

原创 駕馭你的“職場布朗運動”

在我的博客空間內,不時會有在校學生就職業發展和學習方面的內容向我尋求幫助。同學們由於初入社會沒有行業經驗,加上在校所學內容又廣(但不深),所以在擇業方面很容易產生困惑。在擇業觀上,他們希望找到一個將來有前途的行業,也希望在“是選擇大公司還

原创 【編程好習慣】 引入中間變量使程序更易讀

今天查看自己爲《專業嵌入式軟件開發》一書所寫的代碼時發現,個別函數由於沒有引入中間變量,使代碼行既長又不易讀。重構前後的代碼如下所示。 重構前:if (TIMER_STARTED == _handle->state_) {     tim

原创 走技術線,還是技術管理線?

最近因爲要給剛畢業的學生做一次演講,所以就職業發展這類話題先以寫博客的形式做一些思考,希望屆時能給同學們帶來質量更高的內容。我在《駕馭你的“職場布朗運動”》一文中談了25條職場感悟並提出了“走技術線,還是技術管理線?”這一問題,但實際上並