工作甘苦談文章

熱門社群 升學媒體人秘書HR百貨行銷醫護觀光餐旅
職務大辭典 » 職務中類表 » 軟體工程 » 軟體工程師 » 一個學寫程式的警世故事
職務定義:
薪資平均範圍:
薪資職能報告
工作年資 1年以下 1~3年 3~5年 5~7年 7年以上
平均薪資 年資1年以下 : $38,265 年資1~3年 : $40,992 年資3~5年 : $44,679 年資5~7年 : $49,212 年資7年以上 : $52,096
  1. 參與軟體工程系統的設計、開發、測試
  2. 協助工程管理人保證專案的品質,負責工程中主要功能的代碼實現
  3. 解決工程中的技術難題和關鍵問題
  4. 教導、指導程式工程師
  5. 協調各個程式工程師的工作,並能與其他軟體工程師協作
  6. 軟體工程師平均年薪為人民幣5~10萬元
主題:

一個學寫程式的警世故事

我是一個普通的上班族,平時穿西裝、坐辦公室,過著朝九晚五的生活,但腦裡一直有個模糊的創業想法。有一天我無意間在酒吧聽到隔壁桌的客人大肆討論著他藉由「Ruby」來自動化他的日常工作、大大提高了工作效率。我心想:「『Ruby』,是吧?」回家後我立馬上網搜尋「Ruby」,十五秒後我已經開始學起程式語言 Ruby 了。

一個星期後,我參加了人生中第一個駭客空間(Hackerspace),聽大家討論著程式語言像是 Scala、Clojure 跟 Go,太多新知需要吸收了,當天我抱了三本厚厚的程式語言書回家看,每本都看了 50 頁左右。

身邊的一個朋友聽到我在學程式語言,他建議我應該要先把 Emacs 學好,在我學 Emacs 時,另一個朋友走過我身邊發現我在用 Emacs,他跟我說:「你怎麼會選用 Emacs 呢?!難道你不知道 Vim 比較好?」

於是我開始記 Vim 的鍵盤指令,這個時候的我覺得「下指令下得越快= 寫程式寫得越快」,還甚至因此換了 Dvorak 鍵盤 —— 程式開發者公認最有效率的鍵盤。

一段時間後,我已經用 Linux 作業系統用得很順手,還在 Udacity 上學習 Python。經過七個月的自學,我應徵上人生第一個「軟體工程師」職位。

公司那時決定用 Ruby on Rails 來構建他們的產品,雖然我不會 Ruby on Rails,但公司認為我既然能自學 Python 跟 Django 並贏了一次駭客松,我自然也有能力學好 Ruby on Rails。

前幾個星期對我而言非常的難熬,並不只是因為我要學習一個全新的程式語言、熟悉一個全新的開發環境 RubyMine(整合開發環境,IDE)、而且跟一個陌生的團隊合作,真正讓我覺得痛苦難熬的是:

我發現過去是我自己選了一條特別艱難的路來折磨自己 。

在自學的那段時間,我花了幾個月獨自坐在圖書館跟咖啡廳裡專研如何在命令列環境下安裝工具、debug Linux 系統問題,有時因為一個漏寫的括號、分號而卡了老半天,我修了無數個 MOOC 課程,但一直到了第五個月我才真正有點「作品」可以放到網路上,這些過程讓我相信程式開發是個永無止境的掙扎之路。

結果看看我身邊的同事們,他們幾乎很少因為語法錯誤、打錯字、漏了個符號這種小事而卡關,因為他們的 IDE 都先把這些錯誤抓出來了;當遇到問題掙扎幾分鐘還解不出來時,他們會直接把問題丟給朋友,互相幫忙 debug;在開發程式時,他們總是在對方的位子隨性的來來去去互通有無。

我的隊友他們十分忠於「自己的一套工具」,當然在許多場合(例如駭客松)裡他們應該都曾玩過許多不同語言、不同框架,但 他們主要專注於精進自己現有的工具技能,對於能夠允許進入他們腦中「程式庫」的知識,他們的態度相對保守 。

