科技行業管理與透析(9):Scrum / Agile

要寫一篇講下 Scrum / Agile 怎樣運作。

本地很常見 Scrum 都運作得不很正規;普遍觀察是少於一半是運作適當的。Scrum 運作不良,不單純是品味或名目上的問題。因為 Scrum 是設計得很精妙的,本身每個設計細節都包含著很多智慧和管理經驗。若違反 Scrum 方法,差不多都保證會有某些已知的管理問題。而這些典型的管理問題都是 Scrum 的設計想針對解決的。

~ Scrum 基本步 ~

最簡單、最普通的 Scrum 是由三方組成:

  1. Product Owner (PO):用前篇(連結)的職位所分類,就是 BA/PM 類型的人。就是負責按企業和商業環境而提出需求和設計的人員。也是項目的 Sponsor,就是取得 Budget 和所需權限的人。
  2. Development Team (Team):就是開發團隊。一般包括 Engineer、Tech Lead、Architects。
  3. Scrum Master (SM):維護這個 Scrum 方法的人員。若 PO 和 Team 之間有不同意見,就需要負責解決。以維護 Scrum 方法的暢順運作。

基本方法或原則:

  1. Scrum 一般都有個循環週期長度。例如一週、兩週、一個月,等等。通常是以短為優。
  2. PO 有權提出需求。將需要放到 Backlog。但不可以強迫 Team 從 Backlog 中選取甚麼。也不可決定 Schedule(見下面 Team 操作)。
  3. Team 有權從 Backlog 中揀選項目作這週期的開發。基本上揀選後就要負責完成。當中可與 PO 協商,但 PO 無權干預。而若 Schedule 上脫期,即是完成不了,那麼作為失敗的項目論,重新排進 Backlog(企業在管理上可以有 Penalty)。
  4. 每個週期的末段,即 Team 完成開發後,PO 有權揀選任意項目,作為推出上線。Team 無權過問,而且需要確保項目上線後能暢順運作。這是 Scrum 與 Devops 連接的部份。
  5. 項目若有資源不足或缺乏的問題,由 PO 負責解決。因為 PO 是 Project Sponsor。

可以看到這個 Scrum 的設計,本身是兩邊的權力的限制與平衡。若有不同意,由 SM (Scrum Master) 負責調和。

Scrum 的設計是解決一些常見問題。若要窮盡需要很複雜的講解。篇幅到此不贅。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(8):白帽資安工作日常

寫了幾篇都是有關職位。也講一個很多人迷思的職位:白帽資安人員 White Hats。

白帽資安人員 White Hat Hackers 很多時是只存在於很多人的傳說和幻想中。但實際上是有這類的正式職位。例如在香港,據我所知有正規白帽資歷、或從事白帽一樣的專業資安工作的,有大約一至二千人。

要講白帽,就必須先講資安團隊的分類。筆者之前寫過,在這裡(連結)。白帽是分類在 Red Teaming 以下。一般白帽也會叫 Penetration Tester 滲透測試人員、Security Specialist 資安專員、Ethical Hacker 道德駭客。

~ 白帽是個怎樣的編制?~

講白帽的來由,先講為甚麼企業會需要白帽資安人員。
編制外、自由工作者的有 Bounty Hunter 賞金獵人,或 Security Researcher 資安研究人貝,這些都不計算。只計企業編制內的。

原由是因為 IT Audit 監管。IT Audit 的需求,是來自有些公司是需要持牌。持牌就需要監管。
持牌的例子,例如 ISO 品質管理、PCIDSS 信用卡監管機制、 SFC 証監會、HKMA 金管局等的監管機構。

而只要 Audit 監管涉及電腦系統,就需要 IT Audit,然後就有 Cybersecurity 部門的工作參與。
Cybersecurity 部門,通常由 Blue Team 去處理 IT Audit 資訊監管;而 Red Team 是負責系統的直接「滲透測試」Penetration Test。或俗稱 Pen-Test。Pen-Test 就是由白帽資安人員 White Hat 執行。

~ 滲透測試包括甚麼工序?~

滲透測試 Penetration Test (Pen-Test) 是很專業的工序。一般都包括 *所有* 的企業技術資產。例如:

  1. 公司內電腦
  2. 公司內網絡
  3. 雲端電腦
  4. 雲端網絡
  5. 各式系統
  6. 各式代碼
  7. 各式數據
  8. 各式人員
  9. 等等

滲透測試若要好好講解,可以寫另一個十多篇的專屬欄目。但很概括的說,一般都是分為幾類:

  1. 社交工程 Social Engineering:非技術,純粹針對人員操作的測試。
  2. 網絡外到網絡內
  3. 電腦群外到群內
  4. 企業權限外到權限內(例如 Active Directory 之類的網域目錄權限集)
  5. 低階、二元式:Binary / Assembly Level。例如著名的 Stack Overflow,就是屬於 Binary 類。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(7):CTO/CIO 工作日常

寫一篇有關 C-level 的員工。

CTO / CIO 是些迷人職位。因為聽落很勁。但技術這回事,行內很多高人。若做了個技術低的 C-level,一樣是得不到其他專家尊重的。

講下啲普遍迷思。

~ CTO/CIO 要是技術專家嗎? ~

常見迷思之一是:CTO/CIO 要不要技術很好?或純粹是管理,專業工作由下面的人來做?

通常筆者會這樣答:若覺得 CTO/CIO 不用是技術專家的人,請回答我:那麼 CEO 和 CTO/CIO 的分別在哪?或和其他 C-level 員工的分別在哪?

除非回答到這問題;否則 CTO/CIO 與其他 C-level 的員工的分別,就是 CTO/CIO 是企業裡的科技專家,是解決企業決策上需要專業技術的問題。否則,沒有技術的 CTO/CIO,其實不如說是和 CEO 或 COO 的功能重疊。

~ CTO 和 CIO 之間怎樣分?~

CTO 是 Chief Technology Officer 技術總監 / 首席科技官;CIO 是 Chief Information Officer 資訊總監 / 首席資訊官。CTO 是負責 Solution 和 Production 的。一般是以科技為主業、或有科技項目的公司才會有。CIO 是 IT 的運維面和成本面;企業未必是以科技為主的公司也會有。只要公司用到電腦或資訊,也會有 CIO。但未必有 CTO。

還有個是 CISO (Chief Information Security Officer) 資安總監 / 首席資安官。是專管資安事情。一般要持牌或金融機構,都有可能有 CISO。一般都是管理合規 Compliance 、資訊監管 IT Audit、資安 Cybersecurity 的問題。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(6):架構師工作日常

Engineer、Tech Lead、BA / PM、QA、Sysops、Architect、CTO/CIO。這些職能中,Architect 是個很多人不熟識的工作職能 (Job Function)。寫篇講解一下。

~ 架構師的工作範圍 ~

一般我是這樣講解的:

  1. 若是編程或直接開發,就是工程師的工作範圍。
  2. 若是有關設計和使用,就是 BA/PM 的工作範圍。
  3. 若是有關 Performance 效能的,一般都是架構師的工作範圍。

Performance 是個概括術語。Performance 包括好幾方面的 Performance:

  1. 速度 Speed
  2. 效率 Efficiency(即性價比問題)
  3. 效益 Effectiveness(即達標程度問題)
  4. 穩定 Robustness
  5. 擴充 / 伸展性 Extensibility / Expandability
  6. 備份 Backup & Restore
  7. 自動化 Automations
  8. 資訊安全 Cybersecurity
  9. 治理 Governance / Policy(例如權限問題、誰在系統中做甚麼、怎樣確保不會出錯)

以上這些都是架構師負責設計、管理、執行。
所以一般架構師都要是有很豐富的技術經驗,和管理經驗。要熟悉很多種語言、OS、系統,甚至跨雲、跨系統、跨語言。
通常我會說,訓練一個專業的架構師,一般都很難少於 15 年純技術經驗。

~ 架構師的分類 ~

架構師是掌管 Holistic View,就是系統或企業的整合。一般都不會純粹叫 Architects,而是會連帶職能一起:

  1. 功能類
    • Solution Architect 方案架構師:一般就是負責開發項目的架構師。可以說是最典型的架構師。上圖灰色和紫色部份都算是這類開發類架構師。
    • System Architect 系統架構師:一般是運維職位。是在運維角度考慮系統的整合。上圖綠色部份都算是這類運維類架構師。
  2. 領導類
    • Entreprise Architect 企業架構師:不是以項目為整合,而是以企業角度作整合。例如是關注企業的商業業務發展的角度,來優化系統的設計或效能。
    • Chief Architect 首席架構師:首席架構師其實很像企業架構師(除了企業架構師有時是會多於一個);但 Chief Architect 通常是不包含做商業決定的功能。純粹技術人員。少許分別,其實只在名目上,分別不大。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(5):工程師工作日常

講下正常編制下,工程師是怎樣的生活。都有不少人對於學編程然後入行有興趣。

先從概略講起。一般工程師的主要工作,包括:編程、維護代碼、取項目和交項目、另外一些 ad hoc 需求。可能就是這麼多,因為都算是入行大約頭五年左右、經驗需求不深的工作。

但值得一提的是,學編程和做工程師是有明顯距離的。寫下比較:

