軟體工程師的自我總結

7、在一種語言上編程,但別為其束縛了思想。“代碼大全”中說:“深入一門語言編程,不要浮於表面”。深入一門語言開發還遠遠不足,任何程式語言的存在都有其自身的理由,所以也沒有哪門語言是“包治百病”的“靈丹妙藥”。程式語言對開發人員解決具體問題的思路和方式的影響與束縛的例子俯拾皆是。我的經驗是:用面對對象工具開發某些關鍵模組時,為什麼不可以借鑑c、c51、彙編的模組化封裝方式?用傳統的桌面開發工具(目前主要有vc++、delphi)進行系統體統結構設計時,為什麼不可以參考來自 java社區的ioc、aop設計思想,甚至借鑑像spring、hibernate、jboss等等優秀的開源框架?在進行類似於實時通信、數據採集等功能的設計、實現時,為什麼不可以引用來自實時系統、嵌入式系統的優秀的體系框架與模式?為什麼一切都必須以個人、團隊在當然開發語言上的傳統或者經驗來解決問題???“他山之石、可以攻玉”。

8、養成總結與反思的習慣,並有意識地提煉日常工作成果,形成自己的個人源碼庫、解決某類問題的通用系統體系結構、甚至進化為框架。眾所周知,對軟體開發人員而言,有、無經驗的一個顯著區別是:無經驗者完成任何任務時都從頭開始,而有經驗者往往通過重組自己的可復用模組、類庫來解決問題 (其實這個結論不應該被局限在軟體開發領域、可以延伸到很多方面)。這並不是說,所有可復用的東西都必須自己實現,別人成熟的通過測試的成果也可以收集、整理、集成到自己的知識庫中。但是,最好還是自己實現,這樣沒有智慧財產權、著作權等問題,關鍵是自己實現後能真正掌握這個知識點,擁有這個技能。

9、理論與實踐並重,內外雙修。工程師的內涵是:以工程師的眼光觀察、分析事物和世界。一個合格的軟體工程師,是真正理解了軟體產品的本質及軟體產品研發的思想精髓的人(個人觀點、歡迎探討)。掌握軟體開發語言、套用語言工具解決工作中的具體問題、完成目標任務是軟體工程師的主要工作,但從軟體工程師這個角度來看,這只是外在的東西,並非重要的、本質的工作。學習、掌握軟體產品開發理論知識、軟體開發方法論,並在實踐中理解、套用軟體產品的分析、設計、實現思想來解決具體的軟體產品研發問題,才是真正的軟體工程師的工作。站在成熟理論與可靠方法論的高度思考、分析、解決問題,並在具體實踐中驗證和修正這些思想與方式,最終形成自己的理論體系和實用方法論。

10、心態有多開放,視野就有多開闊。不要抱著自己的技術和成果,等到它們都已經過時變成垃圾了,才拿出來丟人現眼。請及時發布自己的研究成果:開發的產品、有創意的設計或代碼,公布出來讓大家交流或者使用,你的成果才有進化和升華的機會。想想自己 xx年間開發的那些windows系統工具,5、6年之後的今天,還是那個樣子,今天流行的好多windows系統工具都比自己的晚,但進化得很好,且有那么多用戶在使用。並且,不要保守自己的技術和思想,儘可能地與人交流與分享,或者傳授給開發團隊的成員。“與人交換蘋果之後,每個人還是只有一個蘋果;但交換思想之後,每個人都擁有兩種思想”,道理大家都懂,但有多少人真正能做到呢?