架构师成长历程:行到水穷处,坐看云起时

原创
开发 架构
对于任何一个程序员来说,架构师都是一个令人向往的角色。可以说除了少部分对程序开发有着极度的热爱并愿意为之奋斗终身的程序员,而大部分的程序员都只是把写代码作为一个获得职业提升的一个必要的累积阶段。在不断的开发和学习各种知识,经验,在自我培养和技能强化中不断的提升,为他们的未来中成为一名合格的架构师打下牢固的基础。

【51CTO专稿】对于大部分的程序员来说,架构师都是一个令人向往的角色。可以说除了少部分对程序开发有着极度的热爱并愿意为之奋斗终身的程序员,而大部分的程序员都只是把写代码作为一个获得职业提升的一个必要的累积阶段。在不断的开发和学习各种知识,经验,在自我培养和技能强化中不断的提升,为他们的未来中成为一名合格的架构师打下牢固的基础。

一名优秀的架构师,他们都是带着极度的热情,踏上正确的路上,不断的坚持!这就是一名优秀架构师的态度。下面小编有幸采访到了51CTO云计算架构师峰会的邀约讲师,前任金蝶总体架构部SOA架构师,现淘宝网高级专家彭渊(花名:千峰)老师,跟我们一起聊聊关于他的架构师历程。

[[91046]] 

前任金蝶总体架构部SOA架构师,现淘宝网高级专家 千峰

千峰简介:从业Java技术领域十多年,撰写过多款开源软件,拥有软件著作权的代表作有:BS系列软件(包括财务进销存、OA产品、CRM等)、FMS视频会议、Flash网站生成软件。其中BS系列软件获得过风险投资, FMS视频会议获得金山举办的首届中国优秀软件创新大赛优秀奖。其中《BS财务进销存》、《FLASH网站生成软件》在华军、天空可免费下载。《淘宝分布式并行计算四合一框架Fourinone》是云计算方面作品,目前已经通过压测并用于淘宝业务场景, wordcount和排序等经典指标均优于hadoop。

详见技术博客 (可下载开发包和demo):http://3503265.blog.51cto.com/

专长与研究领域:千峰踏入IT行业至今差不多12年了,一直做Java技术领域,几乎Java SE, Java EE,Java ME都涉及过。除此外,他还比较熟悉FLASH音视频技术和少量的C技术,主要是因为Java在音视频和操作系统层面控制比较弱的原因。而在应用方面,B/S结构的企业软件架构更是他的专长,并拥有一系列软件著作权。在淘宝先后在交易中心、中间件、核心系统部门,主要研究非法软件防范(秒杀器,炒信用,代拍,爬虫等)、大数据处理、语义分析、分布式计算、机器资源利用等领域。

(以下内容均为第一人称)

从对IT热爱到程序员生涯

我在高中时买了台中英文小霸王游戏机(那时有电脑的家庭很少),可以接在电视上玩,里面有个Basic编程的,我第一次学会了goto语句。大学时喜欢打电脑游戏,后来又觉的游戏打的好不算什么,当时流行做个人主页,有个漂亮的个人主页很有面子,于是我就买了本FrontPage的书,暑假关着门学做网页,穿插一些js动态效果和applet动画,看见流行flash动画,我又学习flash脚本。后来去找实习工作,别人说我搞的这些没用,他们不需要网页制作,他们要用PB+SQL Server,然后我又继续学习数据库应用,一直到毕业,我自学了很多VC++/MFC/ODBC等东西,也学习了Java。我大部分的编程都是靠自学,计算机课程和老师教的帮助比较小.我的第一份工作是基于Java编程的,还专门到bea公司进行了J2EE培训,后来就一直做了下来。

 

有朋友问过我,为什么只做Java编程,不去做C编程。实际上,如果仅仅是编程语法语句,任何一种语言我都可以很快学会。关键Java技术已经是一个从无线到桌面到Web到ic卡的完整的技术体系和规范,并生长出各种技术生态系统,如果要考虑快速落地实现一个系统,很多处理经验是要积累起来的。

从程序员到架构师的经历

“从感兴趣、学习、怀抱当比尔盖茨理想”到“走入这个行业靠编程谋生并成长为一个架构师”是一个曲折蜕变的过程,我记的好像是在2004年左右,架构师这个岗位从国外传入,很多公司出现了招聘架构师,以前比较多出现系统分析员。什么是架构师,各公司的标准也不一样,架构师更多是个岗位,你只要聘上了就是架构师。我自己的经历大概是这样的:

1)架构师要能hold的住一个软件或者系统的设计和开发

2002年我到广东发展没有经验,被两个老板骗到南海软件园包吃住干过一段时间,当时去投标一个南海民政的项目,公司是打着北方一个分公司名义的皮包公司,找了几个毕业不久的学生当工程师,又找了一个头衔多的海龟说是他们的技术总监,凑成一只廉价成本的团队去忽悠上百万的项目,老板说这个项目副市长亲口告诉他已经交给我们做了,只需要招标走走形式。

由于公司主要靠两个老板的关系,没有自己的技术产品,当时老板从其他公司找来一套民政系统软件,Web化的,老板说是其他公司一个资深点小伙子写的,说其实1-2个人就可以写了,没什么难的,叫我改成公司的产品去投标。当时接到这套完整的Web系统软件时,虽然是Java的,但是没有用到多少j2ee里面花哨的东西,都是jsp+Javabean这种简化的技术,也有控制器等角色,都是jsp实现的,里面复杂的页面流和大量Javascript脚本显示出开发者娴熟的Web编程功底,数据表可以自由搭建,里面有些简化的生成管理模块的工具。当时有种hold不住的感觉,感觉自己Web程序还写的太少,还未积累大量Web编程的处理经验和将业务系统通过构思设计转换成软件的能力。虽然急功近利的老板认为我可以,一再给我画饼,主要原因是因为我们便宜。当时感觉技术不用花哨,简单的技术只要用的多用的精,一样可以设计完整高效的系统。

说白了,架构师能hold的住一个软件或者系统的设计和开发,能将业务需求变成可实施的工程。后来看,那个能hold住民政系统的小伙子算是架构师吧。 老板缺乏对项目技术难度的认识,认为随便找几个工程师就能做,也许他之前也这样忽悠到过项目,但是这个项目最后没中,记的是东软通过重重关系中标了。

2)有一天你发现自己的能力可以去当架构师了

从那以后几年内,我都处处留意Web系统整个的架构设计,从登陆、用户、权限、菜单、session、日志等基础管理到从界面到动作处理到业务逻辑层到数据库设计的整个过程,模块的衔接和各种页面流的转发传送,每种实现技术我都尝试出最好的,并积累下来,我又从一个香港人那里学到一套更好客户体验的Web管理界面和交互方式,并转换成自己的东西用进去, 我注重强化自己各方面的开发技能, 连简单的美工也尝试自己处理。

我能自己实现一个完整的Web系统后就自己开个工作室,接一些小项目做,直到后来为一个小公司的老板做外包,我演示了自己的Web架构给他看,他说我觉的你挺适合来我们公司做架构师,那是第一次有人说我是架构师,有点踌躇满志。他们公司的主打产品是套domino的oa软件,老板出身ibm,对domino/lotus熟悉,但是由于市场和客户需求,想改成Java版的,但是又一直犹豫不决,我说我试试看吧。oa的主要核心技术是工作流引擎,他说他们已经做了很多年,Java没那么容易实现的。那段时间我反复研究工作流的原理,简化成工作流定义,工作流引擎,工作流实例几个模块融入进已有架构中,并做了他们没有的Web界面编辑流程,工作流可以搭建并生成流程代码,我顺便把oa的常用办公流程业务模块也生成了出来,配合权限体系能完成一个基本oa系统审批功能了。随着系统功能越来越完善,本以为他会高兴的,谁知道他的脸色越来越难看,有天居然以莫须有的罪名把我炒掉了。

我也许有问题不善于揣摩老板的心思,但是他的心胸也绝对是有问题的,所以最好不要到小企业当架构师, 大企业就像海,容得下各种鱼,小企业就象滩水,只容的下虾米.后来我继续写oa系统并包装成完整的产品,又找来小投资公司一起在社会上销售和做软件服务折腾了4-5年。

总结:如果你能冒着被k掉的危险设计出一个企业的核心产品了,那你可以去当架构师了。

3)聘大公司的架构师

