肖威洞察 | Ruby on Rails 新手自學的各種血淚與經

2019-02-04  本文已影响22人  2039c142a8d1

# Ruby on Rails 新手自學的各種血淚與經驗分享

嗨,大家今天過得好嗎?作為一名剛搞懂寫程式大概是在幹麻的新手,今天也是為了coding充滿各種煩惱:(

我是阿川在翻譯公司時的前同事,專業領域是商業與技術文件英中翻譯。跟他提到想學程式好久了,因為討生活的壓力、個人的懶散還有學習策略的失誤,到最近才稍微有一點成果。我在學習過程中因為算半個新手個性又急躁,並未完全 follow 轉個彎教室系列教材,甚至選的架構正是對自學新手而言頗有爭議的 Ruby on Rails,但在看這些教材跟阿川提到的各項補充資料時,還是獲得許多啟發。

因為之前喜歡用文字記錄旅程,剛好最近求職時人資姐姐提到「......(個人資料)越詳細越好」,於是想來記錄這趟艱辛但有趣的旅程,還有跟其他新手們分享我在過程中犯了哪些錯以及如何改進。以下觀點極為主觀,但就新手而言應該會是不錯的參考資料。

現在努力轉職中,如果有人看了這篇覺得我很有趣想把我撿去上班,非常歡迎喔~

因為想要盡可能詳細整理自己這段時間以來的想法,全文可能極長。大綱如下:


[我目前的成果] 網站作品:

這個網站是前公司產品官網 (https://www.jumpfrompaper.com/) 的仿製品。主要想展現與學習的功能是商品陳列 (shop→first three collections only)、購物車、下訂單的過程,前端的排版並不是我想學習的重點,因此商品系列以外的靜態網頁是直接連回原站。 從這個作品中,我主要學到的知識是:

  1. 怎麼配置自己順手的 Rails 環境。我現在的習慣是:
    • 前端使用 Webpacker + Vue+ Bootstrap-Sass
    • 用 Foreman 跟 Guard 做到 hot-reloading 跟 HMR (hot module replacement)
    • 資料庫一開始是用 SQLite,現在會盡量用 PostgreSQL。
  2. wireframing 跟網站架構設計,喜歡清單、圖表跟 user story 並行
  3. Rails 整個開發流程跑過一遍,包含部署到 Heroku
  4. 基本的 Bootstrap 排版,版面盡量使用 container
  5. 購物車類型網站的大致流程
  6. JS的基本應用,還有如何發 ajax request

任務管理網站。主要功能是記錄任務各項資料 (包含內容、時限、狀態、優先度、完成時間等) 、幫任務加標籤、會員與會員管理、搜尋(可依任務內容與標籤)等。因為上一個網站的前端有其範本,架構跟商業邏輯也只要照抄就好,這個網站我想在有限的提示下自己進行設計。從這個作品中,我主要學到的知識是:

  1. 會員登入
    前一個作品為求簡便,只以email進行訂單查詢;因為設計品的回購率相對較低,需要記錄的會員資料相對較少,這麼做雖然便宜行事但應該實務上也不太會有問題。到了這個作品就主要用 session 作為會員機制。為求快速方便只以明碼傳密碼,若要實做應該會加上 bcrypt。
  2. 用 Ruby 搭配SQL query簡單實做了搜尋功能。
  3. 更熟悉 model 間的關聯,應已熟練掌握CRUD
  4. Linux開始上手
    在前一個專案期間因為防火牆設定問題,還有自己的不熟練,開發用系統頻頻出問題。到這個專案時已經能夠妥善駕馭 Linux。
  5. 部落格類型網站的大致流程

[我現在會的技能]

[學程式的目標]
成為網路後端工程師。
想要用數位行銷跟資料分析作為加分技能。
喜歡使用簡潔漂亮並而且邏輯經過精心設計的網站 (eg. Pinkoi),但對自己動手做視覺規畫非常不耐煩, 所以可以做一點點前端但不喜歡主要做前端。

[為什麼想學程式 (網站後端)]
如果我說是小時候的夢想,會不會太矯情XD
在翻譯業磨光熱情後,覺得自己既然已經證明可以在社會上存活了, 是時候思考人生的下一步,應該要試著追尋看看自己的"夢想", 實驗失敗的話大不了做翻譯一輩子了。
在被寫程式密集折磨了兩三個月之後,確定自己果然很喜歡規劃程式架構跟解決問題的感覺,而不只是小時候的幻想而已。

選擇網站後端其實算是求職考量之一。因為網路領域入門門檻相對較低,職缺數相對較多,對非本科系來說相對有利;而想選擇後端是因為喜歡抽象思考,對前端要自己實做各種視覺效果感到很不耐煩。若是程式技能再跟我原有的行銷知識搭配,會二轉成前景無限驚人的「成長駭客」。因此以後可能會想嘗試看看資料分析領域,但得等到我的後端技能穩定之後了。

[為什麼選擇 Ruby on Rails 生態系]
因為潮(X) 因為理念跟設計哲學(O)
現在好像JS生態系更潮了而且職缺多非常多,但在實際接觸過之後,並沒有讓我想往JS生態系靠攏。
其實當初有考慮過 Python,但因為台灣的 Python 後端職缺太少,覺得還是選 Ruby on Rails 好了。
而且 Ruby 的開發理念是讓人開心寫程式,寫起來又「像說話一樣」,非常吸引喜歡文字的小文青。

[為什麼選擇自學而沒有去上課]
因為沒錢 (X)
因為對自己的自學能力、電腦基本知識跟英文能力有絕對的自信,這行也需要證明自學能力 (O)

[我的簡歷]

[學習時間線]

[我可能犯了什麼錯]

[我可能做對了什麼事]

[所以學程式可能需要哪些特質,需要天份嗎?]
我完全同意阿川: 不需要天份。只需要喜歡解決問題,掌握解決問題的思路跟方法就好。
http://blog.turn.tw/?p=2683

甚至有業界講師認為,只要你會煮飯,就一定會寫程式。 當然只是舉例啦,不會煮飯也沒關係的。
https://www.udemy.com/if-you-can-cook-you-can-code/

我在學習過程中,體會到對學程式有幫助的特質有:

當然如果你的數學非常強 (算是天份的一部份吧),那會讓你在演算法,特別是機器學習跟AI領域有機會成為世界級的工程師。但對於大部份的程式工作而言,很多演算法與程式邏輯可能都有人寫成現成的工具了,只要有尚可的邏輯能力能夠加以應用就好,也就是能夠清楚掌握一個行為的前因後果,其他的入行後想再加強可能都是來得及的。

[學網站開發可能需要盡早掌握哪些工具]

以上是這個階段的心得,什麼都想講但又怕寫太多,畢竟這是個對長篇文字沒耐心的時代@@
還有哪些方面好奇的話,歡迎提出來跟大家一起分享~

上一篇下一篇

猜你喜欢

热点阅读