当前位置: 网站首页 > 新闻中心 > 行业时讯 > 正文
2016/5/1 11:13:12

资深架构师需要拥有的一些品质和坚持

杭州宝三信息技术有限公司行业时讯编辑日期:2016/5/1 11:13:12

  对于程序员来说也是类似,如果你看到新技术,新产品没有像小孩看到新玩具那样两眼放光,没有想赶紧在自己电脑上玩玩的冲动,你就需要仔细考虑下是否真的对软件开发有兴趣?如果根本没兴趣,不要浪费时间,还是趁早转行,有更多有前(钱)途的职业在等着你。

  一个架构师,如果没有对技术的敏感度和前瞻性,一直抱着一套技术架构不变,估计很快会被淘汰。

  当然自制力强大的人除外,但话说回来,靠着自制力让自己做自己不喜欢的事情,岂不非常痛苦?

  对技术的好奇心/兴趣,是一切的基础。

  养成计算机的思维方式

  之前在“码农翻身”一篇文章,叫《学会编程,而不是学会Java》说的就是要能够以计算机的方式去思考。

  现在的计算机还很“弱智”,你不能这么说:『电脑,我要创建一个像Java的ArrayList类似的类,有个get、add、remove方法,还有这个ArrayList的容量不是固定的,能够自增长,快点给我写出来!』

  现在的电脑当然写不出来。

  相反你只能用计算机能理解的方式,用非常非常低级的计算机语言去告诉它做事情:创建一个类,分配一个固定大小的数组用来存放数据,用一个数(size)来记录数组里存了多少数据。如果数组满了,就需要增大数组,并且把数据从老数组复制到新数组。

  这里边有很多很多的烦人的细节需要你去处理,一不留神就会出错---计算机编程就是这样。

  养成计算机的思维方式,流畅的把人类语言的需求转化成计算机语言,这是程序员的基本功。

  很多人会语法,也懂框架,但是在基本功上却不过关,只能在初级程序员上踏步。

  如果有了在这样的机器上编程的经历,相信这些老程序员对硬件,驱动,操作系统,应用软件的理解要远远超过我们现在这些人。

  我之前要写文章遇到了一个问题:一个进程要读取文件,在底层用的是DMA的方式,DMA完成文件读取以后要通过中断让CPU去处理,但是CPU和中断处理程序根本不知道进程的ID,它怎么去和进行关联,如何去唤醒那个等待的进程?

  能不能把这些知识融会贯通,打通任督二脉,在我们的脑海里建立一个计算机运算的图景?

  把这些知识融为一体,我相信能超越绝大多数程序员。

  现在的软件开发封装的层次已经非常高了,只要学会Java就能做一个编程工作了,随着你做的越来越深,越来越专,这些基础的问题就会浮现出来。

  更重要的是,计算机软硬件的基本思想在这几十年里其实变化不大,

  例如缓存,增加抽象层等,有了这么基本的思想的武装,去学习新的东西不但学的快,理解的会更透彻。

  4要透彻地理解一个技术的本质

  先举个Ant中的例子,大部分人学习Ant只是学会怎么使用,认识到Ant提供了很多内置的task来帮助我们方便的完成自动化的构建,例如命令。

  很少人会思考为什么Ant的task是以XML来描述的?为什么Ant不提供一套Java类库/API来让程序员用,那样不是更自然吗?

  这其中的一个重要原因就是XML可以自定义标签,所以表达力无与伦比;如果用java,它的语法不允许自定义一个像copy、fileset这样的关键字,只能定义一些类来模拟这些Copy、Fileset,就没有这么简单明了,不信你尝试一下。

  Ant给我们的重要启示就是,用XML来描述任务,能极大的扩展语言的能力。但是Ant的问题就是需要程序员处理太多的细节,指定源代码路径,指定编译文件的路径,指定资源文件的路径,指定需要的jar包及其位置,很烦心。

  于是Maven出来使用“约定优于配置”的方式解决了Ant的问题。

  理解了技术的本质以后就能够触类旁通,就能够快速学习,这在技术更新很快的软件行业尤为重要。

  只是学会使用是不行的,不但要知道how,还要知道why。

  停下来,思考,才是进步的本质。

  要能写漂亮的代码

  架构师不是高高在上,脱离代码只说不做的人。架构师首先是一个优秀的程序员,要能够编写项目或产品中的核心功能,随时能够卷起袖子去解决项目中的问题。

  代码写的不漂亮怎么能拿得出手?怎么能够服人?

  所谓漂亮代码不仅仅是清晰、易懂、优雅,更要实现功能,没有Bug或者极少Bug。

  其实如果代码简单优雅,一般没什么问题。

  写出漂亮代码并不容易,需要思路清晰,有良好的编程基础,有优秀的抽象能力,以及对一门语言的熟练掌握。

  6抽象的能力

  抽象思考的能力怎么强调都不为过。

  现实的需求纷繁复杂,如果架构师不能够把这些乱无头绪的需求抽象成一些“概念”,在概念的层次进行思考,系统根本就无法设计。

  但是抽象出概念以后还不够,还要看看这个概念是不是正交的,能不能独立变化,如果不能,考虑下新的概念抽象。

  “正交”讲的是线性无关,非常重要,就像一个点(x,y),在x轴的变化不会影响y,y轴的变化不会影响x,这就是正交。

  “正交”威力巨大,(x,y)可以表达二维平面的所有的点,如果增加一个z轴,不但能表达三维空间中所有的点,并且每个轴都可以独立变化。

  如果能做出正交的设计,这个系统的开发和维护会非常舒服,以为可以放心大胆的修改其中一个方面儿不会影响其他。

  设计模式一直强调的『发现变化并且封装变化』其实就是这个意思。

  抽象能力的训练没有捷径,就是经验的积累,勤于思考和学习。

您可能还对这些文章感兴趣:
关注杭州宝三信息技术有限公司