警思

前言:

? ? ? 一直在迷茫自己的路怎么走,最近在借鑒一些大佬的方法。整理了此篇,后續(xù)會持續(xù)的擴展和濃縮。希望最終能濃縮刪減成幾段。


一. 好奇心

? ? ? ?對于程序員來說也是類似,如果你看到新技術,新產(chǎn)品沒有像小孩看到新玩具那樣兩眼放光,沒有想趕緊在自己電腦上玩玩的沖動,你就需要仔細考慮下是否真的對軟件開發(fā)有興趣?如果根本沒興趣,不要浪費時間,還是趁早轉(zhuǎn)行,有更多有前(錢)途的職業(yè)在等著你。

? ? ? ? 沒有好奇心,就不愿意追本溯源,追求技術的本質(zhì)。

二. 養(yǎng)成計算機的思維方式

? ? ? ? 相反你只能用計算機能理解的方式,用非常非常低級的計算機語言去告訴它做事情:創(chuàng)建一個類,分配一個固定大小的數(shù)組用來存放數(shù)據(jù),用一個數(shù)(size)來記錄數(shù)組里存了多少數(shù)據(jù)。如果數(shù)組滿了,就需要增大數(shù)組,并且把數(shù)據(jù)從老數(shù)組復制到新數(shù)組。

? ? ? ? 這里邊有很多很多的煩人的細節(jié)需要你去處理,一不留神就會出錯---計算機編程就是這樣。

? ? ? ? 養(yǎng)成計算機的思維方式,流暢的把人類語言的需求轉(zhuǎn)化成計算機語言,這是程序員的基本功。

? ? ? ?很多人會語法,也懂框架,但是在基本功上卻不過關,只能在初級程序員上踏步。

? ? ? ? 這個基本功的訓練就是數(shù)據(jù)結(jié)構(gòu)和算法,我的經(jīng)驗是多做習題(大學時我把數(shù)據(jù)結(jié)構(gòu)后面的習題都做了一遍),讓這個思維在腦子里固化,以后的編程就可以信手拈來了。

三. 扎實基礎,融會貫通

? ? ? ?我們大學里都學過計算機組成原理、操作系統(tǒng)、編譯原理、計算機網(wǎng)絡、數(shù)據(jù)庫、匯編語言,能不能把這些知識融會貫通,打通任督二脈,在我們的腦海里建立一個計算機運算的圖景?

? ? ? ?把這些知識融為一體,我相信能超越絕大多數(shù)程序員。

? ? ? ?現(xiàn)在的軟件開發(fā)封裝的層次已經(jīng)非常高了,只要學會Java就能做一個編程工作了,隨著你做的越來越深,越來越專,這些基礎的問題就會浮現(xiàn)出來。

? ? ? ?更重要的是,計算機軟硬件的基本思想在這幾十年里其實變化不大,例如緩存,增加抽象層等,有了這么基本的思想的武裝,去學習新的東西不但學的快,理解的會更透徹。

四. 要透徹地理解一個技術的本質(zhì)

? ? ? ?Ant給我們的重要啟示就是,用XML來描述任務,能極大的擴展語言的能力。但是Ant的問題就是需要程序員處理太多的細節(jié),指定源代碼路徑,指定編譯文件的路徑,指定資源文件的路徑,指定需要的jar包及其位置,很煩心。

? ? ? 于是Maven出來使用“約定優(yōu)于配置”的方式解決了Ant的問題。

? ? ? 理解了技術的本質(zhì)以后就能夠觸類旁通,就能夠快速學習,這在技術更新很快的軟件行業(yè)尤為重要。

? ? ? 只是學會使用是不行的,不但要知道how,還要知道why。

? ? ? 停下來,思考,才是進步的本質(zhì)。

五. 要能寫漂亮的代碼

? ? ? ?所謂漂亮代碼不僅僅是清晰、易懂、優(yōu)雅,更要實現(xiàn)功能,沒有Bug或者極少Bug。

? ? ? 其實如果代碼簡單優(yōu)雅,一般沒什么問題。

? ? ? 寫出漂亮代碼并不容易,需要思路清晰,有良好的編程基礎,有優(yōu)秀的抽象能力,以及對一門語言的熟練掌握。

六. 抽象的能力

? ? ? 現(xiàn)實的需求紛繁復雜,如果架構(gòu)師不能夠把這些亂無頭緒的需求抽象成一些“概念”,在概念的層次進行思考,系統(tǒng)根本就無法設計。

