[心得] 獨立的完成專案告一段落了 然後呢?

看板Soft_Job作者 (Jasper)時間5年前 (2018/10/27 14:15), 5年前編輯推噓17(18126)
留言45則, 19人參與, 5年前最新討論串1/1
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
慢慢磨出來, 才把整個django摸熟.. 熟到應該可以出書..
10/27 15:11, 9F

10/27 15:13, 5年前 , 10F
django能玩就繼續玩,往python走, 我知道人多的地方,
10/27 15:13, 10F

10/27 15:13, 5年前 , 11F
但不管系統大小,這都是不錯的成長經驗XD
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
我對於接大陸的API文檔總是東缺西缺的已經習慣了
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
ci/cd? docker/k8s?
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
#1RqTlie7 (Soft_Job) 最底下的推文有說可以精進的方向
10/27 20:26, 30F

10/27 20:46, 5年前 , 31F
補CI CD, test case要多寫 否則之後還是有人要重寫你系統
10/27 20:46, 31F

10/27 20:48, 5年前 , 32F
有測試涵蓋到的 是資產 反之是債
10/27 20:48, 32F
是啊,就算註解有都註明到了,但還是不如測試來得直覺

10/27 23:06, 5年前 , 33F
羨慕推,我去的實習只給我做小小的東西而已QQ
10/27 23:06, 33F
也是可以從其他同事做的東西學習!

10/27 23:24, 5年前 , 34F
簡單說,如果你做的這些你離職同事還可以接手,這是判斷
10/27 23:24, 34F

10/27 23:24, 5年前 , 35F
一個專案好壞的方法,否則只會變成legacy code,下一個人
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
回原po,與其等別人測到問題,有時間不如拿自己寫的腳本
10/28 15:07, 42F

10/28 15:07, 5年前 , 43F
去打過自己的網站才能更快看到問題
10/28 15:07, 43F
好的,謝謝你

10/29 20:33, 5年前 , 44F
然後去GOOGLE 面試看看你就知道自己缺啥了
10/29 20:33, 44F
※ 編輯: rich197088 (122.116.125.61), 10/29/2018 22:00:31

11/14 00:28, 5年前 , 45F
你實習的公司名字是D開頭嗎
11/14 00:28, 45F
文章代碼(AID): #1Rr0A2Hk (Soft_Job)