其實寫這篇文章的想法在之前就有了,故先列出大綱,想說有空再補齊內容。只是這一擔擱竟然就是一、兩年,剛好最近有多餘時間,便想完成這篇心得。簡單說;任何一門工藝的養成都可以分為「技法」與「心法」。技法看得到,心法則看不到,但透過技法可以將背後的心法表現出來。
底下6大類是軟體開發過程必需具備的技巧,其中第6項端看工作環境的需求,有的人從業許多年也不一定會做到相關的工作(例如我自己~)。這中間每一項均包含技法與心法,只是所含的比重不同罷了。
例如"開發工具使用"屬於技法方面居多,而"程式架構"則屬於心法較多。這中間熟輕熟重實在沒有一定。會技法不會心法,你能做的事很粗淺;會心法不會技法,你就屬於嘴炮型的人。所以這兩者不可偏癈,一定要相輔相成才能取得好成績。
特別是"英文能力"提升絕對佔"心法"的最大一部份。如果沒有好的英文閱讀能力,很多來自國外的新知識都無法在第一時間接收,或接收得不正確的話,會嚴重地影響後序軟體技法的養成,更遑論要完成一個專案了。
1.程式語言掌握(c/c++ or C# or java)
2.開發工具使用(相關os操作學習、IDE的使用)
3.程式除錯技法(測試工具使用與技法)
4.程式架構運用與說明文件(SOLID rules及Design Pattern及UML)
5.英文能力(說明文件閱讀、Specification閱讀、Framework理解、OS架構...等)
6.新型功能開發(軟體元件開發、Driver架構新增)
而上列6項搭上底下內容就是整個軟體開發的全部了。當然這是很粗略的分工,每個大類若詳究下去會發現都是一個故事,這中間個人學習的拿捏就端看工作上有沒有需求了。
1.硬體平台:x86_64/ARM/GPU/DSP
2.虛擬機:QEMU/VMWare/Vitual Box
3.作業系統:Android/Linux/Windows
4.程式種類:User Mode/Kernel Mode
5.除錯方式:Local/Remote,GPU debug
以目前工作內容(PCIe-NVMe)來看,上面羅列的項目從規劃到後序實踐的內容如下。
(一)開發測試工具及開發工具:
1.平台:PC
2.OS:Windows(visual c# 2015 )
3.程式:AP(.net framework/design apttern)
4.除錯:Local(IDE)
5.英文閱讀:NVMe spec.、SCSI command、NAND flash
(二)量產工具:
1.平台:PC
2.OS:Windows(visual c# 2015 )
3.程式:AP(.net framework/design apttern)/Dirver(wdf))
4.除錯:Local(IDE)/Remote(Windbg)
5.英文閱讀:NVMe spec.、SCSI command、NAND flash、WDF
(三)Sorting工具:初步構想搭上ML(AI)、大數據的做法,需了解GPU及其上的除錯。
略
(四)FW開發:
1.平台:PC
2.OS:Windows(ARM IDE(EX:Eclipse...))
3.程式:System Code(SOLID、FTL)
4.除錯:Remote(IDE/ICE/LA)
5.英文閱讀:NVMe spec.、NAND flash
接下來會依照上面的原則;將一些關係到這個專案的「技法」與「心法」在後序的文章中記錄下來,方便後序查詢時留個記錄。
沒有留言:
張貼留言