原文地址:【原创】TopCoder兼职赚钱入门(Part. 1) 作者:汪昊成
最近找我问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的细节在后面详述。
(未完待续)