Top Banner
軟軟軟軟軟軟軟 Gelis 軟軟軟軟 (FB 軟軟 ) https://www.facebook.com/groups/361804473860062/
32

軟體開發之路甘苦談(Gelis)

Mar 21, 2017

Download

Software

Gelis Wu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 軟體開發之路甘苦談(Gelis)

軟體開發之路甘苦談Gelis

軟體開發之路 (FB 社團 )https://www.facebook.com/groups/361804473860062/

Page 2: 軟體開發之路甘苦談(Gelis)

• 熱衷於 OOA/OOD/OOP 與 UML 塑模化應用程式設計、軟體工程相關應用• 喜歡程式設計、擅長 ASP.NET Web Form, MVC,

WCF, Windows Form/WPF/WCF 開發、也實作過一些專案• 善於 Trouble-shooting 程式設計的各種疑難問題

吳俊毅 Gelis 集英信誠 - 資深 .NET 開發顧問

關於我

• 部落格 (Gelis 技術隨筆 ) https://www.dotblogs.com.tw/gelis/• FB 粉絲團 (Gelis 的程式設計訓練營 ) https://www.facebook.com/gelis.dev.learning/?ref=bookmarks• FB 社團 ( 軟體開發之路 ) https://www.facebook.com/groups/361804473860062/?ref=ts&fref=ts

Page 3: 軟體開發之路甘苦談(Gelis)

• 我為什麼選擇軟體這條路?• 軟體開發最痛苦的是什麼?• 軟體開發最快樂的事是什麼?• 什麼都要做架構?什麼都要跟上潮流?• 軟體開發客戶經驗篇 - 小心接受客戶的恩惠 ( 說故事 )• 軟體開發之路該怎麼走?技術怎麼選擇?• 各路高手交流軟體開發 經驗 與 分享

Agenda

Page 4: 軟體開發之路甘苦談(Gelis)

我為什麼選擇軟體這條路?

Page 5: 軟體開發之路甘苦談(Gelis)

我為什麼選擇軟體這條路? • 不是為了錢• 當時根本不知道做軟體可以賺多少錢!• 只是覺得寫程式很有意思• 當時在震旦行• 看見系統部的人在修改

Reposts 那時是使用 Delphi 2.0

Page 6: 軟體開發之路甘苦談(Gelis)

軟體開發最痛苦的事情是什麼? 是什麼原因支撐你一直到現在?

Page 7: 軟體開發之路甘苦談(Gelis)

軟體開發最痛苦的事情是什麼?• 需求不固定,時程無法預估

Page 8: 軟體開發之路甘苦談(Gelis)
Page 9: 軟體開發之路甘苦談(Gelis)

軟體開發最痛苦的事情是什麼?• 需求不固定,時程無法預估• 政治問題…• 時程壓縮 - 加班 ( 老闆暗示星期六你要來 ... 測試你對公司的向心力 ..?) 長官消磨你的熱情 ...• 無法與客戶溝通、無法與 PM 溝通、無法與主管溝通、同事不跟你溝通 ( 很難溝通? )• 客戶像流氓、客戶說的不是地球話、 Member 難相處…• 背前人的黑鍋 => 我不入地獄誰入地獄? => 當作磨練 ... 只是工作而已! 熱情呢?可能剩下 5%• 接手系統沒文件、 Source Code 不完整

– 前人沒用 Source Control... !!!– Production 目前 Run 的不知道是哪一版 ( 跟交接來的 Source Code 不一樣 ...)– 在 Production 找到一顆 DLL 在 Source Code 裡面是沒有的! ... ( 讓我我了解了反組譯工具是幹什麼用的! )

Page 10: 軟體開發之路甘苦談(Gelis)

• 不懂技術的 SA/PM 談下天馬行空的需求 還跟你說 .. 這很難嗎? ( 我心裡想,你帶腦袋出門很難嗎,你怎麼不來寫? ) 因此,那一陣子工程師最流行的就是 " 做不到 " 、 " 不然你來寫 "• 傳聲筒 PM...• 懂皮毛的 PM 跟你說,他覺得這個功能半小時可以做完! => 你是你說你可以寫完,還是我半小時可以寫完?• 團隊沒有規範 - 各做各的 ...• 每個專案都從頭來 ( 沒有既定框架 )….• 公司團隊開發沒 ( 流程/ SOP)

– 老闆完全不懂技術…• 將人當作資源,許多案子失敗的關鍵,工程師的產值多事是看的見的有形物體• 別信 KPI?.... 程式碼不是用行數來衡量工程師的產出 ....

Page 11: 軟體開發之路甘苦談(Gelis)

軟體開發最快樂的事是什麼? 賺很多錢?…

Page 12: 軟體開發之路甘苦談(Gelis)

軟體開發最快樂的事是什麼?• 不要做專案 ( 誤 )• 賺很多錢? .....• 做自己想做的事/寫自己想要寫的程式• 程式寫完很有成就感

– 做出來不是客戶要的 ( 成就感瞬間消失 ) – [ 還是有成就感 ( 自爽 )] 因為學會某項技術?

• 可以玩新技術?• 不要交接別人的程式? ...• 最好不要維護舊系統

– 不要維護別人寫的程式?…

Page 13: 軟體開發之路甘苦談(Gelis)

軟體開發客戶經驗篇 - 小心接受客戶的恩惠說故事…

Page 14: 軟體開發之路甘苦談(Gelis)

軟體開發客戶經驗篇• 小心接受客戶的恩惠 => 那怕只是杯星巴克 ...

嘻嘻…

Page 15: 軟體開發之路甘苦談(Gelis)

