程式設計師的技能樹,決定了一生職業的高度

前端yc發表於2019-06-01

什麼是程式設計師?

碼農、程式猿、程式媛

使用 程式實現價值

程式=資料+演算法

軟體=程式+軟體工程

程式設計師=工程師?

程式設計師金字塔

程式設計師的技能樹,決定了一生職業的高度

程式設計師知識結構

程式設計師的技能樹,決定了一生職業的高度

面試造火箭,工作打蚊子

會什麼是你的下限,能夠會什麼是你的上限

越底層的東西越決定上限

學習慾望

杜絕 1年工作經驗重複 N年

如果自己遇到這種問題會怎麼解決,與資料中的解決方案相比優劣如何?

別人為什麼會想到這種解決方案?

自己是由於經驗欠缺還是技能點欠缺才導致沒有想到好的解決方案?

解決這類問題的根本思路是什麼樣的?

學習能力

不是懂得多,而是學得快

知其然更要知其所以然:技術以深度優先

類比現實:對現實世界的模擬

更好地接受資訊:建立自己的知識體系;閱讀並記筆記,納入知識體系

深度思考:閱讀書籍

動手實踐、頻繁練習:專案驅動型學習;主動思考

自我總結:完善知識體系;筆記、部落格、分享

持續學習:逃離舒適區;學到老,活到老

如何學習新技術

程式設計師的技能樹,決定了一生職業的高度
如何閱讀原始碼

閱讀該技術的架構文件,瞭解其總體架構和組成

根據總體架構,將原始碼檔案以模組或者上下層級進行分類。

從未閱讀過的模組中選擇最獨立(依賴性最小)的模組程式碼讀起。

閱讀此模組的功能介紹文件。

閱讀此模組的原始碼: 執行程式,斷點除錯。

一邊閱讀一邊整理呼叫關係圖。

轉到第三步。

參考 官方文件或者經典書籍

計算機思維

馮.諾依曼體系:程式儲存,順序執行。

二進位制儲存:用位元解決問題

位運算:位運算的高效

邏輯分支:條件判斷、迴圈、迭代、遞迴

個人規劃

長期規劃:職業規劃;高瞻遠矚

短期規劃:具體技能、晉升、學習方面的規劃;優先順序排序

基礎學科

物理:電路原理;量子計算機

數學:工程優化;線性代數;微積分

英語!!:閱讀英文文獻;計算機術語

計算機組成原理

計算機的硬體組成和執行原理

馮諾依曼體系、 摩爾定律、 阿曼達定律

資料的機器表示:原碼、補碼、反碼、浮點數/定點數

指令系統:複雜指令集、簡單指令集

儲存器:分類、快取

CPU: 流水線、偽共享、快取

IO裝置:IO匯流排、DMA、中斷

計算機作業系統

遮蔽計算機硬體的中間層

作業排程: 排程策略、優先順序

程式管理:程式和執行緒、程式間通訊

儲存管理:記憶體、虛擬記憶體、檔案系統、頁、頁快取

IO管理:IO裝置讀寫操作

Linux作業系統

計算機網路

單個計算機之間的互連

TCP/IP協議棧:四層/七層

TCP連線狀態

TCP與UDP的區別

HTTP協議、RESTful規範

網路安全

如今的網際網路:IPv6、物聯網、5G

編譯原理

將程式碼轉換成機器可理解的二進位制,有助於實現DSL

詞法分析、語法分析

型別檢查

執行時環境、中間程式碼

程式碼生成、程式碼優化

資料結構和演算法

程式=資料+演算法

無論你在哪裡。技術的提高都是靠自己。現在是網際網路時代,即使你在深山,你依然與世界同步。

不要太過急功近利, 慢慢玩, 精進.

如果你覺著程式設計有趣, 成長也就不再痛苦, 祝學習愉快.

相關文章