创新式开发探索(一) —— 开篇
? ? ? ? 創新并不是什么神秘的事物, 它就產生于我們工程師一族日常的開發活動中。
? ??
? ? ??為什么還要加班熬夜寫程序? 為什么上班的8小時不能把該學的東西都學到手, 該做的事情都做好? 為什么還停留于低層次低效率的開發 ? 是什么阻礙了我們更快更好地完成任務? 我們的日常開發活動除了完成指定任務, 是否有創新性產出? 高效、創新式開發有哪些規則方法可循? ?
? ? ??
? ? ? 創新是另一種高效。一旦依靠創新性技術或產品領先于競爭對手,就有時間來調整彼此的節奏,思考整體戰略發展,而不是忙著去跟隨; 從另一個角度來說,開發出一種創新性方案,往往也使效率成倍提升。再快的馬車也跑不過火車就是例證。那么, 如何使開發活動更具創新性產出 ? ?
? ? ? ?事不過三
? ? ? ?什么是低層次低效率開發? 相信很多人見過很多重復的代碼,也做過很多重復的開發任務。 做第一遍增刪查改的時候, 那是必須經過的途; 做第二遍, 或許可以加深印象, 做第三遍及以上,就不可容忍了。 這就是“事不過三”的原則。?
? ? ? ?為什么不能做個增刪查改的通用組件, 略加配置就可以完成 ? 或者盡可能地減少做類似功能的工作量? ?我見過一個簡易快速WEB開發框架,采用 Jquery + struts2 將“帶搜索和增刪查改的的分頁數據控件”做成通用了,要增加一個類似功能, 只需要按約定寫好 create.jsp, detail.jsp, update.jsp , 及繼承一個基類,填充好若干方法即可。整個設計還是很優雅的,代碼質量也很高,維護起來只需要理解一次,就可以使用多次。?
? ? ? ?為了擺脫低層次低效率開發, 必須從 “功能開發” 的角度轉到 “模式解決” 和 “解決方案開發” 的角度。 不是去完成一項具體功能, 而是去尋求一類問題的模式實現和解決方案,提高宏觀思考與設計思維。
?
? ? ? ? 及早確立方向
? ? ? ? 及早確立一個對自己有吸引力有前景的方向,然后全心投入探索。方向是努力的前提。?
? ? ? ? 如果方向不明確,就容易被各種公司的低層次需要牽著走,將大部分時間和精力游走在各種開發框架和技術中,而無所精進。可能的結果是,即便寫了若干WEB應用后,連 HTTP , ?Servlet 都不一定清楚; 浮于表面, 所花費的精力和時間都會隨著時間很快地貶值。與此同時,某人可能早已在某個領域確立了主導地位。 大多數人一生的精力都只夠做好一件事。必須將自己的力量、興趣聚焦到一件事上面,才能有所成就。?
?
? ? ? ? 加強科學功底
? ? ? ? 科學功底指的是這些東西, 比如索引如何提升數據庫查詢性能,文法如何指導語言的設計, 范式如何規范數據庫的設計, 如何建立可靠的基準測試等。工程與科學的聯系非常密切。
? ? ? ? 掌握計算機科學的力量,將可以使設計出的程序具備更強大的威力,觸及計算世界的核心,這樣更容易遇到非常具有挑戰性的難題, 激發突破性創新。?云計算, 搜索, 數據庫等這些突破性創新,無一不是在科學的基礎上建立的。創意想法很容易模仿, 但科學的實力可不是那么容易偷走的,這也是 IBM 這個科技巨人一直屹立不倒的原因, —— 實力放在那里, 誰也不敢小覷。?
? ? ? ? 大牛的人通常都具備很好的科學功底,—— 他們對計算機程序世界往往比我們單純做開發的人看得更深更透徹。 讀一讀 《計算機程序的構造與解釋》 ?這樣偏科學性的書, 雖然不會教人具體的開發技能, 但可以引導人去領悟程序設計的精髓和道。
? ? ? ? 加固基礎功底
? ? ? ??基礎功底是指計算機世界運行的基本的機制、原理和細節。 比如, 做網絡開發,應用進程的數據是如何發送到指定遠程機器上的應用進程的, 其中的整個連接、傳輸、關閉過程和細節清楚么? 做系統編程,一個進程是如何完成程序的一次運行, 系統如何調度多進程的執行, 數據結構、調度策略,其中的問題及解決方案、細節清楚么? 能夠用實驗來清晰地展示出來么? 不能總是滿足于造空中樓閣。不要滿足于做那些十歲小孩都能做出來的APP。
? ? ? ? 基礎功底決定著一個人的發展潛力。 基礎功底越強, 后爆發力就越強; ?類似于內功心法,心法強的人,學習和參悟術式會很快;具備扎實基礎功底的人,能夠更容易地領悟新技術的本質,掌握新技術的應用,甚至引領技術發展。
?
? ? ? ? 踏實開發, 廣泛涉獵
? ? ? ? 既然本分是工程師,那么,就要踏實做好技術鉆研和開發工作; 此外,也要根據自己的愛好,方向等去廣泛涉獵一些非技術性的書籍,比如 設計類, 產品類, 運營類,文學類,哲學類等。 交叉性的學科更容易產生創新的源泉。?
? ? ? ??
? ? ? ? ?多方面均衡
? ? ? ? 計算機程序設計實質上是一種心智活動,它運行于內心之中,表達于計算設備之上。因此, 不一定非得開電腦才能編程。 運動鍛煉,理解傾聽, 心智活動訓練,人際交流等多種方式都可以從側面加強開發能力的提升,—— 而且還可以豐富我們的生活, —— 不僅僅是學習技術這一條途經。?創新能力可能更受益于綜合能力的提升和均衡。
? ? ? ? 釋放天賦和直覺?
? ? ? ? 人類是從自然孕育而生的,因此,必然與自然存在某種緊密的聯系和互通性。 人生而擁有強大的天賦、直覺和本能, 只需要去發現和釋放它。
? ? ? ? 長期的學習和主流的教育理念使我們更注重系統的技能教育和分析性思維,而忽略了自然賜予我們的軟力量: 本能, 直覺, 想象力, 而這種軟力量實質上是更強大的,要相信大自然的智慧。
? ? ? ? ?開發三技巧
? ? ? ? ?探究原理, 掌握方法, 查閱文檔。?
? ? ? ? ?大多數時候, 都是邊學邊用。像 Extjs 這種框架, 配置項N多,看都看不過來,到處都是坑,怎么學? 那就要理解它的基本工作機制和原理, 掌握核心常用的部分,其后通過查閱文檔來解決實際問題。 不探究基本的工作機制和原理, 遇到問題就容易一籌莫展,不能知其所以然; 不掌握核心常用的部分,難以實際應用; 想貪多求全, 精力又應付不來。
? ? ? ? ?
? ? ? ? 創新式開發在哪里?
? ? ? ? 總是忙著開發,開發, 究竟開發些什么東西? 產生了多少價值和影響? 我們常常關注開發的高效性, 卻忽視了開發中的創新能力。 是時候重視這個問題了!
?
轉載于:https://www.cnblogs.com/lovesqcc/archive/2013/03/30/4037771.html
總結
以上是生活随笔為你收集整理的创新式开发探索(一) —— 开篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [iOS] UITextField隐藏软
- 下一篇: C++ stl 通用算法和成员函数使用