就跟 ThoughtBot 等平台一樣,開發者只固定用少數但有效率的工具鏈(在這個例子裡,Rails, Vim, Postgres 跟 Redis),當開發者們只要全心全意的「用好」幾種關鍵工具時,他們全都成了可以互相合作溝通無障礙的專家。

所以我真正的問題是,如果限制一個團隊的軟體工程師使用同樣幾種固定工具可以讓他們擁有超高生產力,那學習寫程式的新手不也是在只學固定幾樣工具的時候能夠學得最好嗎?

其實線上的各種程式語言學習平台、程式營也是這樣教的,雖然聽起來理所當然,但是當你是一個人去面對這麼多的選項時,真的很難選擇該學哪一樣!我懂,因為我就是這樣經歷過來的,像是小狗在十字路口追逐來來往往車子一樣,追著一台又去追另一台,不斷的在原地漫無目的地橫衝直撞。

一名真正優秀的軟體工程師,他的知識領域應該是「T」字型的 —— 對任何領域都稍有涉獵但至少在某一方面專精到底。

結果在幾個月的埋頭苦幹之下,我發現我自己是條底線「_」...。

在我遇過跟我一樣情形的程式自學者們(我遇到非常多),其中大概多數人都在這樣的過程中喪失信心、迷失方向,甚至放棄了成為軟體工程師的目標,我不希望這些情況發生在你們身上。

學程式語言需要你「一心一意」

廢話就不多說,在此分享幾個我認為程式新手最容易犯的錯誤給你們參考:

語言、框架、工具,一個換過一個,而且妄想著自己能夠每樣都精通。

死守著自己「特製」的開發環境,死都不肯嘗試一些「現代工具」—— 被發明來方便開發者們合作交流程式碼、還可以自動除錯、自動填寫的神器。

在還沒把基礎打好時,就想嘗試一些新興的工具,像是 Docker 或 Famo.us 等。

如果以過來人的身份給你們一個最重要的建議,那就是:「請一心一意」。

我也想問,如果你正在學程式的話,你認為你的學習計畫夠「一心一意」嗎?如果你的答案是肯定的,那就不用再往下看下去了,快回去唸書實行你的計畫吧!因為我並不想給一些會影響你現在計畫的建議。如果你的答案是否定的,那沒關係,好消息是你可以從現在開始「一心一意」。

轉載自:INSIDE
一個學寫程式的警世故事
職務類別:軟體工程師   職稱:軟體工程師   相關職缺:電腦軟體相關  軟體工程師
我是一個普通的上班族,平時穿西裝、坐辦公室,過著朝九晚五的生活,但腦裡一直有個模糊的創業想法。有一天我無意間在酒吧聽到隔壁桌的客人大肆討論著他藉由「Ruby」來自動化他的日常工作、大大提高了工作效率。我心想:「『Ruby』,是吧?」回家後我立馬上網搜尋「Ruby」,十五秒後我已經開始學起程式語言 Ruby 了。

一個星期後,我參加了人生中第一個駭客空間(Hackerspace),聽大家討論著程式語言像是 Scala、Clojure 跟 Go,太多新知需要吸收了,當天我抱了三本厚厚的程式語言書回家看,每本都看了 50 頁左右。

身邊的一個朋友聽到我在學程式語言,他建議我應該要先把 Emacs 學好,在我學 Emacs 時,另一個朋友走過我身邊發現我在用 Emacs,他跟我說:「你怎麼會選用 Emacs 呢?!難道你不知道 Vim 比較好?」

於是我開始記 Vim 的鍵盤指令,這個時候的我覺得「下指令下得越快= 寫程式寫得越快」,還甚至因此換了 Dvorak 鍵盤 —— 程式開發者公認最有效率的鍵盤。

一段時間後,我已經用 Linux 作業系統用得很順手,還在 Udacity 上學習 Python。經過七個月的自學,我應徵上人生第一個「軟體工程師」職位。

