(本文為 Medium 駐站作家 Manual Elbert 撰寫,以下以第一人稱敘述)
三年前我在巴塞隆納的神經科學實驗室工作,忙著把電極貼到人身上、教認知系統的課,而現在我靠著設計、編寫軟體維生。
當然從前我在研究科學時就寫過很多軟體。如果你想要看懂 40G 的腦部掃描資料,你必須捲起袖子寫些語法來處理這些數據,而我一直都是個很好的程式編寫者。但直到我辭去了我的學術工作(可能也告別了我的學術生涯)並開始在一個小而有野心的新創公司工作之後,我才真正知道什麼是軟體工程師,以及在這一行是怎麼回事,並不是知道更多程式語法、資料庫、演算法跟設計模型就好。
如果我在讀研究所之前就知道這些事情就好了,將會讓我的工作生涯變得更輕鬆。這是一些對年輕的我的忠告,是我過去三年所學到的經驗,不得不說,有些實在不是那麼美好。
- 1. 不要高估聰明的價值
年輕的時候,如果你很聰明,你便可以遙遙領先其他人,如同小池塘裡的一隻大魚。如果你那半調子的口才很好的話,那麼聰明的功效還能加倍。事實上,聰明加上口才好能夠讓你不用念什麼書就順利度過高中跟大部份的大學課程。(不過你還是得念物理,你總不能說服一個等式轉彎)。
恭喜你,你很幸運,同時卻也十分不幸運。因為當你毫無阻礙的就衝過了求學的終點線,對待學習如反掌折枝。在這同時別人必須去學習勤勞、堅持、人際網路這些之後遠遠比學識更加重要的東西。
我們的社會太過重視聰明才智了。當我跟人們提到我以前專攻神經科學,大家都會說:「哇,你一定很聰明」。的確我不是笨蛋,但我知道很多人也許不如我這麼聰明,卻是遠比我好的神經科學家。
聰明才智當然還是能幫你打開一扇門,但絕不會幫你做好工作。勤勞、嚴謹、可靠的人際關係都是不只軟體工程師,而是你跨出研究所的美好泡泡之後要成為任何專家都必須擁有的特質。
- 2. 對你的專業感到驕傲、樂在其中
這句話可能有點老梗,但對年輕的你來說仍然很重要:無論你做的是什麼,都以它為傲,沒有任何事情應該只被視為達成目的的手段。
不論對象是人或是試管,你都必須嚴謹分析你的資料並使你的統計數據有效,然後再重來一遍,因為有時候你會發現你犯了哪些愚蠢錯誤。如果你無法樂在其中,僅把這些步驟視為出版論文或發行產品的必須過程,那麼你永遠無法真正擅長這件事。
如果你是寫軟體的,這代表你要規畫你的特色、研究現有的開源代碼、學習新的模型與程式語言、修復你的錯誤、重建程式碼並且維護它。如果你沒有想要精通你工作的野心,那無論你是科學家、工程是或是任何你在做的工作,可能都只是浪費時間。
你可以擁有一些「寵物計畫」,一些小小的、有點蠢的、並不一定能滿足你的即時目標、你只是因為「享受」在做這件事情。有趣的是,這在軟體社群裡似乎很常見:許多我們現今正在使用的產品大部分都來自某人的寵物計畫,而幾乎不是來自科學圈。我最喜歡的名言之一是來自奧地利動物學家 Konrad Lorenz:
「對一個研究科學家來說,每天早上吃早餐前都拋棄一個寵物假設是好的晨間運動。」
如果你覺得這聽起來很蠢,也許你不該當一個研究科學家。
- 3. 學習新工具
作為上一點的延伸:投注時間學習新工具。不只是拓展你的抽象知識,而是實際去學那些能幫助你完成事情的工具。這很快就能見效。
一個學習新工具的好方法是上述的「寵物計畫」。每次你要建造新東西時,也用新的方法建造它。記住,寵物計畫就是拿來失敗用的,你投資不多、你學到一點東西;如果計畫不成功,或是你失去興趣、或是你發現實在有點太難了,你不會有損失,不會傷到自己。
如果你從事學術工作,以下是我強力推薦的好東西:
(1) Git 跟 Github
Git 幫助你管理你的工作,再也不用擔心備份問題;而 Github 上有一堆很好用的程式碼,你不需要自己重造輪子。噢,請記得跟你的同伴再確認一次你的程式碼。絕對不要用程式碼來分析那些只有你看過的資料。(我不敢相信我得告訴你這件事情啊,年輕的自己。你一直以來都是一個好的程式編寫者,但我仍然做了那些可能會被忽視的錯誤。如果不是有再檢查一遍,我不會發現因為程式錯誤,有百分之三十的科學結果可能是假的。)
(2) 一個繪圖軟體
我通常都用 Inkscape,但標準的 Adobe Illustrator 跟新的 Sketch其實也一樣好。用這些繪圖軟體來先處理你的圖表和計畫,這通常都比你在 Matlab 或是 matplotlib 上寫繪圖指令來得容易。
(3) 學習如何有效的利用你的文字與代碼編輯器
Sublime Text 是個比 VIM 或