阅读更多

15顶
0踩

非技术

原创新闻 飞行的架构师和奔跑的程序员

2016-02-18 10:54 by 副主编 mengyidan1988 评论(4) 有5808人浏览
原文地址:http://blog.csdn.net/mindfloating/article/details/50682201
关于程序员和架构师的讨论很多,我想从不同的角度说下。

寻路

当我刚进入软件行业成为一名程序员时,我的理想就是成为一名架构师。架构师这个词的英文叫 Architect,原意是建筑师,因为软件行业参照借鉴了很多建筑行业的概念,所以就借用这个词。我是在学校读书时知道架构师这个名词的,当时很多软件方面的书都是翻译过来的,现在也不知道是谁最早把 Architect 翻译成架构师的了。总之从那时起,架构师这个名词对于我这个还刚准备走出校门的学生来说就特别高大遥远,自然当成了最初的一个职业目标。

可惜,我进入第一家公司后,这是一个家民营 IT 服务企业,我发现居然没有架构师这个职位。我所在的一个几十人团队里,本科刚毕业的是助理工程师,硕士刚毕业的是初级工程师,然后是中级,高级工程师。再往上就变成了项目经理、这个团队就是一个项目经理,下面有几个高工,然后一堆初级和助理工程师。让我颇为失望的是,我当时明显觉得未来我的职业发展目标并不是当时团队项目经理所处的方向。不过一想我离架构师这个目标还早,当时估计最快也要十年吧,先把程序写熟再说,我也不太可能在这里干十年,以后换个就好了。

实际,一年后我就换了个公司,入职后又失望了,发现还是没有架构师这个职位。不仅没有架构师职位,连工程师都不分初、中、高级了,全是软件工程师,再上面是组长、科长、部长,然后就是总经理。科长、部长这类职位是国营性质的,而经理这类职位更像民营公司性质的,这就是一家正在从国营向公司制转型的公司,所以职位也很奇特的混合着。我当时也是想还早,先专注好眼前的事,写好程序做好事情,至于有没有架构师这个职位将来再说。

在这里工程师虽说不分级,但团队里也有一位大家口中的牛人,姓陈,大家称呼陈总,实际并没有承担任何管理职责。工作了十多年了,专注于 IBM AIX 和 HP UX 小型机以及 Oracle 数据库调优。我们那时经常长期出差在客户现场开发、实施,支持上线等,陈总一般不出差。他出现的时候一般都是我快把数据库搞挂的时候,然后就来现场救火,分析磁阵 IO,抓 SQL 调优什么的(当时应用系统都是围绕数据库为中心的)。通过从底向上来发现性能瓶颈,再建议程序优化,当时我觉得他最符合我对架构师这一角色的一些想象,但又总觉得还差点啥,当时是说不上来。总之当时我是很期盼看到一个真正的架构师是怎样的,他们是如何工作的?

在第二家公司工作了几年后,工作了已快 5 年了,我还是没有找到答案,而且感觉走程序员技术发展道路在当前的公司碰到了瓶颈。再次跳槽后,我想之前民营和具有国营性质的公司都没有架构师职位,而且这个名词来自国外,那么外企应该会有吧?尝试去面试过几个外企,不幸的是英语口语太差都没有通过面试,而我那段时间也从广州搬回成都。老实说成都当时的程序员就业环境比广州差不少,工作找的有些郁闷,就干脆休息了半年,好好想想清楚下个五年我该何去何从?

也正是在这赋闲的半年,我突然发现原来除了国企、民营 IT 服务(外包)企业和外企之外,还有一类公司和它们很不一样。这就是互联网公司,而可惜的是成都当时几乎没有任何互联网公司在这边有研发。而正在我等待的时间里,一家新兴快速成长的互联网电商公司正好在成都设立研发中心,时机正好也就加入进去。

奔跑

进了互联网公司后,不仅有了架构师职位还有架构师团队,有了方向又可以放心的作一名程序发力狂奔。不停的写程序,优化代码,追求更优更简洁的代码,重构了一遍又一遍,解决一个又一个问题。我曾在以前的文章中将程序员具体和代码相关的工作比作剑术,修炼代码技能类似练剑的过程。很多程序员梦想着有一天能成为一代高手,面对敌人,抽刀拔剑,刹那间交击,归剑入鞘,敌人倒下。就像线上系统突然出现大问题,你打开电脑,查了几行日志,敲下几行代码,分分钟系统恢复。

好吧,实际这也就在电影里能有,随着系统规模的扩大,程序员需要解决的问题和解决问题的方式完全不同。以前看过一篇文章说,进入大规模分布式时代,局部的代码优化已不是最重要的,不像二十年前硬件制约了软件的规模。更重要的是程序之间的协作方式,沟通路径的简洁清晰性。

