卫向军
卫向军,国内资深互联网技术专家,有多年的高并发、高可用、高可扩展大中型系统架构设计经验,擅长大规模分布式系统架构设计,曾参与和推进亿级用户下的新浪微博平台架构演进,国内网盘先驱金山快盘商业版本研发负责人,系统从0到百万的设计者和推动者,在面向企业的音视频会议系统方面有深厚造诣,参与和推动微软的Lync统一通讯产品向移动平台的转型工作,活跃于国内知名的中高端技术社区InfoQ。
程序员客栈席文奕:您是否可以简单的做一下自我介绍?
卫向军:大家好,我是卫向军,毕业后在微软工作五年,先后参与研发微软的Visual Studio建模工具(Spec Explorer)、面向企业的视频会议系统Lync,在微软的这段时间积累了深厚的音视频协议栈经验。
接着去了金山云,作为负责人主导了金山快盘商业版的研发工作,在一年时间内,成为国内企业网盘领域的领头羊,期间带过产品、技术、设计、测试,积累了产品研发从0到1探索的宝贵经验。
14年在国内网盘的热潮退却后,来到新浪微博,重头搭建微博的文件存储服务平台,这是一个面向短视频、图片、附件、长微博等各种文件的存储代理中间层,以及消息箱基础架构的优化和迭代,并积极推动亿级用户下的新浪微博平台架构演进。
3个月前,来到在线教育创业团队三好网,担任CTO职位,负责TEAM的产品研发和技术, 主要有教育P2C平台交易系统、后端CRM和供应链管理系统、面向老师和学生的1对1直播教学系统、好学宝智能学习硬件、搜索推荐统计平台、移动App等。
程序员客栈席文奕:从一名普通程序员成长为一线互联网TEAM的架构师,您的进阶之路是怎样的?换言之,您从一个菜鸟,到微软,到金山云,再到新浪微博,您的职业生涯经历了哪些转变?
卫向军:从我的个人经历来说,每一次职业生涯的转变,在个人专业能力和管理水平上都有质的提升。
微软工作的5年,在进阶之路上是打基石的阶段,微软的工程师文化和世界一流的软件开发管理流程对我的影响深远,在微软经历了Mentor审核我的代码,到不需要审核,到审核其他人的代码,其严谨、认真、精益求精的工程师文化为自己打下深厚的技术基础,同时全球化的跨团队开发经验也锻炼了自己的组织协调能力和良好的沟通能力。
在金山云的2年时间,个人提升最大的还是研发团队管理能力以及技术的广度,当时项目在内部是当成创业孵化项目来做,自己从一个单纯的技术人员,转变为技术管理者,在产品设计、架构设计、项目管理上投入了非常多的精力,在项目推进过程中遇到各种麻烦不断的解决,逐步成长为真正的项目负责人,个人的主动性、执行力都有了质的提升。
新浪微博的1年半时间,现在回头看是跨越了一个瓶颈,过去的技术积累,在新浪微博亿级DAU的磨练下,逐步积累了宝贵的千万级高并发、高性能、高可扩展的互联网架构和研发经验。当然,这其中也离不开自己的辛苦努力,自己所带的业务发展快,每隔1、2个月就有新的流量挑战,需要不停的重构系统,团队晚上经常一起加班到深夜,另外开始尝试主动在网上发表技术文章,其实过去也一直有写文章的习惯不过没有对外分享,尝试过以后,发现效果非常显著,对外文章不进会给自己更大的压力逼迫自己去总结、去想想有没有逻辑漏洞,同时技术同仁的讨论交流可以开阔自己的视野,有时候甚至能解释自己一直没理解清楚的技术疑点。在微博这段时间,自己带领团队进行技术攻坚的能力也得到了很大的提升,团队管理、团队招聘和培养、团队激励、复杂人事关系处理能力都越来越得心应手。
加入三好网只有四个月左右,需要管理整个产品、技术、设计团队,我们的在线1对1业务做的事情又非常多,在团队人员管理、技术攻坚、项目管理上都遇到非常大的挑战,目前通过加班勉强能把负责的事情搞定,自己给自己打59分,离梦想中的自组织式战斗力一流的团队还有很大的距离,希望经过一年的磨练,在构建高效的研发管理体系上有所心得。
程序员客栈席文奕:对您来说一个优秀的架构师需要具备什么样的技能?或者什么样的知识结构?
卫向军:我想从架构的本质谈起之后,希望大家理解在做一些建构设计的时候,它的出发点以及它解决的要点是什么。
架构,刚开始的解释是我从知乎上看到的。什么是架构?有人讲,说架构并不是一个很悬乎的东西,实际上就是一个架子,放一些业务和算法,跟我们的生活中的晾衣架很像。更抽象一点,说架构其实是对我们重复性业务的抽象和我们未来业务拓展的前瞻,强调过去的经验和你对整个行业的预见。
我们要想做一个架构的话需要哪些能力?我觉得最重要的是架构师一个最重要的能力就是你要有战略分解能力。这个怎么来看呢,第一,你必须要有抽象的能力,抽象的能力最基本就是去重,去重在整个架构中体现在方方面面,从定义一个函数,到定义一个类,到提供的一个服务,以及模板,背后都是要去重提高可复用率。第二,分类能力。做软件需要做对象的解耦,要定义对象的属性和方法,做分布式系统的时候要做服务的拆分和模块化,要定义服务的接口和规范。第三,算法(性能),它的价值体现在提升系统的性能,所有性能的提升,最终都会落到CPU,内存,IO和网络这4大块上。
程序员客栈席文奕:程序员如何合理做好时间管理?您有哪些好的建议?
卫向军:在时间管理上,我个人的经验是首先要对生活和工作保持热情,这是基础。在此之上寻找合适的自己的时间管理方法将会达到事半功倍的效果。针对程序员来说,根据“二八原则”,找寻自己每天最清醒的时间来做最重要的事情,每天留出一段时间来想想个人未来的发展,做好远期规划,了解行业、技术前沿知识,不断更新自己的知识结构。市场上也有一些不错的时间管理的书和网站,比如番茄工作法、GTD等都很不错,推荐大家看看,找到适合自己的时间管理方法。
除了留出20%的时间充电,不断提升个人的能力和素质,剩下80%的时间中,同样遵循“二八原则”,80%的时间专注于20%重要的事情上,提早规划安排,尽量减少分配在紧急事情上的时间。
最后说一点,随着移动互联网的冲击,大家花在智能手机上浏览碎片化信息的时间越来越多,这种情况下,逐步建立自己的阅读习惯和阅读体系,把时间花在一些有价值、有内涵、有深度的文章上,不要浪费在大量无关紧要的突发、娱乐新闻上。
程序员客栈席文奕:知乎上有相关的讨论,码农35岁以后怎么办?您怎么看待这个情况?
卫向军:如果一个码农有意识35岁以后做什么,说明他是有危机意识的。从我的过往经历和感悟来说,每个人35岁以后在职场中处于什么位置和踏入职场后每一步的规划和坚持执行息息相关。所以从当下开始要想想自己想要什么,给自己设立清晰的目标,基于SMART原则制定相应的执行来一步步达成自己的目标。对于技术人员来说,技术路线还是管理路线?电商行业还是社交行业?创业还是大集团?专注于技术还是转型产品、软件测试(www.proginn.com/users/csgcs/)?后台技术还是前端技术?朝九晚五还是996?如何选择呢,在我看来最重要的是追随内心深处的声音,做自己喜欢的事情,保持长期的热情和坚持,在35岁时一定能达到一个满意的人生状态。