[心得] 機械轉軟體工程師經驗分享
# 前言
想分享一下當初從進公司幾乎不會寫程式
到現在負責做軟體的porting to Linux的經歷
如果你想轉軟體工程師,最好先進到願意讓你寫程式的公司
但是這不一定辦得到,我底下分享一些自己做的功課
不想看心得可以直接跳到 # 自修建議
# 個人背景
台大機械學士
碩士非CS EE ME
高中只摸過一下用C寫的C++
大學只學過很廢的VB忘記是不是.net
# 現職
工具機產業,領域特殊,大多使用C#與C++
對網路front end, backend不了解
工作大概就是UI跟演算法處理
# 當軟體工程師的心理準備
不是學會寫程式,找到薪水不錯的工作就結束了
學會之後仍然需要補充新的知識
想辦法write better code,並理解沒有best code
因為要寫軟體很簡單,軟體要會動也很簡單
難的其實是寫出來的東西有人願意用
軟體不是單純寫程式,而是寫出客戶要的東西
不論code再乾淨,東西不是客戶想要的,就是浪費時間
(如果可以)花上一兩天只是寫prototype,確認是客戶要的東西最好
over design跟premature optimization都要盡量避免
事前的溝通很重要,所以溝通(通靈)其實是很重要的一環
但不是所有公司都有辦法讓工程師溝通
不過以上都要痛過才知道,沒痛過的人請跳過
# 通靈
當客戶提出莫名其妙的要求時,猜得到他想要甚麼比較重要
啊對,通靈不是免費,應該要能反映在你的薪水上
或是找一家願意付錢通靈的公司
# 自修建議
- Google能力
不知道怎麼建議,但是如果你發現自己不太會google,練不起來
那真的不建議轉軟體工程師
- OS > memory multi-thread
可以參考清大周志遠,目的就是還債
作業沒做沒關係,至少觀念要聽得懂
- Design Pattern
雖然一開始看不知道在幹嘛,但是把前幾個先看過
配上實際例子你會比較有感覺
最好是自己的爛code一直refactor,配上下面的TDD
推薦看head first design patterns,他的實例很多
- TDD
很重要,先有unit tests再寫程式可以減少很多regression問題
不過沒痛過的人不知道,可以先跳過
- Algorithm
這個非CS EE可能都沒有從頭練過,如果沒有強烈要求可以慢慢來
我是工作有遇到的至少會弄熟,或是覺得做法有點爛再去查
當然純軟免不了刷刷leet code, 不過不是很建議從leet code開始
沒寫過的人挫折感其實很重,不過懂多了也會影響程式架構能力
- System Design
SOFT_JOB版應該很多人推薦過,這邊就不多寫
以上都念過之後,對軟體工作會有新感覺
至少我覺得比之前懵懵懂懂的時候了解更多了,查資料也更準
- 英文 & 通靈
當你有一點程式基礎後,下班有空可以逛逛stackoverflow
選一個你熟悉的語言開始回答新手問題,他可以鍛鍊兩件事情
- 你如何理解不懂的人問的奇怪問題
- 有條理的整理你的回答
不過我累積一千多分之後就有點膩了...偶爾自己查到的問題再回而已
另一個方式是訂閱一些有興趣領域的英文digest,不一定要是程式
像是我會去NSwitch的reddit上去逛逛
# 書籍推薦
C++:
懂一點C++後,建議看Scott Meyers的Effective C++, 雖然寫的時間很早
而且C++ standard都到20了,還是有很多值得一看的部分
其他書單很多,我貼個SO就好
https://stackoverflow.com/a/388282/4123703
C#: Head first, C#
Code:
Clean Code
Clean Architecture
The clean coder
中文: 無瑕的程式碼 番外篇:專業程式設計師的生存之道)
這本書很薄,但是我看了很有感觸,有做專案的人建議一看
--
等等,我是不知道妳是看了什麼神槍手的故事,可是為什麼要拿我當靶 (′Д‵)
什麼!是黃忠和后羿的故事?他們拿的不是銃,是弓!
長門,妳手上拿著蘋果跟繩子是作什麼?今天晚餐不是關東煮是烤乳豬嗎?
連爸爸都沒弄痛過我,可不可以不要綁這麼緊,好歹鬆一點讓我有空間逃吧,古泉。
好,我認了,要射就射吧,可是請聽一下在我死前的最後一個願望。
不 要 拿 霰 彈 來.....噗滋(腦漿聲) 摘自「阿虛的最後一餐」
--
01/21 20:48
推
推 不過工具機產業薪水應該不高吧 你值得去外面試試
推 自學能力不是普通的強
重點 要會通靈(X
我這個產業運氣不錯,薪水還可以,雖然沒有mnnrp高
然後通靈真的蠻重要的xd
推通靈大師
porting driver不算純軟,要稍微懂一點硬體的東西
工具機就新代吧 最近怎麼消失了 很少有人提
推通靈
其實重點在於台大學士,你以爲大葉學士有公司敢冒險?
跟我走的路很像, 書單也幾乎一樣
新代不就丟骰子 能不能碰程式全看運氣 跟職缺無關
老實講, 很多本科系也不會自學看這些書
新代就台大機械大本營
同樣做案子天天要通靈 幫QQ
沒台大進不了!大哥很努力!
推,曾是機械人
重點在於台大好嗎 看過很多例子 就是願意給台大機會 其他
學校的非相關科系 要嘛直接刷掉履歷要嘛就是很折磨
傻眼原po學了那麼多 酸酸只說一句靠台大哈哈哈
原po就是肯學 所以不會是大葉是台大啊
推通靈王
原po很認真又厲害
選擇一定比努力重要
推
推 Clean Code
同學推一個
推 感謝分享
然後你當年大學修的是 VB Express 2005 XD
學習能力強的的還會念大葉嗎? ㄏㄏ
謝謝同學提醒vb版本xd
每個人的境遇都不一樣,希望能分享資訊幫助有需求的人
Hi學長,想問找到一間願意收非本科轉職的公司會是首要條
件嗎?公司的類型需要怎麼篩選呢?
非本科的大部分都是從一些條件比較不好的公司開始慢慢爬
非本科沒經驗就是看學歷。自學再多沒學歷一樣沒人理你
大公司都比較願意收非本科畢業的,只要刷題
推通靈
原來是學長,幫推~
推
如果是韌體,有些收機械系,台大的話我知道有進P
朝聖推
有人不知道是窩在自己的舒適圈還是邏輯少了點 原PO學了
很多 其他人就沒有學嗎? 現實看到的就是會的一樣多 就是
給台大 基本上就是按照學校排名阿 這也沒損害到原PO的努
力 第一份工作跟機會本來就跟學校有關 看過的例子裏面有
清大物理材料也是自學很多(清大不是廢柴了吧?) 一樣結果
而且有些東西是先有機會才有得學(這篇裡有)
最後大概也是都認為台大品質保證做結尾 結果這變成前提了
必須說我運氣算很好,有遇到肯給機會的公司,也肯發展
但是念的書跟心得還是可以提供參考,境遇沒辦法比較
恭喜原po~~但是真的感覺是台大給了你機會
推!真優秀!
機運也很重要,公司缺人擴編的時候機會很多,非本科沒
經驗的也行
大葉憑哪一點可以跟台大比啊 人家努力了20年
憑什麼出社會兩三年野雞大學就自認已經超越台大了?
推,感謝分享
推一個 高手
推
強者同事 先推再說
推 強者
推推
爆
Re: [問卦] 沒人發現軟體工程師晚年只會失業而已嗎!那只有你,我還每天在學 : 到時軟體工程師根本無法再跟上時代 : 只能被公司裁員 : 別人看到你年紀也不會想用你 : 根本就整個廢到笑啊!18
Re: [討論] 用AI寫code產生的疑問這篇展示ChatGPT的威力與限制。 他問Bing如何raycast一個有displacement map的geometry. 原po問到最後,答案是不可能或給錯誤的程式。 下面有人回答他把原po的問提去問ChatGPT4,說得到很好的解決。18
Re: [請益] 軟工轉職建議我也想問這個問題耶, 我是非本科學習寫程式,也當一個小小的軟體工程師, 其實邏輯不好,雖然很努力,寫code時間都比別人長, 碰到資料庫、伺服器、網路知識,常常需要問同事, 工作了4年(前後端都有),沒有成就感,自覺也不能獨當一面。11
Re: [請益] 記不住代碼,我的智商有問題嗎???看到這個文章我笑了,原因是: 1, 我的記憶力比你還差,從小就差,長大退化更快,但是我還是活的很好 2, 怎麼會有那麼笨的人,還在用腦袋記東西。 大部分的東西,我從來不用腦袋記,養成作文件的習慣,會輕鬆很多 文件要做得很好索引,下次你要找它,就可以很快找到8
[討論] 軟體工程師每五年增加一倍?這不是我說的,這個是Uncle Bob 說的 他說1946年 全球出現第一位軟體工程師 至今73年之後(2019,他發表演說的時間) 全世界已經一共有約莫一億個軟體工程師 這個成長的速度8
Re: [請益] 如何當軟體QA??之前寫的軟體測試幾個層級,提供參考。 最入門的狀況,Intern/工讀生通常只會碰到這 A. 依照Test Case進行測試。回報Issue,重現步驟 B. 有能力建置測試環境到可以部屬待測軟體。 測試的軟性觀念,這邊開始才真的進入測試的領域。4
[問卦] 靠咕狗翻譯寫程式484很廢?如題 小弟我程式通靈師拉 最近在通客戶的靈,看了一堆programming guide和source code拉 但是全部都是英文 笑死,根本看不懂5
Re: [請益] 港商司亞樂 Sierra Wireless沒想到我可以來回這篇, 之前注意到這間公司也是因為收到這間公司的面試邀請, 上來找資料,結果也是看到一些什麼騙看薪資單後就沒消息之類的。 不過我是面試後(兩次)就直接拿到offer 我剛進這公司沒多久,應該算是和你同一時間面試的。2
Re: [請益] PM懂程式有優勢嗎技 : 能樹時,想到程式是很大的硬傷,於是自學了一些基礎前端html, CSS,js,未來打算繼 續 : 報名線上的全端培訓班,但不知道這筆5、6萬的學費,對於未來能否帶來幫助? : 爬文過正反兩面評價都有,有人說PM會溝通就好不需要懂程式,也有人持反面看法,有2
[問卦] 看Clean code前要注意什麼?如題 Clean code全名為《Clean Code: A Handbook of Agile Software Craftsmanship》 中文名為《無瑕的程式碼:敏捷軟體開發技巧守則》 因為小弟覺得自己寫的扣像屎一樣,連自己都不想看 所以打算來看看Clean code,來增進程式內功