一个好的程序员当然能写一手好代码,在我学习写程序的前七八年里,业余时间做了一些练习性质的项目。在 Github 之前的时代,Google 还能访问,在 Google Code 上维护了应该不止十万行的业余之作。后来 Github 兴起后迁移过来,不断练习重构优化维护自己的专属工具库,删减了很多冗余代码又新增了不少,目前还剩下几万行。这个过程持续了七年,基本每年重构优化一次,在 Github 持续 commit 时间最长有 118 天(最近看到有人连击 365 天的,真心佩服)。如今过去两年再回头看曾经的代码,不能说觉得完美到不能再优化了,只是觉得继续下去于我剑术精进终究有限,而更大的价值如今已不再局部的优化上。

此时我已在团队承担总体的系统设计工作,专注于局部代码优化其实是在驱动细节而非本质。资深程序员出身的架构师,单兵作战能力都是极强的,就像《进击的巨人》中的利威尔兵长,具备单挑巨人的能力。可当你面对成群结队的巨人来袭时,个人单挑能力的作用始终有限。这时从程序员到架构师不仅仅是一个名称的变化,有时它也意味着技能和视角的转变。在地上飞奔了七八年的程序员,在面对成群的巨人袭来时,深深的感觉到,杀光巨人不应是目的,真正的目的是到达彼岸。选择合适的路径,坚定的前行,清除或绕过挡道的巨人,到达目的地。

飞行

资深的程序员,每天大部分时间和代码打交道,当需要转变为架构师时,却有一个障碍,借用一句台词来说:
引用
汝今剑术已成 ,而道心未明,唯不能斩绝与代码之情。

开发功能,解决 bug,优化代码,这是一个资深程序员的拿手技能,也是地面作战的基本技能。而一个架构师还需要掌握其他维度的技能,也许就像一个立体机动装置,让你能在需要时飞在空中看清全局,也能落地发起凌厉一击。多了一个空中的维度,过去在地面练到精熟的剑术,飞在空中还有效么,这需要时间去学习,适应新维度的技巧。

这不是一个容易掌握的技能,这正是我曾经写过的从一个点到另一个点连成线的技能升级,需要一个升维的学习过程。所以很多讨论架构师到底还要不要写代码这事儿的,我思考后的结论是,需要拔剑时就拔剑,而无需在意如果每天不拔剑是不是剑就锈住了?当剑术精进后总觉得每次拔剑就要杀人(只处理难题),其实有时拔剑也可以只是切菜(挡路的小问题),只要有助于达到目标。就像《火星救援》里的马克为了回家便要去种土豆,只要开始,解决一个问题,解决下一个问题,解决下下个问题,等解决了足够的问题,就能回家了。飞在空中的架构师就是要在高处看清都有哪些挡在回家路上的必要问题,落地成为进击的程序员们将其一一斩杀。

如今问我,还出剑么?剑还在手,该出就出。那么还练剑么?练,练空中出剑,术还未成,但道心已明。
来自: CSDN博客
15
0
评论 共 4 条 请登录后发表评论
4 楼 我会是微博 2016-02-20 15:02
文武双全
3 楼 java_workblog 2016-02-20 10:28
谢谢前辈的教导.
2 楼 飞天奔月 2016-02-19 13:28
我也喜欢 火星救援 的那句经典台词


