程序員的技術性思維誤區

引言

有的程序員在面試或者工作中,可能會被面試官或者同事評價:技術思維太濃重!我相信讀者朋友中有不少被這樣評價過,或者認識被這樣評價過的朋友吧。雖然筆者認為這是一箇中性的評價,不見得是個缺點,但相信被這樣評價的朋友還是會比較介懷。那麼接下來,我們就來談一談技術思維的特點。

重實現

面對問題第一時間的反應是:怎麼實現呢?實現的成本高嗎?比如產品同學提了一個想法,很多程序員的第一反應也許不是去考慮這個想法對於客戶是否合理,而是會快速的回顧考量現有系統的各種約束和技術負債,看是否可以在Deadline之前實現。所謂的“客戶第一”,絕不是一句空話,而是實實在在的一種思維習慣:考慮問題的第一齣發點永遠是從客戶角度出發去思考!

重邊界

很多程序員面對衝突和矛盾的時候,第一時間先考慮衝突或矛盾雙方的邊界在哪裡?當然,絕大部分衝突或矛盾的發生確實都是因邊界不清導致的!但是,面對衝突急於先去理清邊界,會給衝突雙方一種”追究責任“的感覺,這實際上無益於衝突或矛盾的解決。更好的方式應該是,先從衝突或矛盾背後的隱藏問題出發,找到問題的全局最優解,然後再去說服衝突雙方可能會更有效果,這就是問題驅動!

重細節

大部分程序員在學習的時候,有一種傾向:先保證某個知識的深度,再求知識的廣度!對深度的痴迷,實際上就是重細節的表現。不知道大家學習的時候有沒有過這樣的感受,某個知識你學習初期感覺提升最快,隨著知識的深入,發現怎麼學習都還在原地踏步,好像經濟學上所說的邊際遞減效應一樣!這個時候,如果你去學習下該知識相關的一些知識,甚至是無關的一些知識的時候,某一刻突然對於該知識的理解深度會有質的提升。

實際上在學習的過程中,可以借鑑分層軟件架構思想來組織知識學習深度和廣度的節奏。作為程序員,一開始先同時學習Java語言基本特性、JVM基本原理、基礎排序算法、計算機基礎體系結構等基本相關知識;然後再同時學習Java語言高級特性、JVM內存模型、高級排序算法、計算機原理。這樣,實際上你的知識永遠是一個面,雖然一開始這個面的深度不夠,但只要持續學習提升,當你有了兩層、三層的疊加之後,就形成了體系化的知識體系!

重風險

面對問題總是會先考慮最壞的情況下怎麼辦!實際上有一種軟件架構思想就是「基於風險的軟件架構」。永遠做最壞的打算,這個特點其實挺好的。但是,有的時候會引起過度的悲觀,而缺失了成本意識!實際上,只要發生風險之後的成本比實施控制風險措施的成本小,也許就不需要控制風險了!

結束語

各行各業的從業者其實都會或多或少的被工作影響自己的思維習慣,比如筆者之前從事土木工程行業,看到一些建築的柱子第一時間會說混泥土,而不是水泥。這些習慣無所謂好壞,但是一定要注意避免這些思維特點被無限放大。要知道任何特點只要不加約束的使用,也許就變成缺點了,物極必反,月盈則虧!

程序員的技術性思維誤區

分享程序員職業生涯中的點點滴滴,願每位程序員都能快樂工作,認真生活!


分享到:


相關文章: