程序猿
言程序
魯蛇的人生
吳欣展
pcbill
https://www.facebook.com/pcbill
學歷
重考大學
暨大資工系
台大資訊網路與多媒體研究所
學歷重要嗎?
只是職涯入門票
黃敬群 (Jserv)
唐鳳 (Audrey)
王景弘 (Tonyq)
課程
作業 = 修練
程序猿的養成靠修羅般的試煉
實作 實作 再實作
論文
利用無線射頻辨識技術輔助之物品位置追蹤系統
http://mll.csie.ntu.edu.tw/papers/thesis_shinjan_2006.pdf
困難

程序猿養成

Learning Curve

Snippet
Program
Software
System

演進
低階
高階
結構化
物件導向
函數式(Functional)
種類
編譯式
直譯式
投資選擇
函式庫
社群
語法
基本邏輯流程控制
Branch
if
switch
Loop
while
if
橫向理解程式之美
for loop
String[] collection = new String[]{ "v1", "v2" };
for (int i = 0; i < collection.length; i++) {
System.out.println(collection[i]);
}
JAVA 1.5
// List<String> collection = new ArrayList<>();
List<String> collection = Arrays.asList( "v1", "v2" );
for (String element: collection) {
System.out.println(element);
}
for (Iterator<String> i = collection.iterator(); i.hasNext();) {
String item = i.next();
// do something ....
}
Python
for num in range(x): print num for char in string:print charfor element in collection:print element
JAVA 8
List<String> collection = Arrays.asList("v1", "v2");
collection.forEach(System.out::println);
Collection Stream
JAVASCRIPT
var collection = ["v1", "v2"]; collection.forEach(new function(element) {console.log(element); });
數列相加
for solution
Functional Way
sum[] = 0 sum(x:xs) = x + sum xs sum[1, 2, 3] = 1 + sum[2, 3] = 1 + (2 + sum[3]) = 1 + (2 + (3 + sum[])) = 1 + (2 + (3 + 0))= 6
業界經驗
中研院(準公務機關)
力可科技(小資本遊戲小公司)
摩鉅科技(大資本遊戲中公司)
台灣大哥大(非資訊典型大公司)
緯創資通(大公司)
中研院
中央研究院國家基因型鑑定中心生物資訊軟體工程師
第一份
準公務機關
生物資訊 / web application 工具
Totibase
http://totibase.ngc.sinica.edu.tw/totibase/index.html
開發模式
Pair Programming
TDD
工具
Eclipse IDE
Unit Testing
CI Server
Jira
Subversion
流程
研究人員訪談確認需求
pair 開發
文件/程式版控
CI automation
釋出/部署
力可科技
小資本遊戲小公司
朋友公司 - 社群認識
相處融洽
嘎姆擂台/cubie
http://tw.gamelet.com/games.do
http://cubie.com/
開發模式
Ticket Assignment
Pair programming
工具
Eclipse IDE
Flash platform
CI Server
Hudson / Jenkins
Trac
Subversion
流程
同事成員開會需求發想
pair 開發
文件/程式版控
釋出/部署
摩鉅科技
大資本遊戲中公司
需要三方專長高度合作
專案為主體
Junkfoodian
http://www.gamebase.com.tw/forum/608/topic/91062707/
開發模式
即時
計畫趕不上變化, 變化趕不上長官一句話
雲端
工具
Eclipse IDE
Linux Command
Subversion
流程
老闆指定
開發
文件/程式版控
釋出/部署
開發
文件/程式版控
台灣大哥大
大公司人員眾多
跨部門合作
小組主體
myVideo / myBook
http://www.myvideo.net.tw
http://mybook.taiwanmobile.com
開發模式
不停開會
需求-確認
重維運
看重程序
工具
Eclipse IDE
Linux Command
email
Subversion
流程
加值同仁需求
PM 確認需求
開發
文件/程式版控
編譯釋出
維運同仁部署
開發
文件/程式版控
緯創資通
大公司高雄分部
專案為主體
自有軟體開發流程
MDM、台北酷課雲
開發模式
遵循開發流程
積極引用軟體開發工具
Ticket Assignment
重視專案開發計畫
工具
Intellij / Eclipse
Java platform
CI Server
Jenkins / Sonarqube
Gitlab issue system
Git
Gradle / Maven
流程
PM 確認需求
RD 開發
文件/程式版控
編譯釋出 / 發布
維運同仁部署
RD 開發
文件/程式版控
比較
開發工具
專案管理
資源管理
開發工具
Eclipse IDE
coding/debug/deployment
Intellij
Vim
專案管理
需求確定 / 時程規劃
Email
issue/ticket system
Trac, Gitlab issue, Jira, Redmine
資源管理
源碼 / 文件
Subversion
Git
Gradle / Maven repository
Code Review
Code Review 指引 - OpenFoundry
http://www.openfoundry.org/tw/tech-column/9225-code-review-
Bug 越晚修復,成本會越高
種類
會議
投影/公開解說
工具
-
issue/ticket system
- diff
- 靜態分析 - findbug
- 撰寫測試程式
軟體開發修煉建議
團隊
個人
團隊
就業
人與人
建議
使用源碼版控
運用 issue/ticket 系統
Cl
Gradle / Manven repository
引進測試流程
個人
求學階段
解題
資訊社群
建議1/2
加強英文
Vim
Script
bash / python / perl
建議2/2
Coding Style
增進閱讀性, 降低維護成本
參與社群/年會
COSCUP/ OSDC/ MOPCOM / KALUG / TOSUG / g0v
組隊競賽
Hackthon
深入測試
單元測試
TDD / BDD
重構
不新增功能
馬上實行單元測試
業界軟體開發模式
By pcbill
業界軟體開發模式
- 1,090

