TopCoder兼職賺錢入門(Part. 1)

NO IMAGE

  最近找我問TC的朋友越來越多,於是就想寫一個入門教程放在這裡。對我來說,TC目前是總收入的一個重要組成部分,雖然不如工資多,但是價效比極高。由於我基本只幹Design/Development,因此本文只介紹這兩種,對於有志於Architecture/Assembly乃至Studio的,我給予精神上支援。另外,我在軟體工程方面的知識體系極其山寨,這篇文章應該會有不少錯誤,請海涵。最後,轉載請註明。
一,準備
  雖然說TC的門檻並不高,但是還是有一些基礎要求的,基本可以概括為:
  基礎條件:
1. 語言:Java/C#其中的一種;
2. 英語水平:這個我比較沒有具體化感受,至少我本人沒有碰到過交流障礙,可以算四級以上吧;
  以下條件則不那麼重要,如果有則事半功倍,畢竟有些學起來也是很快的:
1. 常用framework:對於Java來說就是Hibernate/Struts/Spring等,對於.net來說就是WCF等;
2. 企業級應用開發經驗:TC的開發模式是借鑑了Agile Programming的,如果對這個有所瞭解應該能更快入門,當然,我不瞭解;
3. UML相關知識:這個應該是必須,但是考慮到學得很快,就放這裡了;
4. 忽悠能力:這點在appeal時尤其重要,後面另說。
5. 網路情況:出國速度越快越好!(搶review很重要!)
二,TC的開發流程
  TopCoder作為一個老牌的軟體外包(Outsourcing,參考http://en.wikipedia.org/wiki/Outsourcing)公司,在六年多的發展中自己完善了一套開發模式,從一開始只有Design/Development作為比賽開放給member,到現在的一條龍服務,按照開發時間順序排列如下,括號裡是我自己的土鱉翻譯:
  Conceptualization(概念化): competitor直接與客戶公司代表溝通,確定需求,將需求形成文字;
  Specification(規格化): 根據conceptualization的結果,進一步完善成需求文件(一般稱為ARS,  Application Requirement Specification);
  Architecture(架構): 根據ARS確定整個系統的架構,並將整個系統打散成多個component,給出每個component的邏輯功能以及對外介面;
  Design(設計): Design的基本單位是component,這一點與上面都不同;Designer需要根據Arch給出的需求文件(RS,Requirement Specification)確定模組的內部邏輯,給出UML圖及模組說明文件(CS,Component Specification);
  Development(開發): Dev的單位同樣是component,Developer根據Designer給出的UML圖和文件進行實際的程式碼開發,並且需要自己給出Unit test suite;
  Assembly(裝配): 將完成的元件按照archi的要求裝配到一起,成為一個(或者一組)可部署的程式;
  Test(測試): 測試,不多說了。
  關於Design和Development的細節在後面詳述。
(未完待續)