大家常說找工作是雙向的
公司面試你,你也面試公司
分享一下我在面試時
比較看重的開發規範

是否有四個開發環境

所謂的四個環境是指
Local, Stage, Uat, Production
Local資料是否通Stage
Uat資料是否通Production
程式是否都可以local run起來

以上答案太多否的話
開發以及維運的時間會大幅增加
不管是驗證新功能
或是偵錯舊有的程式碼

另外也可以問一下
Build一次專案大概多久
30秒還是30分鐘
這個也是差滿多的

有沒有版控,一個專案多少人開發

雖然沒遇過不用版控的公司
但保險起見還是問一下
git的話,svn也行
不要是資料夾加日期做版控就好

專案的開發人數也滿重要的
如果一個專案
超過三人同時開發
會有非常多困擾

衝突解不完,Bug不知道是誰的
擔心自己的Code
被帶上Production之類的
看過人月神話的都知道
不是人越多就越好

有沒有CI/CD

這個就不用說了
現代軟體開發必備技能
不強求每個專案都有
但是對於頻繁修改的專案
CI/CD可以說是不可或缺

講究一點甚至還會做Roll back機制
出大包的時候可以快速退版
因為如果是手動退版的話
容易忙中出錯

有沒有Log機制,如ELK

這邊說的Log不是說有埋就好
而是要有Kibana這種GUI操作介面
可以直接在網頁做搜尋

通常Stage, Uat都只會部屬到一台機器
所以把Log資料夾開成共享就可以了
但是Production都是部署到多台
一定需要ELK這種服務
來做Log的蒐集和查詢
Debug才會方便

當然,如果你天生神力
使用grep查Log跟喝水一樣輕鬆
請忽略這一題

有沒有文件紀錄系統,如Jira

軟體公司的人來來去去
留下來的除了程式碼
再來就是文件了
前人花個半小時紀錄的文件
可能節省後人半天的查Code時間

有沒有DBA

如果你是前端,可以忽略這題
這個也是保險起見問一下
我待過的公司都有兩位以上DBA

程式的Bug好解決
資料不見或是改錯
是真的會出大事的
有DBA多一層把關
總是會比較放心一點

如果沒有的話
那最好確認一下同事都是資深的
至少知道Sql不要寫 select *

結論

以上問題我覺得是基本配備
就跟痛苦指數量表一樣
一個答案填否
開發的痛苦指數就會飆升不少

其他的我覺得就隨緣
也就是所謂的Good to Have
如單元測試、整合測試
TDD,DDD
Code Review、技術分享會
容器化、k8s或是上雲等等

當然這些都是我個人的偏好
或許有人覺得單元測試是Must Have
沒有容器化的公司不該去

但一樣是那句老話
沒有完美的公司
只有最適合的公司

以上分享僅供參考
最重要的還是了解自己
想要去什麼樣的公司
才會知道要問什麼問題