公司那時決定用 Ruby on Rails 來構建他們的產品,雖然我不會 Ruby on Rails,但公司認為我既然能自學 Python 跟 Django 並贏了一次駭客松,我自然也有能力學好 Ruby on Rails。

前幾個星期對我而言非常的難熬,並不只是因為我要學習一個全新的程式語言、熟悉一個全新的開發環境 RubyMine(整合開發環境,IDE)、而且跟一個陌生的團隊合作,真正讓我覺得痛苦難熬的是:

我發現過去是我自己選了一條特別艱難的路來折磨自己 。

在自學的那段時間,我花了幾個月獨自坐在圖書館跟咖啡廳裡專研如何在命令列環境下安裝工具、debug Linux 系統問題,有時因為一個漏寫的括號、分號而卡了老半天,我修了無數個 MOOC 課程,但一直到了第五個月我才真正有點「作品」可以放到網路上,這些過程讓我相信程式開發是個永無止境的掙扎之路。

結果看看我身邊的同事們,他們幾乎很少因為語法錯誤、打錯字、漏了個符號這種小事而卡關,因為他們的 IDE 都先把這些錯誤抓出來了;當遇到問題掙扎幾分鐘還解不出來時,他們會直接把問題丟給朋友,互相幫忙 debug;在開發程式時,他們總是在對方的位子隨性的來來去去互通有無。

我的隊友他們十分忠於「自己的一套工具」,當然在許多場合(例如駭客松)裡他們應該都曾玩過許多不同語言、不同框架,但 他們主要專注於精進自己現有的工具技能,對於能夠允許進入他們腦中「程式庫」的知識,他們的態度相對保守 。

就跟 ThoughtBot 等平台一樣,開發者只固定用少數但有效率的工具鏈(在這個例子裡,Rails, Vim, Postgres 跟 Redis),當開發者們只要全心全意的「用好」幾種關鍵工具時,他們全都成了可以互相合作溝通無障礙的專家。

所以我真正的問題是,如果限制一個團隊的軟體工程師使用同樣幾種固定工具可以讓他們擁有超高生產力,那學習寫程式的新手不也是在只學固定幾樣工具的時候能夠學得最好嗎?

其實線上的各種程式語言學習平台、程式營也是這樣教的,雖然聽起來理所當然,但是當你是一個人去面對這麼多的選項時,真的很難選擇該學哪一樣!我懂,因為我就是這樣經歷過來的,像是小狗在十字路口追逐來來往往車子一樣,追著一台又去追另一台,不斷的在原地漫無目的地橫衝直撞。

一名真正優秀的軟體工程師,他的知識領域應該是「T」字型的 —— 對任何領域都稍有涉獵但至少在某一方面專精到底。

結果在幾個月的埋頭苦幹之下,我發現我自己是條底線「_」...。

在我遇過跟我一樣情形的程式自學者們(我遇到非常多),其中大概多數人都在這樣的過程中喪失信心、迷失方向,甚至放棄了成為軟體工程師的目標,我不希望這些情況發生在你們身上。

學程式語言需要你「一心一意」

廢話就不多說,在此分享幾個我認為程式新手最容易犯的錯誤給你們參考:

語言、框架、工具,一個換過一個,而且妄想著自己能夠每樣都精通。

死守著自己「特製」的開發環境,死都不肯嘗試一些「現代工具」—— 被發明來方便開發者們合作交流程式碼、還可以自動除錯、自動填寫的神器。

在還沒把基礎打好時,就想嘗試一些新興的工具,像是 Docker 或 Famo.us 等。

如果以過來人的身份給你們一個最重要的建議,那就是:「請一心一意」。

我也想問,如果你正在學程式的話,你認為你的學習計畫夠「一心一意」嗎?如果你的答案是肯定的,那就不用再往下看下去了,快回去唸書實行你的計畫吧!因為我並不想給一些會影響你現在計畫的建議。如果你的答案是否定的,那沒關係,好消息是你可以從現在開始「一心一意」。

轉載自:INSIDE
相關甘苦談連結