[心得] 獨立的完成專案告一段落了 然後呢?
Soft_Job 各位前輩好
先介紹一下自己,目前仍就讀某科大資管系
這篇文分類在心得,但是其實也是我對自己這段期間的紀錄和反省
希望能提供一些經驗參考,也希望能聽聽不同的意見
--
因緣際會進入一家新創實習做後端
說是實習但到後來因為做的事情比較多,所以薪水>正職
但這又是另外一回事,這邊就不多贅述
公司原本是在做 Asp.Net 的專案
但因為一些緣故所以後來轉換到 Django
因為我自己有摸過一些 Django 也有完成一些 Side Project
所以就由我領導整個新的專案
短期目標是用 Django 取代 Asp.Net 目前既有的功能
這個專案在我進去一個月後開始正式進行
其中做的東西真的是在我進去之前都想像不到而且也不會做的東西
但也只能夠邊做邊學
於是就從零開始,包括以下幾個東西:
0)資料庫
因為以前的資料庫真的太爛,許多重複欄位又沒有接外鍵
或是資料表名稱用複數啊,user拼成usr諸如此類的奇聞軼事
所以在這次移轉的時候同時也要做資料轉移到重新正規化好的資料庫
新的資料庫原先就有個依照舊系統所重構出來的基礎架構
但我負責的主要還是正規化跟依照需求規劃合適的架構
以及設置一些Trigger
在新資料庫有雛形後之後的全部都是由我處理的
1)各種系統
因為是從零開始,所以整個都打掉重練
包含會員系統、訂單系統、實時聊天、後台
會員系統的話麻煩的是在和微信提供的API做溝通
要處理蠻多文檔沒有的坑、提供接口來和微信那邊溝通
還有 Oauth 授權登入等等,反倒是公司對於會員系統的邏輯相對簡單
訂單系統也是串接淘寶那邊的SDK
包含因為淘寶那邊提供的Python SDK太爛只能自己改寫base要處理的一些東西
做到這裡給我最大的領悟是--原來最麻煩的是商業邏輯
實時聊天的話主要是用Django Channels來實現的
也熟悉WebSocket運作的方式
以上所提到的東西都是大略帶過,其中包含了一堆商業邏輯要處理
例如聊天就要被用來做用戶和客服溝通的管道
這中間又包含了很多客製化的功能,比較常見到的是
一個需求搞定後卻又因為對方原本以為不會改太多的地方而要大改
只能說習慣就好
2)新舊網站整合
因為新網站出來之後並不是馬上取代掉舊網站
而是不斷取代掉部分功能直到能勝任原本網站的功能
但是又夾雜著資料庫重構過的關係
user, order, product這些最主要的表都長得不一樣
也不可能同時用同一個資料庫,所以就各自用各自的資料庫
就用了一些方法讓兩邊資料庫能夠同步處理
3)上線到生產環境
在這家公司工作之前,我是完全沒有碰過AWS、GCP、Azure等等雲端供應商
也沒有玩過 Linux 環境,說要沒碰過也不算完全沒碰過
就是國小的時候電腦教室裝的是 Ubuntu ,玩玩 GUI 而已
當初很天真的想說,要 Run 起來是不是就像一般測試的時候一樣
一個 python manage.py runserver 指令就 OK 了
只是要在那台虛擬機上打這條指令就好
後來查了一下文檔,才知道事情不是這麼簡單
於是慢慢接觸到了 uWSGI、Nginx、Daphne
才去一點一點補足自己相關的知識
也曾經發生過虛擬機流出的 Port 從 1-65535 都是打開的
過了一個晚上之後流出將近 3TB 的 Data,然後收費是 $USD 0.15/GB
還好有及時補救,否則就要付了一筆學費
在這些過程中,和我合作的只有一位前端工程師
這個專案到現在已經邁入第四個月
也算是我第一個上線且規模相對較大的專案
或許在這之中會有很多的一些細節我疏忽了
或是我根本就不知道這樣做是不對的
但我覺得其實也還好有這次經驗,才能知道自己真正不足的地方
之前有因緣際會看到一篇在講有關「網頁開發技能樹」的
https://github.com/goodjack/developer-roadmap-chinese
分享給大家看看,或多或少會有些幫助
可以提供一些方向
最近令我困惑的點是,當我可以獨立做出一個專案後
我該往哪個方向繼續去前進,雖然東西真的太多學不完
很多時候也是要用到之後才去學去看
之後也因為生涯安排就不繼續這份工作了
只是希望能在之後還沒工作的時候能仍然持續前進
畢竟這幾個月會進步這麼多也是多虧這份工作
當然不是說做出一個專案就已經是什麼大神級人物了
希望有在這一步感到困惑過的前輩們能提供一些意見
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.41.177.32
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1540620930.A.46E.html
推
10/27 14:42,
5年前
, 1F
10/27 14:42, 1F
→
10/27 14:42,
5年前
, 2F
10/27 14:42, 2F
其實要談到品質要好,真的是牽扯到好多細節
在做這些東西的時候,一開始能動就是還可以,
但主要真正在優化的時候就是自己真正瞭解目前在做的東西是甚麼後
才能去針對有不必要的效能浪費或是過冗的Code修改
但我很同意你的說法 謝謝你
推 ernieyang09: 四個月 打掉資料庫 打掉系統 無縫接軌 這麼強@@? 10/27 14:53
→
10/27 15:01,
5年前
, 3F
10/27 15:01, 3F
→
10/27 15:02,
5年前
, 4F
10/27 15:02, 4F
謝謝樓上兩位前輩
但我必須就兩點回覆
1. 打掉資料庫
其實也不算完全打掉,交接的時候有交接到基礎重構後SQL句
但後來因為需求的關係所以其實之前的很多欄位是不必要的
因為重構後也只是針對舊系統的資料庫重構
對新系統來說是不必要的
2. 打掉系統
說要打掉系統也不是,因為有些東西還是可以參考用
像是調用微信API,雖然舊專案的在調用API那邊的註解幾乎沒有
但在自己對微信SDK有些瞭解之後,如果遇到卡關的話
去看看舊專案,其實是有很大的幫助的
可以幫助自己很快理清邏輯部分,也可以避免掉一些地雷
3. 無縫接軌
其實新舊系統部分的話,主要要接合的地方也就只有會員資料要同步而已
因為在那之前都已經轉移好了,除了只要是訂單相關的資料表全部捨棄
畢竟新舊訂單型態差太多了
4. 薪水
薪水固然是一種能力的依據,但是我比較想瞭解的是
除了薪水,我能在這塊領域上加強的還有什麼
謝謝兩位的意見!
推
10/27 15:09,
5年前
, 5F
10/27 15:09, 5F
對!資安感覺是台灣公司很少注重的一塊
雖然我是資管的,但坦白而言,也就是對一些攻擊手法
EX: SQL Injection、XSS Attack…有碰過一點
大多數還是只有聽過而沒有實際玩過
感謝你提供我一個很棒的方向!
→
10/27 15:09,
5年前
, 6F
10/27 15:09, 6F
功能有以下幾項:
1. 結合微信手機及電腦授權登入到自身的資料庫做會員系統
2. 會員權限控管
3. 聊天室加上一些外加功能
4. 微信模板消息發送
5. 訂單系統(結合淘寶API),包含前後台
並不是把舊專案所有的功能都移轉,只是先把主要的功能開發出來而已
其實花比較多時間在於討論需求及修改
以上我就不一一詳細敘述了!
推 MixBear: 目前系統穩定了嗎?四個月無縫不是系統太小就是還有地雷 10/27 15:10
→
10/27 15:10,
5年前
, 7F
10/27 15:10, 7F
推
10/27 15:10,
5年前
, 8F
10/27 15:10, 8F
→
10/27 15:11,
5年前
, 9F
10/27 15:11, 9F
→
10/27 15:13,
5年前
, 10F
10/27 15:13, 10F
推
10/27 15:13,
5年前
, 11F
10/27 15:13, 11F
MixBear:
系統目前算是穩定,但還沒上線太久所以沒辦法說準
地雷我想肯定是有的,有時候思路沒那麼清楚
只是我能盡量減少的就一定會盡力
系統目前來說以各位來說可能算小,
但對我來說算是第一個比較有架構的專案
也謝謝你的肯定!
→
10/27 15:14,
5年前
, 12F
10/27 15:14, 12F
MacPerson:
好的,我想我會繼續把這專案做延伸
對我來說的確是一個很好的經驗
Python 的話我可能會篩一下路
畢竟我對數學的東西有點苦手 或是說比較沒興趣
至於要往人少的地方…這個感覺需要運氣
就看看之後有沒有緣分了
推
10/27 15:45,
5年前
, 13F
10/27 15:45, 13F
→
10/27 15:46,
5年前
, 14F
10/27 15:46, 14F
感謝你的建議,我可能沒法擔當
但就維護上面,不論是註解或專案架構
我都有依照之前文件訂下來的規範加上自己依照情境來做
不知道你從文章哪裡得知我說嘴寫出沒人可維護的程式
推
10/27 15:46,
5年前
, 15F
10/27 15:46, 15F
但如果要我說出完成度,也會跟每個人心中的那把尺不一樣
所以我就以我自己做完的這部分叫做完成,畢竟很難量化
→
10/27 16:06,
5年前
, 16F
10/27 16:06, 16F
推
10/27 16:32,
5年前
, 17F
10/27 16:32, 17F
→
10/27 16:32,
5年前
, 18F
10/27 16:32, 18F
推
10/27 16:35,
5年前
, 19F
10/27 16:35, 19F
抱歉可能太以偏概全,但我聽到蠻多間公司
因為例如GDPR這種東西,硬是找了個資訊部門的主管或是某某某來當資安長
美其名是資安長,但真正要找人手來幫忙還是從資訊部門調
→
10/27 16:35,
5年前
, 20F
10/27 16:35, 20F
→
10/27 16:36,
5年前
, 21F
10/27 16:36, 21F
真的,感同身受,許多踩坑文真的讓我省了很多時間
推
10/27 16:38,
5年前
, 22F
10/27 16:38, 22F
→
10/27 16:38,
5年前
, 23F
10/27 16:38, 23F
→
10/27 16:38,
5年前
, 24F
10/27 16:38, 24F
瞭解,其實應該是我用詞錯誤,不該是完成而是告一段落
但是你上面說的跨部門那些其實在我現在工作的地方是比較少機會接觸到的
謝謝你的建議
※ 編輯: rich197088 (114.41.177.32), 10/27/2018 16:46:17
※ 編輯: rich197088 (114.41.177.32), 10/27/2018 17:11:40
推
10/27 17:20,
5年前
, 25F
10/27 17:20, 25F
好的,CI/CD其實現在有在做
但是都是半調子,這個會再去加強
推
10/27 17:32,
5年前
, 26F
10/27 17:32, 26F
→
10/27 17:32,
5年前
, 27F
10/27 17:32, 27F
是啊,總之還是需要使用者提供一些意見才能知道是不是一切正常
推
10/27 19:55,
5年前
, 28F
10/27 19:55, 28F
當初真的沒有想到還有測試案例,是一大疏失啊…
推
10/27 20:23,
5年前
, 29F
10/27 20:23, 29F
推
10/27 20:26,
5年前
, 30F
10/27 20:26, 30F
推
10/27 20:46,
5年前
, 31F
10/27 20:46, 31F
→
10/27 20:48,
5年前
, 32F
10/27 20:48, 32F
是啊,就算註解有都註明到了,但還是不如測試來得直覺
推
10/27 23:06,
5年前
, 33F
10/27 23:06, 33F
也是可以從其他同事做的東西學習!
推
10/27 23:24,
5年前
, 34F
10/27 23:24, 34F
→
10/27 23:24,
5年前
, 35F
10/27 23:24, 35F
→
10/27 23:24,
5年前
, 36F
10/27 23:24, 36F
→
10/27 23:26,
5年前
, 37F
10/27 23:26, 37F
→
10/27 23:26,
5年前
, 38F
10/27 23:26, 38F
瞭解你的意思了,謝謝你給的意見
在之前我還以為只要註解打詳細點、架構寫清楚,這幾樣就夠了
後來去查了一些相關資訊才發現自己不懂的眉角還是很多
感恩!
→
10/28 15:05,
5年前
, 39F
10/28 15:05, 39F
→
10/28 15:05,
5年前
, 40F
10/28 15:05, 40F
→
10/28 15:05,
5年前
, 41F
10/28 15:05, 41F
→
10/28 15:07,
5年前
, 42F
10/28 15:07, 42F
→
10/28 15:07,
5年前
, 43F
10/28 15:07, 43F
好的,謝謝你
噓
10/29 20:33,
5年前
, 44F
10/29 20:33, 44F
※ 編輯: rich197088 (122.116.125.61), 10/29/2018 22:00:31
推
11/14 00:28,
5年前
, 45F
11/14 00:28, 45F