內容編程學生工程師
代碼行數一般數百內。很多是數十內。一般每個項目最少兩萬至五萬行數。
例如若同時做 4-5 個項目,可能會同時處理數十萬行代碼。
能掌握的語言或技術一般 3-5 種內大部份有 3-5 年的工程師,都可以掌握 20-30 或以上種技術或語言。十年外的,很多上百。
坐著的時數一般 1-2 小時已感不適很容易是 6-8 小時長期坐著。有些通宵的情況是會 18-24 小時或以上。
期望的閱讀量一般幾千字。一兩篇內。很容易是會每週閱讀數十萬字。除了文檔、訊息、電郵、代碼;還有搜尋解難。所以一般工程師都能速讀大量文字。
期望做的年數很多人是期望入行後 3-5 年內就不用編程;轉做管理。3-5 年才剛開始,有少許火喉。工程是門工藝。越學精湛,含金量和價值都越高。科技專家一般都是實務 20+ 年以上的編程經驗;四十歲後仍有編程習慣;有每天編程習慣。

業界很多人期望將專業技術轉嫁他人,結果很多人是不懂編程、渣流攤的管理人員,敗壞公司和業界。
期望學習很多是期望學幾年,然後不用再學科技專家很多都是優良的學習能力,和終生學習。
期待薪金高薪這個一樣:高薪。
不過通常是入行 3-5 年後才急速上升。好處是長期有價、很少會失業。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(4):人員種類

寫了公司種類和部門種類後,寫一下人員種類。
方便討論,都是以科技為主業的公司作準。就是前篇(連結)的(1)(2)(3) 類公司。

一般科技為主業的公司,會有以下這些人員。一般有舊制和新制分:

舊稱新稱功能
Programmer, Analyst ProgrammerEngineer獨立掌管開發流程
IT Manager / System Analyst / Project ManagerTech Lead / Engineering Manager技術較優秀的領隊;技術顧問
System Analyst / Business Analyst / Project ManagerBusiness Analyst (BA) / Product Manager (PM)方案:商業 + 設計
ArchitectsArchitects架構、系統整合、企業整合
TesterQA測試人員
System Admin / System OperatorsSysops / Ops / Infra運維
CTO / CIOCTO / CIO / CSO / CISOC-level 科技人員
新制大概都是可追溯到矽谷那邊的管理習慣。例如若查矽谷平均薪資,都是可以用上面新制的名稱去查找。可以見到,新稱一般較簡潔和實用。講解下:
  1. Engineer 工程師
    • Engineer 一般的標準都是:0-2 年經驗,算 junior engineer,大約等於以前 programmer。3-5 年經驗,是 Engineer、大約等於以前 Analyst Programmer(每間公司管理情況會有差異)。一般都能獨立處理項目的一個模組。例如兩個 Engineer,分工上一個前端,一個後端;合作做一個項目。若不能獨立處理項目,都不建議有 Engineer Title。
  2. Tech Lead 技術領導
    • Tech Lead 在編制上,是代表工程部門的。因為配合其他管理架構,例如部門劃分、或 Agile 管理方法,這三個領導級人員是重要的三個支柱:Tech Lead、Entreprise Architect、BA/PM。這三個支柱,在分工上各有不同功能;在 Agile 運作上也呈平衡狀態。
    • Tech Lead 一般是技術極好的工程人員。而且若工程團隊有技術困難,一般 Tech Lead 都是有能力解決的。
    • 也有 EM (Engineering Manager) 的方式。某些分得較清楚的大企業會採用。
  3. Business Analyst (BA) / Product Manager (PM) 設計人員
    • BA/PM 是負責商業發展面,和項目設計。但 BA/PM 一般不是技術人員,所以需要 Tech Lead 和 Architect 作技術顧問幫助。
    • BA/PM 要懂做 Storyboard、UI/UX Design、User Journey、User Scenario。要懂得不少 Design Methodology。而且要和 QA 一起參與測試流程。
    • BA/PM 可以是最低技術成分的專業科技職位。
  4. Architect 架構師
    • Architect 是負責整體整合。可以是整個系統的整合 Holistic View。也可以是整個方案、或整個企業,等等。
    • 所以一般都有分:Solution Architects、Entreprise Architects、Chief Architects、System Architects、Cloud Architects。等等。
    • Architect 一般都是決定主要技術參數,例如用甚麼語言、OS、方法、架構等等。影響的是效能、效率、穩定、速度、擴充性、備份、自動化、資安、治理等等的問題。
  5. QA 測試人員
    • QA 就是負責測試。現代一般都有很專業的測試流程,若有空間擇文再述。
    • 很多時 QA 都可以聘 part-time 做。
    • QA 通常是跟流程做、填文檔。而測試流程是由 BA/PM 或 QA Manager 設計,但都要經 BA/PM 採納。
  6. Sysops 運維人員
    • 運維人員就是維持伺服器(台譯)或服務器(中譯)運作。
    • 運維人員也會管理擴充、備份、恢復、日志存取等等問題。
    • 基本上是看訊號、儀表板 (dashboard) 做事。
  7. CTO / CIO
    • C-level 員工。不用解釋。若可以擇文再述。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(3):公司種類

