管理与技术未必不可兼得,一个20年IT老兵的码农生涯
作者|康德胜
我是一个喜欢写代码但几乎不太有机会写代码的CTO,也是一个看得懂财务报表、通过所有CFA(金融特许分析师)考试并获得FRM(金融风险经理)认证的拿到金融MBA的CTO,如果我有幸被称作码农,我会幸福地唱起歌儿。——康德胜编者按
从普通码农到国内公司CTO是一段经历;放弃CTO优渥待遇转战美国技术底层,再次做到管理岗位又是一段经历;选择回国发展,先后加入工行、任职渣打,到现在的万惠集团副总裁兼CTO,是他最新的一段经历。人生就是各种各样的经历,他的经历丰富却有借鉴意义,也希望你能从中受益!
康德胜也是去年极客邦科技组织的中国技术开放日美国站的重要嘉宾,中技日更多资讯见:
管理与码农的双重选择码农到CTO
我的职业生涯始于大学二年级,当时我在浙江大学读机械设计专业,二百多年的现代机械学理论极其严谨却让我昏昏欲睡无法享受学以致用的畅快。借助于高中就开始写BASIC代码的基础,我找到了一家软件初创公司开始我的创业生涯。那个时代,雷军还在鲍岳桥的金山软件公司里当开发经理,王志东刚写了中文之星,现在的互联网大拿们大多数都在nowhere,Windows 3.1也刚刚问世。
我的第一个软件产品是一个英语教育系统,为了这个我特意在DOS平台下开发了一个支持中文的我自己的仿Windows平台。什么都得自己写,绝对的面向对象C++,窗口、按钮、菜单、下拉列表框、BMP图形、汉字显示……连鼠标以及图形卡的驱动都是我用汇编语言自己弄的。什么都得自己做,产品、设计、编码、测试、安装、运维,等等。现在有个时髦词儿叫「全栈」,那个时候只不过叫程序员而已。
我当时的老板刚从德国拿了博士回来,真可谓是意气风发,什么都鼓励我去尝试,有想法敢拼敢闯的人一定会非常有前途,于是很多年之后他成了杭州最知名大学的校长。感谢这位伯乐大师的支持,我带领团队开发了好几个软件产品,从网络通信工具到各类管理信息系统,现在想想都觉得有些不太敢相信自己当时的产能,比起现在动辄几百人的团队,小公司的效率确实要高得多。
Work hard play hard,就这么风风火火干了若干年,嘻嘻哈哈玩了些许时光,直到有一天我在杭州世贸中心花50块钱听了一场讲座。
台上是一个小个子长相迥异的奇人,激情四射的能量足可以把全会场的人心点燃,这个人叫马云,刚拿了孙正义的2000万美金。我也是台下内心汹涌澎湃的观众乙之一,不过我激动的不是马云的阿里巴巴,而是产生了那么多互联网奇迹的美国(现在想想那是多么痛的领悟啊!)。我对美国产生了浓厚的好奇心,我决定去这个国家看看!
奔赴美国,重新开始码农生涯
于是我放弃了国内一家公司的CTO职位,找个机会去了位于美国首都华盛顿特区的房利美(Fannie Mae,也就是那个2008年金融危机中浪尖顶端的几家公司之一。),重新开始了码农生涯。写代码对我来讲不是个问题,哪怕是一门新的语言Objective C。
很多人都不会知道,现在这么牛叉的这个语言当时其实已经奄奄一息,连64位的C++库有一阵子都无法连接上,害得我当时不得已写了个类似现在protobuf以及thrift的用于不同语言交换数据的工具包,让Objective C、C++和Java可以随意快速通信。
后来又用JavaCC开发了我们自己的规则语言,用Java开发了我们自己的工作流引擎,java-xml捆绑工具,类似Spring的容器,分布式任务管理等等很多有那么些挑战但又非常有趣的软件工具。我们开发的业务系统主要是做投资组合管理、投资策略分析、投资收入模拟、投资回报分析以及市场风险管理,这些系统最后帮助房利美度过2008年的难关并且现在还在健康地奔跑中。
垒代码不是个难事儿,但开发这些复杂系统需要了解大量的金融知识。同时,通过做码农稳固自己的职位后,我那颗曾经做了多年管理的心又开始不安分起来,提高英语沟通能力以及金融知识成为最重要的任务。
于是我去读了个金融MBA又考了CFA以及FRM。有一天,业务大老板想设计一个算法来优化管理公司近1万亿美金的投资组合,找了半天居然没一个人敢接这个活儿。机会难得啊,反正没人做那么我就试试呗。结果我“披星戴月”花了好几周时间居然把这个给做出来了!这是我设计的第一个也是分量最重现在仍然在跑的一个金融量化模型,也正是因为这个有那么点牛叉的小成就,我操着磕磕巴巴的英语被提拔成了资深开发与分析经理。
相信自己,绝不轻易放弃,我觉得这是在美国的华人想爬到管理层的最重要的武器。一旦到了管理岗位,每天都需要噼里啪啦地说英语。和别的团队讨论问题,跟下属谈心写评语,慢慢的语言不再是什么大的问题。突然有一天,竟然发现自己可以用英语随意地表达自己的思想,那种自由的解放了的幸福感,就如同是一个喜欢飞翔的小鸟在笼子里关了很多年后,终于被放出去一样超级爽快。
归国入工行,寻求新挑战
语言、业务专业以及技术都不成为问题后,我便希望去寻求一些新的挑战。2010年,工商银行总行在美国和英国招聘金融市场领域的业务专家,我被录用了!
两年的时间里,我帮工总行成功开发国内第一套独立知识产权的金融市场交易与管理平台,管理着工总行近3万亿人民币的各类金融资产。如国内外债券、货币市场、外汇、黄金商品以及衍生产品等,并帮助总行完成对一家外资银行的并购。我在工行的任务是纯粹金融领域的,并不牵涉到系统设计与编码。可是,我骨子里是个热爱编码的码农啊,于是我在业余时间,又用Java写了一套债券估值以及风险计算的系统。
偶遇渣打,新的蜕变
本想离开工行自己创业,开发适合国内银行使用的风险管理系统,正好碰到渣打集团在中国建立金融市场研发中心,于是投身成为渣打一员。在天津管理一个全球开发团队,担任高级总监,支持集团的市场风险和流动性风险管理。渣打3年,把一个10来人的小团队做到150余人,横跨中国、印度、新加坡和英国。在一家有着150多年历史的跨国公司里做管理不想成长都很难,真的非常感谢这家以人为本的企业,帮助我涅盘到一个新的层次。
离开渣打前的一段时间里,我用过年的假期写了一个叫SmartETL的开源软件,我希望给我的团队一个创新的思路,直接给需求分析人员一个工具,跳过几十个低效率的IBM DataStage开发人员,为公司每年节省一百多万美元的授权费,并且能把开发人员从50人降低到10人。这也许是我以写代码为乐并对技术追求简洁高效的一种印证吧。
离开渣打是因为那句话:人应该有梦想,万一做成了呢!回想自己当年创业未成,进入大公司爬career ladder,终于爬到一定的高度,也应该出来闯闯啦。正好赶上中国互联网金融的创业热潮,既然自己在Fin(金融)以及Tech(技术)两方面积累了15年,不如拉出来溜溜。
投入万惠,FinTech历练
2015年年底,我加入广州的互联网金融公司PPmoney万惠集团,任集团CTO,全面管理公司的技术战略以及研发工作。先后主导开发了支持PPmoney理财的蜂巢引擎、支持借贷品牌及贷的大数据风控灵机系统、支持互联网证券的挖牛系统以及目前正在研发的智能投顾系统。后来还作为集团副总裁兼任集团消费金融子公司总经理职位负责集团的互联网借贷业务。尽管工作太忙没时间写代码,我还是抽空给团队用Java做了一些金融算法的原型,期间还学会了Python语言以及各类机器学习算法。学习真是一种快乐。
程序员非得转管理不可吗?
在中国和美国都从程序员做到过技术领头人,中美程序员有什么差别?做多久的编码转向管理岗会比较好?
美国的程序员比起中国的程序员普遍要更加全面和资深。美国大学以及研究生的计算机课程更强调动手和项目实操,这样他们毕业后很快就可以在工作中上手。国内的教学理论性更多一些,大多数学生一般都是在快毕业的时候才开始认真学些编程技能以应付工作面试。特别是研究生教学,2年半的时间里,很多人的时间都浪费了,替老师打工的虽然锻炼了一些技能,但很难有一个职业化的编程指导。很多都不知道自己具体在干什么混日子的,有没有?
职场中的程序员,美国资深的更多些。比如我所在的公司里写程序十几年的占一半以上,越老经验越丰富,无需做领导。美国的程序员可以拿很好的薪水,所以他们可以静心专门搞技术。国内的程序员相对要浮躁些,很多人都想做项目经理,认为只有做管理了,薪水才能上去。感觉国内也就几家互联网巨无霸公司可以有比较好的工程师文化,非管理的专业条线也可以发展的很好。
至于做多久的编码转向管理岗比较好,那要看是什么样的岗位。如果是项目经理类的,做2、3年转都可以。但如果是技术管理类的,如技术总监或者CTO,我的建议是至少5年以上,并且在做管理的过程中也不要放弃写一些代码,让自己对技术的嗅觉始终保持足够的灵敏度和准确的判断力。美国很多大投行的董事总经理(MD)都要求写一些代码的。我现在对自己的团队,也是要求总监级的人具备代码编写能力,这样才能把控好自己团队的方向。
作者介绍
康德胜,万惠集团副总裁及CTO,拥有20多年软件开发与管理经验,其中15年着重于FinTech领域;曾任英国渣打集团市场风险与流动性风险全球高级技术总监、工商银行总行海外特聘金融市场业务架构专家、美国房利美公司投资组合与风险管理资深开发经理、国内数家软件公司CTO等职位;
浙江大学计算机硕士以及美国马里兰大学金融MBA,拥有CFA以及FRM金融领域专业认证;在复杂金融产品交易、风险、估值、分析等金融业务领域以及计算机语言、大数据、分布式计算等技术领域有较深的造诣;大二开始软件创业,开源社区的积极参与者(github.com/dennisk28),深爱网球潜水滑雪等运动。
管理与技术未必不可兼得,一个20年IT老兵的码农生涯的更多相关文章
- SAP C/4HANA与人工智能和增强现实(AR)技术结合的又一个创新案例
今天这篇迟到的文章,来自我的同事Aviva. 去年SAP C/4HANA发布之后,SAP的从业者们可能或多或少都读过一些来自SAP官方渠道,比如微信公众号"SAP天天事"发布的一些 ...
- 为什么我要使用一个20年前的IBM老键盘
为什么我要使用一个20年前的IBM老键盘 发表在 心得体会 | 3条评论 几天前,我在网上发了一张图片,想炫耀了一下我的新MacBook Pro笔记本强悍的多屏功能.没人感兴趣.但图上的那个老键盘却得 ...
- SQL Server中TempDB管理(版本存储区的一个example)
原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...
- 从码农到技术总监分享Leader经验
从一个毕业的IT小伙或者一个码农成长为一个管理者,有很多需要转变的思想,那么当你遇到了瓶颈,或许我的经验能帮到你,感谢. 系统的掌握了.NET,JAVA技术,能够熟练的使用springcloud + ...
- Android码农如何一个星期转为iOS码农(不忽悠)
WeTest 导读 作为一个android客户端开发,如果你不懂点ios开发,怎么好意思说自己是客户端开发呢,本文讲解如何让android开发码农在一个星期上手IOS开发 --<记录自己IOS开 ...
- 对Delphi控件作用的新理解(控件本身的源代码就是一个很强的工业级源码)
最近几天,对Delphi控件的含义有了一个新的理解.其实它不仅仅是给程序员提供功能的一个表层调用,控件本身的源代码就是一个很强的工业级源码.而且它的Main例子,往往就已经是半成品.而别的语言里没有那 ...
- 用Python+qrcode库创建一个包含信息的二维码
安装qrcode库和PIL库 在命令行中分别输入pip install qrcode 和pip install pillow 导入库格式如下: import PIL import qrcode 下面以 ...
- 做为一个.net码农,打开公司的一个项目,大叔我哭了
先说下背景,楼主在上海,之前一直是做BS互联网开发的,今年进入这家公司,是做软件产品的小外企. 然后,啥也不说了,直接上图吧: 因为一个屏幕没有办法显示出来,所以我截了3张图,然后拼成一张,这还是我花 ...
- 刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码)
刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码) 测试开发社区 6天前 文章转载自公众号 AirPython , 作者 星安果 阅读文本大概需要 12 分钟. 1 目 标 场 景 ...
随机推荐
- 优步UBER司机全国各地最新奖励政策汇总(持续更新...)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://didi-uber.com/archiv ...
- Zabbix学习之路(七)之Nginx的状态监控
1.安装nginx [root@linux-node2 ~]# yum install -y nginx [root@linux-node2 ~]# mkdir /etc/zabbix/zabbix_ ...
- python开发ftp服务器第一天(pyftpdlib)
学习了大约快一个月的python,现在开始有意识做一些项目.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 据我了解,python现在更多的是用于自动化运维方面, ...
- Keil出错解决方法
1.安装KEIL5后创建工程后出现这个报错 解决方法:打开下图目录的文件. Keil.STM32F1xx_DFP.pdsc文件是只读文件,必须将只读属性取消. 如下图所示,注释掉红色圆圈的哪一行,保存 ...
- 学习HTML 第三节.接近正题:HTML样式-CSS级联样式表
CSS (Cascading Style Sheets)级联样式表 内联样式 内联样式- 在HTML元素中使用"style" 属性 使用内联样式的方法是在相关的标签中使用样式属性. ...
- Linux工作管理
工作管理? 其实也就是把程序放到后台来管理,在windows中也就是最小化,在Linux中是通过命令把程序放到后台中.jobs命令查看后台程序. 对于第一点注意事项,mysql启动是例外的,要是叉掉了 ...
- Scrapy爬去哪儿~上海一日游门票并存入MongoDB数据库
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZwAAAGGCAYAAABPDDfEAAAgAElEQVR4nOy9C3Rb1Z3/+z1Hkm35mT
- python-property、__get__、__set__
目录 property __set__ 和 __get__ property property装饰器的应用来自这样一个问题:如果对实例的属性值不加以限制,那么实例的属性值会出现明显不合理的情况,为了解 ...
- CsvHelper文档-5配置
CsvHelper文档-5配置 CsvHelper库被设计成快速且简单易用,但是有时候默认的是设置不符合要求,需要你自己改变一些东西.所以csvHelper内置了很多自定义设置选项来改变读写行为.特别 ...
- Numpy入门笔记第二天
# 数组的组合 import numpy as np arr1 = np.arange(5) arr2 = np.arange(3) print arr1 print arr2 [0 1 2 3 4] ...