动机
- 提升实践能力:由于众所周知的原因,课程项目经常有着脱离实际或是难以理解的需求,实际工程量通常偏低且是个半成品。而花旗杯比赛至少有着明确的主题和业务目标,并且对最终成品的完成度要求很高,以上情况和实际工作场景相对吻合。同时,实习往往是往摩天大楼里面加东西修设施,而花旗杯则是从零开始搭毛坯房,能够提升需求获取、产品设计、功能实现、可用性优化等一整套项目开发能力,二者并不重复。
- 奖金:表现好的话拿到大于人奖一等水平的奖金没问题。
- 简历:如果简历本身没什么竞争力,花旗杯项目还是可以填补上去的。当然,花旗杯毕竟是金融比赛,所以项目在技术方面往往不够突出,但奖项好的话可以唬人。
- 保研加分:和软院无关。
- 跨学科素养:可能可以了解一些简单的金融知识用于指点江山。~~(事实上是软件组成员基本上连指导老师要求看的书都没咋看)~~不管怎样,请牢记:祸从口出,多看少说;也请牢记:投资有风险,入行请谨慎。
- 人脉:给你创造一个和大佬认识的机会,不过如果合作不愉快的话就是debuff了。
优劣
- 开甲三院中,CS 和 AI 在前后端项目开发实践机会较少,且花旗杯对最终项目的完成度要求很高,因此金融算法的同学往往倾向于找软院同学合作。
- 花旗杯拿奖对商院/工管同学来说是可以加保研分的,而软院虽然不加分但也会被算人头,所以他们往往不愿意团队人数太多,一般至多能接受软件组在六个人左右。
- 不排除和春招/暑期实习/保研外推冲突,出现这种情况请自行平衡好,另外也可以在组队时提前考虑确保在此段时间能一直保持有人干活。
团队组建
- 主要是大三同学参加较多,也有大四和研究生同学参与。
- 该比赛是金融比赛,因此负责算法设计的成员往往是团队能否拿奖的关键,指导老师确定合适的选题,而算法设计的同学在答辩时需要在短时间唬住评委,因为评委显然没时间亲自测试结果,所以要确保逻辑清晰、文献支撑。在这方面,寻找到靠谱的工管/计金/AI 的同学很有必要(而且靠谱的工管/计金同学一般也对这个比赛很有兴趣,对他们简历加分很大)。
- 由于上面优劣提到的,团队规模需要控制,软件组成员名额有限,因此需要找靠谱的同学一起开发,尤其需要注意对方愿意投入足够的时间完成该项目(当时寒假密集开发的时候每天白天改代码,晚上开会明确进度和需求),尤其是决赛答辩前能够应急响应改 bug,千万不能仅仅通过 GPA 进行队友筛选,同时对巨佬盲目信任推锅可能会有严重后果,愿意贡献的程度是很关键的。
- 一般来说,前后端都至少需要两人,协调组织还需要一人,测试与持续集成等还需要一人。其中负责后端和持续集成的同学在软院一般相对容易找到。而前端成员需要提前寻找好,软院愿意写前端的同学相对较少,花旗杯非常需要一个界面专业的成品项目。除此之外,负责协调的同学最为重要,一般需要一个精通业务也懂技术的(这不就是 PM 吗?)。
- 商院同学在比赛中主要负责写计划书和做 PPT,经常需要全盘推倒重来(尤其是指导老师要求严格的时候),选好心理素质好且愿意投入时间肝的同学也有必要。
- 既然都是要找靠谱的,那尤其是外院系的,日常不太容易了解认识到,基本就全是靠人脉了。
- 各类比赛由于众所周知的原因,评委也有自己的一个圈子,合适的指导老师有的时候可以发挥意想不到的作用。
项目
前端
核心要求:专业、灵活、高效。
- 界面基本是项目部分分数的关键,切忌简单粗暴,但更不能花里胡哨,不确定的时候以指导老师意见为主,该比赛具有较强金融专业性,因此有的时候并不一定适合选用太多圆角扁平化设计。最重要的是,风格一定要统一,类似页面的 UI 摆放、配色方案选择等。
- 灵活,即网站交互性强,一方面可以通过提示、图标和动画(一定要注意适量,不然显得不专业,还可能让网站表现得很卡)。另一方面,则是尽可能增加用户能够点击跳转的东西,比如我们在展示公司 ESG 评级表时,表内每个公司名称可以点击跳转到公司界面,在公司界面又可以跳转到公司相关的新闻和词云等等。除此之外,基本的页面支持移动端适配也可以作为一个亮点。
- 高效,这里主要指可用性,我们项目中最典型的例子是穿梭框组件,为了让用户挑选公司组合,最终优化支持四千多项来回多选切换不卡顿。毕竟想想,要是答辩演示时,功能卡顿,评委会作何反应。所以虽然不要求大厂产品的高可用高并发,但卡顿还是万万不能有的。
- 项目最终前端总代码量约万行。
后端
核心要求:高效、可靠。
- 高效不必赘述,一般花旗杯项目还是读远大于写,业务开发难度不大,但该有的都得有,多级缓存,加!数据库索引,加!
- 可靠主要是安排各种测试,包括但不限于单元测试、集成测试和压力测试。当然,最重要的还是,和算法组及指导老师确认好需求,减少无用功。不过需求变更无可避免,反正我们中途也推翻了几次,保持好心态就行。
过程
比赛会整体持续一年,但软件组基本是寒假及刚开学两个月时间内密集开发。
- 流程规范,我们项目前后端加起来部署了超过 400 次。
- 文档严谨,尤其用户手册给商业组算法组都看一遍。
- 记录存储,保存好会议记录和 commit 记录。
- 访问控制,严格管理端口暴露,尽量不要使用常用端口号。