怎样学习(3):迭代学习,精益求精
古人云「十年寒窗無人問。一舉成名天下知」,這是中國古代為數不多的讀書人的真實寫照。大多數讀書人僅僅有十年寒窗,卻不見得成名。
在軟件開發領域有瀑布模式的軟件project方法論。它將軟開發的幾個過程「需求分析,概要設計,具體設計,編碼。測試,公布」嚴格串行起來,僅僅有需求分析清楚后。輸出需分析文檔,才開始做概要設計,依次類推,直到每一個過程都完畢后才給終于客戶公布軟件。
但非常多時候出現兩方都不愿意看到的結果。那就是交付的產品并非客戶所期望的。
這兩件事情有相似的地方。那就是它們執行在
封閉的系統。僅僅有內部循環
在實際的工作環境中,技術學習是還有一番景象。項目組安排一個新任務給你。你須要了解問題本身的各種因素,比方為什么會有該問題。假設你對該問題所涉及的技術一無所知,須要求助技術經理。經過一到兩天的學習(沒錯,僅僅有兩天時間)將技術梳理清楚之后。拿出可行的解決方式。
然后拿到方案評審會上討論,評審專對方案按多維度進行“評頭論足”,指出該案的缺陷,提出一些建議。
給過這一輪PK之后,對該問題和所涉及的技術了解更深入,然后再想方案。進行評審。經過多輪評審之后,終于得到從技術和交付上都比較適合的方案。整個學習過程可能被K過多次。有種頭破血流的感覺,但技術成長非常快。
近期15年流行敏捷軟件project方法論,它採用小步快跑的方式將「需求分析,設計,編碼,測試,公布」一輪一輪執行,每輪稱為一個迭代。需求分析。設計。編碼,測試在執行時,每一個過程都對前一個過程進行驗收,確保整個團隊的理解與客戶的想法是一致的,當然每輪迭代出口可交付的軟件(即每一個迭代都公布可用的新增功能)。然后由客戶進行驗收。
整個過程一旦出現理解偏差。立即進行交流和及時修正,達成交付即為客戶所須要的。
相同地,這兩個事情也有相似的地方,它們執行在:
開放的系統,存在正向反饋
學習規律與軟件project中敏捷方法論有異曲同工之巧,它須要經歷多次循環(迭代)和正向反饋(考試檢查。或者應用解決某個問題)。才干一步步建立「全棧式知識結構」和實現「系統化知識」。
迭代式學習
作家格拉德威爾在《異類》一書中指出:
人們眼中的天才之所以卓越非凡,并非天資超人一等,而是付出了持續不斷的努力。
1萬小時的錘煉是不論什么人從平庸變成超凡的必要條件。
想要成為某個領域的專家。須要達到1萬小的專業訓練。
假設每天工作八個小時,一周工作五天,那么成為一個領域的專家至少須要五年。這就是一萬小時定律。
在這1萬小時的學習中。并不每天學習一點。經過5年之后。才將該知識(技術)掌握,而是不斷地進行周期性的迭代過程。實際的過程中按例如以下順序進行:
遇到問題 -> 搜索解決該問的知識(技術) -> 使用已有知識去理解新知識 -> 將新知識融入到知識體系 -> 應該新知識
每一個過程都會產生沖突,學習的過程就是解決這些沖突的過程。
分享學習計算機網絡的經歷
最早接觸計算機網絡是在大三的專業課上,當時對計算機網絡不感興趣,僅僅了解一些計算機網絡的基本概念,對協議的細節一無所知。結果計算機網絡成了我大學唯一一門不合格的專業課。
報考研究生時。陰差陽錯地考取了分布式與計算機網絡這個研究方向,幸好遇到一本外國經典的計算機網絡教材,深入淺出。通俗易懂。結果不到一個月,我就將數據鏈路層和網絡功能的功能看完了。當看完網絡層功能時,合上書本,想到了它與實際生活中的運輸交通整個網絡體系統是相似(事實上與如今發達的物流網絡更為相似)。
看完網絡層之后。理解完數據是怎樣通過網絡層進行互聯之后,好像任督二脈打通。全部知識點全然連在一起了,剩下的知識都是協議本身的細節,但網絡背后的互聯協作卻一覽無余。
第一份工作,居然也是跟計算機網絡強相關。我在那個項目里面負責VRP(Virtual Router Protocol)協議的測試工作,對TCP/ICMP/VLAN各種協議行為做了充分的測試,還幫同事一起分析出現的各種奇怪行為。在工作之余,我閱讀了RFC協議規范,甚至將VRP開源碼改動成多實例模式。
相同在第一份工作。出于對Linux內核的興趣,將內核協議棧源碼,從網卡驅動開發,IP層協議,TCP協議,UPD協議。到Socket的處理,翻了個朝天。
最后還發現一個規律:網絡協議棧在實現時,常常使Adpater和裝飾模式。原因是協議像水管一樣。一層接一層。
加一段水道。就能夠燒出熱開水,再加一段,就能夠煮出咖啡。任君組合
然后,然后是到了我如今供職的公司。工作內容與計算機網絡不相關。有次客戶遇到了個tcp協議的性能問題。老大不知從哪里收到風,知道我對網絡比較了解,決定讓我出差到客戶那處理這個網絡問題。當時和客戶那邊的網絡專家一起。經過一周的分析和數據採集,終于定位到是緩沖區因為內存不足而變小,導到大量鏈接發送速度下降。
接下來,部門內的網絡問題,我都是以重要角度投入攻關,并形成了非常多定位經驗。
我就是這樣從網絡小白,變成計算機網絡project師,整個過程不知經歷了多少次迭代,多少次實驗對知識的修正。從原理。到協議測試。再后來的協議問題定位。每次知識(技術認知)沖突的出現,都是須要解決的問題,一旦解決之后,能力會得到提升,知識體系更加完好。
小結
學習不會是一蹴而就,也不是經歷漫長階段才干將知識學到,而是迭代式的。每一個迭代都有知識進帳,但在多次的迭代學習過程中,才干做到建立「全棧式知識結構」和實現「系統化知識」。
迭代式不習。讓你們的知識更系統化,精益求精。
更實時查看文章,請關注我的公眾號 「程序猿思維」
轉載于:https://www.cnblogs.com/gccbuaa/p/7263407.html
總結
以上是生活随笔為你收集整理的怎样学习(3):迭代学习,精益求精的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《数字孪生体技术白皮书》重磅发布(附完整
- 下一篇: 静态时序分析——Data to data