我觉的自己相比经营公司更适合做技术.于是去大公司发展技术, 我应聘的第一家大公司是家金融软件企业, 2007年在美国纽交所刚上市,号称金融外包全国第一,当时红极一时.面试官看上去像老总(其实只是经理,他们公司经理看上去都像老总),我说我要聘架构师, 他脸一沉,说不能都当领导,得有人干活,先从高级工程师做起吧。我不同意,他说那好吧,有三道算法题你上机做一下,不能上网。其实那三道算法题是有一定难度的,要在规定的时间做出来,并且要能运行出正确结果,当时有点紧张,因为知道他是在压制我的自信,如果不能正确做出,肯定羞愧的不好意思再提聘架构师了。其中最难的一道是一个程序试探路径的算法,遍历出所有可行的路径,好在我的编程功底还不错,平时也喜欢写写这方面的算法,最后顺利做出了。他让一个研发工程师过来检查,没问题,然后似笑非笑的说,既然你坚持要当架构师,那就成全你吧,看你还算是个人才,给你加多1000块钱,但是你两年之内不要跟我提加工资,我们两人定个君子协定。我只能接受并谢主龙恩。

进公司后我发现,其实他们公司其他的架构师都是不用写程序的,而且架构师在他们眼里也就是一个干活的,比工程师好一点,但并没有多少尊重。架构师的上面是项目经理,再上面是经理,总监,总监上面还有很多领导,架构师向项目经理汇报,由项目经理指挥派活。应聘项目经理的是不需要上机编程的,技术弱点也可以,只要沟通好,领导认可就行,而且待遇更高。

这个公司虽然有很多架构师,但只是另一种小主管意义的头衔,当时在那个环境下也很迷惘,想往管理上转型,但是他们不同意,认为我干活更合适。后来这家7000人的企业因为非常混乱的政治斗争和在美国股市上做假账,在2011年被退市,然后就迅速崩溃了,让人感慨不已,这就是it行业,市场总在无情的洗牌。

说到这里,也许才踏入行业的程序员们有点失望,现实中的架构师没有想像中的那么令人向往,国内技术路线发展也注定坎坷。但是每个企业对架构师的定位标准和尊重程度都不一样,不能说天下乌鸦一般黑,互联网企业比传统软件外包企业要好很多。而且上面说的也只是我个人的经历和观点,不代表所有的现实环境。

 

架构师的成长曲线

从如何加强技能到自我培养

1)加强技能修养

有句俗话说的:不怕贼偷,就怕贼惦记。只要惦记上要掌握某项核心技术,不掌握誓不罢休,总会不知不觉在提高的。

但是很多程序员加强技能修养是希望得到公司的升迁回报乃至市场的利益回报的,如果他发现技能提升并不一定得到认可和回报,那么也没有多少人真正愿意往这条路上走了。因此,搞技术需要一点兴趣的,就象平时喜欢搞点吹拉弹唱的那些人一样,我平时也喜欢搞点编程什么的,所以一直还做着。

另外:

每个公司对架构师都有自己的定义,不一定是强调技术方面的技能,你会发现:

有擅长金融业务、ERP业务、电商业务的架构师

有擅长产品规划的架构师

有擅长售前和解决方案的架构师

有擅长咨询顾问的架构师

有擅长硬件网络的架构师

有擅长RUP/软件工程/CMM5/敏捷的架构师

有擅长管理协调的架构师

等等...

我在社会上各个公司里见到太多太多

所以不能简单的认为提高了软件编程的技能修养,就能达到所在企业架构师的标准了。要学会尊重不同类型的架构师,在大企业里往往这些岗位的存在都有他的现实意义和对公司的价值,没有众多架构师和领导的支持,很难推动起来办成事。

2)如何自我培养

我个人从实践中的成长更多一些,因为我大学毕业就投身这个行业去努力了,没有继续读书深造。

但是实践和理论都是重要的,有的人实践中碰到障碍后,干脆从此就只做一个理论专家,或者是自身缺乏理论学习,到处散布理论无用论,两种极端都不可取的。

从我的感受来说,我写bs财务进销存软件时,苦于不懂财务理论知识,花了很多时间去学习会计凭证、资产负载、折旧算法这套东西,也包括当时为了做其他软件去学习股票行情趋势理论、博彩概率和分成理论等等。学这些都不为考试,就为软件写出来能卖出去。同样的技术,如果做业务简单不需要专业理论知识的产品,比如企业网站、图书管理这些,太多公司都可以做,很难形成核心竞争力。现在做fourinone也参考了很多行业分布式论文理论。