講了科技部門分類,可以講下公司類型。
講到行業。行業是由人和機構組成。而科技行業的公司五花八門;但若是歸納一下,大約可以分做幾類:

  1. PaaS or SaaS:是科技公司。以提供軟件或平台,為該公司的主要提供服務。
    • 例子:Facebook、Google 之類最初的成立都是這類公司(後來就加入了其他產品甚至有硬件提供)
    • 在這類公司通常會有最多種類的科技人員;和最多種類的科技部門。
    • 通常 Solution Team 是 Production 或 R&D 部門。
  2. Software House / Production House:是科技公司。提供軟件或設計服務,被其他公司僱用作軟件開發。
    • 例子:PCCW 都是有替第三方做開發軟件。
    • 通常以 Project Sales + Solution Architect 作銷售功能。取得項目後,回來有商業部門的的 Account Manager 跟單;並有 Solution Team 負責開發 Production / Development、Infra Team 負責維持服務。
    • Solution Team 是主力的 Production。
  3. IaaS or related:是科技公司。以提供非軟件的科技基礎設施服務,為該公司的主要服務。這範疇可以很廣,例如有所謂 IaaS, DaaS, STaaS, etc.. 都是提供不同類型的 Infra(科技基礎設施)的簡稱。
    • 例子:AWS 等雲端服務就是提供科技基礎設施為主。
    • Solution Team 通常是 R&D。
  4. Non-Tech:公司本身不是以科技產品為主,但也用到科技,所以也有僱用電腦從業人士。
    • 例子:惠康、美心這類企業的內部科技部門。
    • Solution Team 通常歸類為 Back Office;與 HR、會計等部門同類。而不是 Production。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(2):科技部門種類

電腦從業人員會在不同類型公司內工作;例如公司可以是以軟件或科技平台或主要產品,或不是科技產品(例如農業或電力公司內的電腦部門)。這些下篇會講解。講下去之前,先講解下科技部門有甚麼類別。以上這個圖是我自己造的,都是些多年的管理心得。

  1. Solution Team:也有稱為 Development Team、Production 或 R&D。Solution 是個較容易分類的字。是泛指軟件開發部門。就是一般人理解的軟件工程師,或編程人員。通常是科技服務的主力。
  2. Infra Team:也有稱為 Ops Team、Admin Team、Server Team 之類。就是維持公司內或雲端上的伺務器/服務器、或軟件和平台,繼續正常運作。若有問題通常都會找 Solution Team 的人解決。

以上兩者是主要編制。通常若屬科技公司都會有這兩者。還會有一些其他部門,有些公司選擇性會有:

  1. Devops Team:很多時是 Infra Team 或 Solution Team 的一部份。通常是加強全自動化的工作。
  2. Architect Team:通常 Architects 都是在 Solution 或 Infra 內。但若某些企業有較多的 Architect,也會自成一個部門。
  3. Product Design / Business Analyst:就是設計部門。是考慮商業環境與需求,定出方案和設計的部門。然後交給 Solution Team 去開發;開發完就交給 Infra Team 去維持。
  4. QA / Testing:測試部門。有些公司會對測試有較大需要。可能會聘用大量的測試員。
  5. Data Team:Data Scientist、Data Analyst 的部門。一般都是以建構解析數據為主,是統計類的工作。
  6. Security / IT Audit:有些公司例如是專業服務(例如銀行、醫院)或有牌照要求,就會有獨立部門處理資訊安全 (Cybersecurity)。而若非獨立部門,一般在 Infra Team 內。
  7. Project Sales:在某些類型的公司,例如 Software House,會有科技銷售人員。他們主要負責銷售程序,做 ppt 展示和講解服務。他們也會自覺為科技人員,所以不能忽略他們。而他們一般會配搭個 Solution Architect 出外開會;Solution Architect 負責解決科技問題,Project Sales 負責銷售程序。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile

科技行業管理與透析(1):簡介

一直想寫個欄目,講解一下電腦科技行內是怎樣的情況。

主要可以幫助到幾類讀者:

  1. 行外:不是科技行內,藉此去了解科技電腦行內是怎樣的境象。或者入行、或者投資、或者尋找專家協助、或者僱用服務,等等。
  2. 行內:對一些工作日常的管理問題,多了解一點原委和解決方法。
  3. 管理人士/專業人士:交流。

科技行業管理與透析(1):簡介
科技行業管理與透析(2):科技部門種類
科技行業管理與透析(3):公司種類
科技行業管理與透析(4):人員種類
科技行業管理與透析(5):工程師工作日常
科技行業管理與透析(6):架構師工作日常
科技行業管理與透析(7):CTO/CIO 工作日常
科技行業管理與透析(8):白帽資安工作日常
科技行業管理與透析(9):Scrum / Agile