什麼都要做架構?什麼都要跟上潮流?架構要做,但是…團隊規範 > 架構 > 技術

Page 16: 軟體開發之路甘苦談(Gelis)

什麼都要做架構?什麼都要跟上潮流?• 潮流也可能是洪流 ( 裡面可能有個漩渦 ) ,先被淹死…

Page 17: 軟體開發之路甘苦談(Gelis)

什麼都要做架構?什麼都要跟上潮流?• 潮流也可能是洪流 ( 裡面可能有個漩渦 ) ,先被淹死…

架構雖有其必要性,但團隊規開發範更為重要不隨意跟著潮流,但是不做出改變,等於等死…

Page 18: 軟體開發之路甘苦談(Gelis)

什麼都要做架構?什麼都要跟上潮流?• 潮流也可能是洪流 ( 裡面可能有個漩渦 ) ,先被淹死…技術、工具每天都在進步,大環境每一天也都在改變…

Page 19: 軟體開發之路甘苦談(Gelis)

什麼都要做架構?什麼都要跟上潮流?• 潮流也可能是洪流 ( 裡面可能有個漩渦 ) ,先被淹死…• 軟體開發因為市場環境劇烈環境的變化,因此我們談「敏捷」

–現在講求「敏捷」,「自動化」,「 CI 持續整合」、「 CD持續佈署」搭配一些系統自動化的工具,落實在開發、建構、測試、佈署各個階段–敏捷告訴我們要快速反應,團隊反應需要溝通,團隊要有合適的溝通方式可能需要適當的方法,要有適當的方法就要有適當的規範

• 團隊規範 > 架構 > 技術

Page 20: 軟體開發之路甘苦談(Gelis)
Page 21: 軟體開發之路甘苦談(Gelis)

所以?• 我們應該獲取我們需要的部分,而不是全盤使用• 許多技術永遠都是為了創造更好的生活、更方便而進步的,軟體開發也是一樣,不斷的更新也是為了使軟體開發更快速、更容易、讓開發人員更容易維護自己的程式碼• 軟體開發工具不斷地更版,並不表示企業就一定要跟進,企業得自行評估,如果新的開發工具並不能夠為您現有的開發團隊、流程造成改變、變得更好,那麼現階段你的團隊可能就不適合導入

Page 22: 軟體開發之路甘苦談(Gelis)
Page 23: 軟體開發之路甘苦談(Gelis)

理想的開發團隊具備要素• 最佳化重複步驟 (iteration) 的速度• 自動化• 適當的流程與架構、框架 (Platform/Framework)• 導入 Code-Review• 維持一個彼此尊重的工作環境• 分配 20 %的時間策略• 建立一個持續學習和改善的文化• 與合適的人建立團隊

Page 24: 軟體開發之路甘苦談(Gelis)

Martin Fowler 在深圳的演講• http://www.jianshu.com/p/e042ed1d79b0

• 一般工程學套用在軟體開發不可行 ( 工程方法/計畫驅動 ):– 開發人員視為可替換的資源根本是個錯誤的假設– 每一個開發動作都同時包含了設計和實施的成分在– 每一個軟體專案幾乎肯定具有獨特性

• 如果都是完全一樣的程式碼,那你根本不用重寫,只需要 copy 一分 (或買套裝軟體 ) 就好• 幾乎永遠不可能有確定的需求

– 那從不確定的需求,要準確的預估時程幾乎是不可能實現的

Page 25: 軟體開發之路甘苦談(Gelis)

• 所以?–敏捷開發法的設計者認為,你不能把程式設計師看做資源–應該把軟體開發團隊看做是一組球隊

• 團隊中的成員每一個都有自己獨特的角色和任務,人人不可或缺,無法輕易替代• 所以,每一個球員的產值大不相同,高低之間可能相差數十倍,是無法相提並論或替換的!

–敏捷開發中的迭代 (iteration) 行為會是當今軟體開發最可行的方式

Page 26: 軟體開發之路甘苦談(Gelis)

軟體開發之路該怎麼走?技術怎麼選擇?走得長久除了熱情,還要有很好的肝?…

Page 27: 軟體開發之路甘苦談(Gelis)
Page 28: 軟體開發之路甘苦談(Gelis)

軟體開發之路該怎麼走?技術怎麼選擇?• 給社會新鮮人:

– 不要只挑熱門的學 熱門的很快就會冷卻• 但也不要排斥學習新的技術 有用的技術

• 給軟體開發人員:–維持對軟體的熱情– 對市場需求、解決那些問題 ( 自己有那些問題 ) 有足夠的洞察力

• 不盲目追求新技術– 對於技術、工具有(評估/選擇)的能力–培養解決問題的能力– 接受改變、擁抱改變、切忌一成不變、事情永遠有更好的方法

Page 29: 軟體開發之路甘苦談(Gelis)

軟體開發之路該怎麼走?技術怎麼選擇?• 培養自己用架構師的觀點來寫程式• 不要排斥其他角色 SA, SD, PM, Architect, RD, Presals…

Page 30: 軟體開發之路甘苦談(Gelis)

各路高手交流軟體開發經驗 與 分享

Page 31: 軟體開發之路甘苦談(Gelis)

Q & A

Page 32: 軟體開發之路甘苦談(Gelis)

聯絡我• 部落格 (Gelis 技術隨筆 )• https://www.dotblogs.com.tw/gelis/• FB 粉絲團 (Gelis 的程式設計訓練營 )• https://www.facebook.com/gelis.dev.learning/?

ref=bookmarks• FB 社團 ( 軟體開發之路 )• https://www.facebook.com/groups/361804473860062/?

ref=ts&fref=ts