我自己从程序员到架构师的成长上面经历已经描述了,但是如上面说的各公司定义这个过程的成长标准是不一样。

比如:

有的企业,为公司完成一定数量和规模的项目,就可以从程序员提拔为架构师了

有的企业,为公司解决一系列重大的问题,就可以提拔为架构师了

有的企业,前一任架构师走了,就可以提拔上去了

有的企业,经验到一定程度,就升上去了

...

关于架构师的培养,有的国外牛人会认为不是每个程序员都能成为架构师, 一定要有比较强的抽象建模能力和逻辑思维能力才可以,就像不是每个司机都能成为赛车手。这个话如果拿到国内讲估计会得罪很多人了,因为大家都会强调架构师的多样性,都会按照自己的优势去定位架构师的标准。

 

架构师成长模型

团队中如何开展架构师相关工作

通俗的比喻,跟裁缝做衣服也差不多,首先要量体裁衣(收集需求),然后选择布料(技术选型),设计草图(建模)把脑海里的设计画出来,做好一件衣服是要针线活功底和经验的(技术积累),同时要利用现有的拉链、钮扣等半成品(组件重用),最后把样品做出来(架构开发),最后交给工人按照样品重复性生产(基于架构实现重复性开发工作量)。

除了需求分析、技术选型、设计开发外,还有些其他的工作需要架构师做。

很多时候公司或者老板并不喜欢你把核心的东西提取出来,一个人单枪匹马掌握了就完了,更希望你把团队培养起来,把人才挖掘出来,所以架构师还肩负着带徒弟做设计的职责。

另外还包括

技术培训、协助软件产品规划、协助市场前景分析等方面工作。

坚持是最大的挑战

这次参加infoq架构师峰会,看到有朋友讨论到架构师应该独立做,但是没有团队,没有业务owner权,架构师设计出来的东西如何得到别人的支持呢,我以fourinone为例说明碰到的挑战和如何去克服。

fourinone发布1年多以来,以无依赖100k大小实现众多分布式核心技术,淘宝内压测多项指标都ok,虽然遭受其他框架爱好者和信任者质疑,但是至今为止,也未见到挑出一些真正的明确的毛病。一项好的产品,如何让大家能充分认识到他的优势,并梳理清楚大家赞成或反对的技术或非技术原因,这是对架构师一项大的挑战。

对人的攻关远比对技术的攻关复杂,有时候就算产品做的好也是有人反对的,所以要尽可能去定位成一个协助者,而不是一个取代者,就象jdk可以实现hadoop所有功能,但是没人觉的它是hadoop的取代者。fourinone更多的是定位在框架和api,为各种的分布式问题提供简化而强大的支持,可以用它改进完善已有系统,也可以用它建设新系统。它是一台缝纫机和一条拉链,而不是一件完整的衣服,不会对另一件衣服够成冲突。

当然,最大的挑战还是坚持往架构师这条路上走,朋友们如果碰到一时困难也不要着急,行到水穷处,坐看云起时,忽悠忽悠也就过去了。

最后感谢你们的真诚采访,算不上成功权威,胡乱说了一通,希望大家有所借鉴和收获。

 

责任编辑:林师授 来源: 51CTO.com
相关推荐

2012-08-29 08:45:23

开发技术周刊

2013-01-17 09:49:51

BI企业云数据分析

2019-05-22 15:42:10

2012-08-04 16:02:00

架构师

2012-08-13 16:48:31

架构师

2012-08-17 18:13:55

架构师

2012-02-22 14:35:09

100G路由

2017-06-09 16:57:52

戴尔任意云企业云

2018-12-29 09:58:19

码农架构师Leader

2013-04-19 15:12:17

架构师WEB架构师

2021-02-20 23:35:12

零信任云安全网络安全

2023-08-20 12:21:18

软件开发架构设计

2010-10-28 11:32:37

马云

2022-01-24 06:46:23

开源Marak恶意代码

2012-06-20 09:14:07

系统架构运维

2018-07-03 15:46:24

Java架构师源码

2013-04-15 10:09:18

Web架构师

2013-04-15 11:08:00

架构师Web

2012-08-14 16:57:25

开发技术周刊

2012-04-05 10:25:02

WEB架构师
点赞
收藏

51CTO技术栈公众号