? ? ?但是抽象出概念以后還不夠,還要看看這個概念是不是正交的,能不能獨立變化,如果不能,考慮下新的概念抽象。

? ? ?抽象能力的訓練沒有捷徑,就是經(jīng)驗的積累,勤于思考和學習。



七. 功能的完善層次

? ? 第一層: 功能能用,不報錯。

? ? 第二層: 各種輸入情況都考慮到,各種用戶的需求都能滿足

? ? 第三層:健壯性,可靠性: 程序中運行中突然斷掉了,會有什么影響,可以回退不,可以重復執(zhí)行不

? ? ? ? ? ? ? ? ? 擴展性:?

? ? ? ? ? ? ? ? ? 性能: 當用戶量,數(shù)據(jù)量提升到百萬級,千萬級會出現(xiàn)什么情況


八. 認真負責的態(tài)度

? ? 我們組長是個很認真負責的人,無論從業(yè)務研究時,每步流程的分析,各種情況的考慮;還是開發(fā)中,代碼質(zhì)量的管理(精簡,高效,高擴展);還是測試的時候面面考慮到,各種情況的分享;還是發(fā)布時,每個步驟的確定,還要自己動手先試下有問題沒;在到發(fā)現(xiàn)一個問題時,不解決絕不回家的態(tài)度。

? ? 因此造就了一個業(yè)務能解釋的清清楚楚,流程圖隨手畫隨意講解。技術隨手畫整體框架圖,功能點。


九. 記筆記的方式

? ? 選書: 必須要有作者自己的觀點,因為那才以為這理解通透了。嚼碎了的才易消化。

? ? ?知識點分為了解,掌握,精通

? ? ?了解的:概念,大概原理,使用場景

? ? ?掌握(近期不重點):概念,原理(淺層),具體使用,擴展使用,

? ? ?精通(近期重點):概念,原理(深層,升到java代碼的實現(xiàn),jvm指令等),具體使用,擴展使用,

十. 思考問題的方式

? ? ?一日,java validator出現(xiàn)異常,追尋錯誤日志信息,然后度娘檢索。得一答案,少jar包。興沖沖和組長提。組長問了如下問題

(1) 這個是權威性的資料嗎 (答曰:百度得的)

(2) 為什么要加(答曰:看代碼少依賴)

(3) 加了后對原來的影響(答曰:應該沒影響吧)

靜思,每條都有問題。第一個我去官方文檔去找是另一個答案,果然不權威性的不可靠,比如度娘

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第二個就更嚴重了,連原理都不清楚,談何辦事。這個依賴的功能是什么,為什么么要加這個依賴,甚至之后的延伸,比如自己做個校驗,也可以參照,以及這個依賴的其他使用場景等等。懶思害死程序員。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第三個代碼是嚴肅的,尤其是公共組件,牽一發(fā)而動全身。不要因為一時腦熱,而到生產(chǎn)出問題哭都哭不出來。

? ? ?一個知識的精華在于它實現(xiàn)的目的,原理。而不是方式。理解了原理那么學習其他想關聯(lián)的知識也是融會貫通。

? ? 順便延伸,根據(jù)需求或者指標做事的永遠是低級層次的,無論代碼再漂亮,多么高擴展,高可用。因為層次決定了。需要我們在平常中思考每件事的目標,直接的關聯(lián),以及可能的延伸,這樣遇到一個新的問題時,才可以提出建設性意見,解決問題,高出別人的視野。

? ? 警思!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,027評論 25 709
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,679評論 18 399
  • 年年想植樹,卻未動一土。 朝念林蔭路,暮想百花谷。 把沒有種植的種子種在心里,假以時日定有只屬于你的樹林——致3....
    天恩_72bc閱讀 144評論 0 0
  • 現(xiàn)在互聯(lián)網(wǎng)時代的飛速發(fā)展出現(xiàn)了許多產(chǎn)品,手機啊平板啊...等等;如今,網(wǎng)上出現(xiàn)了了一個叫做評論區(qū)的地方,起初我也非...
    南北由紀閱讀 268評論 0 1
  • 我是落日里發(fā)呆的一頭石獅,看到夜色四合,看到繁華匆匆逝去,不發(fā)一語。 過往盡成廢墟,未來不可知悉,唯有當下教我們?nèi)f...
    珀西城閱讀 699評論 0 0

友情鏈接更多精彩內(nèi)容