Now you can either accept that
你要么屈服
or you can get to work.
要么反抗
That's all it is.
就是这样
You just begin.
你只要开始
You do the math. You solve one problem
进行计算,解决一个问题
and you solve the next one,
解决下一个问题
and then the next.
解决下下个问题
And if you solve enough problems, you get to come home.
等解决了足够的问题,你就能回家了
1 楼 ivan19861025 2016-02-19 10:27
楼主文章写的好, 赞一个.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 外企程序员常用英语单词

    飞行员;领航员 adj. 试点的 v. 驾驶;领航;试用 n. (Pilot)人名;(意、印)皮洛特;(法)皮洛 28, REDIS 重划学区系统(redistricting system) 29, expires [ɪk’spaɪəz] n. 到期;有效期 v. 期满;...

  • 从草根到百万年薪程序员的二十年风雨之路

    在写这篇文章之前,该用什么样的标题,我犹豫不定,草根?百万年薪程序员?会不会被人当成标题党。二十年来,我所见过的草根程序员很多,优秀的草根程序员...本文记录了我从高中毕业之后的学习和工作经历,希望可以...

  • 理解专业程序员

    铁文整理   理解专业程序员 Understanding the Professional ... 如果你是一个程序员,或是程序员的管理者,或者处于任何和程序员紧密相关的位置,这就是你该读的那本书

  • 从草根到百万年薪程序员的二十年风雨之路。

    文章目录1、不快乐的中学时期2、从五笔打字到Foxpro3、向广州出发4、前往上海滩5、再回广州6、初识C语言7、开始再学习8、我要创业9、再...程序员20、再再后来21、总结一下吧21.1、关于百万年薪21.2、学习的必备条件2...

  • 【转载】从草根到百万年薪程序员的二十年风雨之路

    百万年薪程序员?会不会被人当成标题党。二十年来,我所见过的草根程序员很多,优秀的草根程序员也不少。人与人之间的差别其实很小,很多人因为年少不懂事或其它的原因没有考上大学,但并不表示他的智商或能力有问题...

  • 程序员的思维修炼:开发认知潜能的九堂课

    个层次、人类大脑的运行机制、直觉和理性的利与弊、学习方法和实践经验的重要性、控制注意力的技巧,等等,可谓是一本程序员“素质教育”的微型百科全书。我非常支持一个白话版的“素质”定义:除了书本知识、硬性...

  • android安卓源码海量项目合集打包-1

    下载地址 最后更新共计113个分类5177套源码29.2 GB。 卷 新加卷 的文件夹 PATH 列表 卷序列号为 00000200 5E7A:7F30 F:. ├─前台界面 │ ├─3D标签云卡片热门 ...│ │ android 流式布局和热门标签.zip │ │ ...

  • 安全体系设计结构和设计原则_讨论软件体系结构的30条共同原则

    安全体系设计结构和设计原则 想象一下飞过的体系结构审查。 一位建筑师走进去,环顾四周,掩饰着自己的双筒望远镜。 他提供的评论通常过于笼统或脱离上下文。... 架构师应该策划而不是命令,塑造...

  • 现代软件工程讲义 1 软件工程概论

    几乎所有程序员都知道“数据结构+算法 = 程序 ” 这句名言。但是在实际的学习和工作中,也有不少人产生了疑问。例如: 1. 我写了二叉树的周游算法实现,在这里,二叉树是数据结构,周游的实现细节是算法。我写的...

  • 现代软件工程系列 软件 = 程序 + 软件工程

    软件随想: 软件 = 程序 + 软件工程 最近和几个同道谈论了一些程序,架构,软件的问题,大家身在此山中,绕来绕去,始终没有能有明确清晰的结论。我把一些想法写在这里,供专家指正。 几乎所有程序员都知道“程序 = ...

  • 实例谈面向对象编程(OOP)、工厂模式和重构

    为什么80%的码农都做不了架构师?>>> ...

  • 【BP回归预测】蜣螂算法优化BP神经网络DBO-BP光伏数据预测(多输入单输出)【Matlab仿真 5175期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

  • 西红柿成熟度分割数据集labelme格式686张3类别.zip

    样本图:blog.csdn.net/2403_88102872/article/details/144566118 文件放服务器下载,请务必到电脑端资源预览或者资源详情查看然后下载 数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):686 标注数量(json文件个数):686 标注类别数:3 标注类别名称:["unripe","ripe","rotten"] 每个类别标注的框数: unripe count = 2452 ripe count = 1268 rotten count = 710 使用标注工具:labelme=5.5.0 标注规则:对类别进行画多边形框polygon 重要说明:可以将数据集用labelme打开编辑,json数据集需自己转成mask或者yolo格式或者coco格式作语义分割或者实例分割 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注

  • RustCryptopals学习密码学和安全概念的工具集

    这个项目是一个全面的密码学学习工具,适合作为Rust编程和密码学入门项目。希望这个项目能帮助你提升Rust编程技能,并深入理解密码学原理!

  • LabSpec6 软件功能参考文献

    LabSpec6 软件功能参考文献

  • 【BP回归预测】基于matlab凌日算法优化BP神经网络TSOA-BP光伏数据预测(多输入单输出)【Matlab仿真 5170期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

  • 【BP回归预测】基于matlab阿基米德算法优化BP神经网络AOA-BP光伏数据预测(多输入单输出)【Matlab仿真 5135期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

  • BLE蓝牙单片机CC2540、CC2541带OSAL操作系统的项目实战开发例程-蓝牙自组网一主机三从机收发数据例程.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2540/CC2541上运行,如果是其他型号芯片,请自行调整。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

  • 【电力负荷预测】基于matlab飞蛾扑火算法优化回声神经网络MFO-ESN电力负荷预测(多输入单输出)【Matlab仿真 5322期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

Global site tag (gtag.js) - Google Analytics