"码农"与架构师

       相信很多人学习编程都是想要成为一个在这个方面有所建树的人,那么在编程这条路上,不同的人对它的看法也不一样,有的人认为所有搞编程的都是程序员,这个是毋庸置疑的,不过不同的人的工作的环境与职位不同,也就造就了各种各样的代号来形容不同的人。程序员 是 职业名称,码农是昵称。但是,在某种动机不良比如嘲笑或者生气,指责 时,显然,码农就具有贬义。当然我个人只是自嘲。

初级工程师

初级工程师主要是指刚毕业的,职场上的技术新人。通常这类人会有一定的专业理论知识,所以也能够比较快的学习公司的常用框架、工具和开发技术。能够在上级/导师的指导下,理解相关的业务知识。

能够按照研发需求完成部分模块和功能的开发,能够在别人的指导下解决研发中遇到的问题。

中级工程师

中级工程师是大多数三到五年程序员所处的水平。中级工程师必须要能够独立承担开发任务,并且能够独立负责某个模块或小系统。

能够根据自己的历史经验和学习能力,独立解决日常工作中遇到的技术问题。

高级工程师

高级工程师,一般是混迹多年,且有一定技术积累的程序员,有一套自己的开发方法。对于高级工程师要求能快速的理解业务、够独立负责一个中大型系统,且在工作中需具备指导他人的能力,属于团队骨干,在团队中有一定的技术影响力。

资深工程师/架构师

程序员到了资深的级别之后,其实在职业上可以分为两个发展方向。

一个是继续往技术深度上钻研,在某个技术领域内有一定的深度和影响力,我们称为资深工程师。

还有另一个方向就是往技术的广度上发展,除自身技术线以外,对周边相关技术也有一定的研究和理解,能够站在更高的维度上去俯视项目里的技术结构,业务理解能力也很强,根据不同业务,设计出不同的技术方案,这一类我们称为架构师。

个人觉得架构师需要具有以下几特点:

知识广度:需要知道主流技术为什么诞生,能解决什么问题?如果同一种业务用不用的技术来实现,会有什么哪些优缺点?要有清晰的认识会能在技术造型时做出正确的决定。

抽象能力:对业务和技术进行抽象。业务抽象就是对需求进行分析后,能够建立完美的实体类以及他们之间的联系。技术抽象是对整体架构进行一个分层,各层之间的交互。这至关重要,如果技术抽象能力不足,这会导致整个系统的架构不灵活,难以维护和扩展。

知识的深度:至少是某个领域的专家,

优秀的学习能力:对新的技术和前沿性的技术进行学习,使用它来解决工作中的业务问题。

当你能做到上面几点的时候你就已经是一个优秀的架构师了


怎么才能成为一名架构师呢,需要在这方面有意识的培养自己。

第一个培养,就是从行业这块,因为做我们这个软件行业,根据不同的领域,领域模型可能不一样,业务流程不一样,业务规则不一样。那么如果你对这个行业的业务规则、业务流程不清楚,你也很难得到一个好的理论模型,也就很难得到一个好的架构,所以从行业这方面,要有意识的培养这方面的能力。就是你可以集中在你公司所从事的一些行业,比如金融行业,或者制造行业,或者保险行业,电信、通讯这方面的行业,要有这方面的能力,你要有意识去积累。而不是要埋头光顾着写代码,而是有意识的去参与一些需求这块的理解和分析,这是我认为第一个。

第二个,就是要去掌握一些提高自己的抽象能力,提高自己的建模能力。因为架构师所需要具备的最大的、最强的一个能力,就是能够从很纷繁复杂的需求当中,从很多细节实现当中,能够去抽象出一个共同的东西出来,能够从不同的地方,能够找到共同的地方,也就是所谓的共性和可变性这样一种分析,他们在这一方面的能力把握的非常好。然后这一方面的能力,把握抽象出来以后,还要把它形成为一个模型,形成出领域模型、分析模型、设计模型,通过这个模型的方式来把它表达出来,就是我认为要有意识的要积累这方面的能力。

第三个,我认为应该有意识的、有前瞻性的去了解这方面的知识,不管是从网络上,包括像咱们InfoQ也有一个架构的专区,架构专区有很多很优秀的文章,都是国内外一流的架构师写的一些文章,可以有意识的去看这些方面的文章,或者是读一些优秀的书籍。那么从这方面来培养你在架构这一块的能力。

     “作为一名从事了10年开发的老程序员,最近我花了一些时间整理关于C语言、C++,自己有做的材料的整合,一个完整的学习C语言、C++的路线,学习材料和工具。C/C++、编程爱好者的聚集地!欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以跟我一起学习!”

       最后分享一张C/C++学习路线图给爱学习的小伙伴们

你可能感兴趣的:("码农"与架构师)