[系统架构师应该掌握什么]系统架构师(又称企业架构师或者系统设计师)是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。他/她主要着眼于系统...+阅读
从程序员到架构师你需要掌握什么能力
1、开发者和架构师之间最大的区别是什么?
架构师和开发者一样,也经常写代码,简单的说,开发者和架构师之间最大的区别就是技术领导力。
软件架构师的角色需要理解最重要的架构驱动力是什么,他提供的设计需要考虑这些因素。架构师还要控制技术风险,在需要的时候积极演化架构,并且负责技术质量保证。从根本上讲,架构师是一个技术领导者的角色,这就是最大的区别。
2、一位开发者如何才能成为一位架构师?他/她需要掌握哪些领域之外的能力?
两个字:经验。
我认识的大部分优秀软件架构师同时也是出色的软件开发者,他们都是经过时间逐渐发展成为架构师的。你需要有退后一步看代码的能力,从而理解特定软件系统背后的设计决策。退后一步才能看到“大局”,这是架构师必须掌握的核心技能。
3、你对软件架构的理解是否因为你的经历和实践而改变过?
是的。我对软件架构的理解是根据我在咨询公司工作时在各个项目中负责软件架构的经验形成的。咨询是一件好事,尤其从最近我开始从事独立咨询师这个工作之后,我可以看到很多不同的团队,不同的架构,不同的技术,以及人们不同的工作方式。世界各地的文化多样性又为工作的复杂度增加了一个维度。无论是寻找特定问题解决方案的过程,还是为各种想法去芜存菁的过程,这些经验和与我共事的人的反馈一起最终形成了我今天对软件架构的认识,这些思维也反应在了我的书中。
4、有没有什么事是架构师永远都不应该做的?
有,软件架构师永远都不应该停止编程和停止学习!
在程序员从初级走向资深的过程中,会面临两个支路,一个叫技术主管,另一个则是架构师。
总结程序员到架构师之路的忠告:
1、程序就是一切。文档是紧接其后的事情。因此,把你们的代码写成本身就是文档,而且要好用。
2、测试 测试 测试。
3、单元测试要严格。任何一个单元测试中发现的bug都负担了开发人员成本外的双重代价。你们要知道,我宁愿给你们更多的薪水也不愿找别的QA公司来测试、让你们修改bug。但如果你的程序写的很差,那我只好把这些钱由这些人平摊,你们只能得到其中很小的一块蛋糕。
4、写出好代码要能给人类阅读,给CPU使用。绝对不能向烂代码低头。
5、阅读更多的知识,不要局限于目前的工作所需。如果你只掌握今天需要的知识而不知明天需要的,你不会有发展进步。
6、回家不时的做做饭。是的,真的饭。这会让你知按照菜谱做饭和自己创造一顿饭之间的区别。前者是在做饭前已经知道了需要什么,而后者是根据你目前有的来做 … 就这一点点不同。
7、抽象的能力,抽象思考的能力怎么强调都不为过。现实的需求纷繁复杂,如果架构师不能够把这些乱无头绪的需求抽象成一些“概念”,在概念的层次进行思考,系统根本就无法设计。
8、技术领导力,要用技术的影响力来领导人,而不是威权和职位。换句大白话来说,就是要能让技术人员服你。有了技术影响力,你在团队发出的声音才会被倾听,被尊重。
程序员的职业规划 30岁以后又该如何怎样成为架构师
1、程序员首先需要提高系统设计能力。现在很多程序员不是按照应该如何设计最好做得,而是按照我会什么来做的,最终造成设计思想落后。现在做项目需要的是新的、巧的设计思想。
2、已经工作两年以上的程序员可以有几种基本的职业规划:技术专家、软件架构师、实施顾问或销售。
(1):其中程序员最主要的发展方向是资深技术专家,无论是Java还是.NET,还是数据库领域,都要首先成为专家,然后才可能继续发展为架构师。
尽管架构师的职位可以工作一辈子,待遇也非常好,对于科班出身的程序员最为适合,但这种工作职位非常有限。
(2):实施顾问和销售就比较偏向市场了,除了一定的技术能力外,需要掌握很多IT以外的知识。这些发展方向对于从其他专业转入IT的人员更为适合。要做行业专家,就要比自己的行业客户还了解这个产业的发展现状。
3、对大多数人来说,首先是要专,在技术上做的比较深入,然后进行工作调整,把自己转变为某个领域的专家,第三步,根据自己的情况,决定自己做软件架构师还是高级的顾问销售,另外一部分人可能就会走向行政管理,这和个人性格有关。
总而言之,每个人至少三年要点评一下自己:是环境的原因,还是自己个人的原因,如果是环境的原因,可以考虑是否需要换地方,如果知道自己,可以调整自己或者设的目标现实一些。从一个普通的程序员做起,3年时间至少能够做到做独立需求分析和设计的。...
延伸阅读:
软件架构师需要具备哪些能力1. 多看书 1.1 设计模式,重构,这两本让我能从程序员的视野往外走一点 1.2 企业应用架构模式,领域驱动设计,比设计模式深一点,解决的也是更实际的问题 1.3 人件、人月神话、梦断代...
程序员进阶:怎么成为一个软件架构师软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。...
程序员需要学什么程序员可以分为很多种,像Unix程序员、Windows程序员,或是C++程序员、Delphi程序员, 1. 嘉华职业教育程序员首先学的就是各种脚本,asp、jsp、php等等,这些东西大同小异,基本可以举...
要做程序员需要学会什么零基础学习java可按照这份大纲来进行学习 第一阶段:Java专业基础课程 阶段目标: 1. 熟练掌握Java的开发环境与编程核心知识 2. 熟练运用Java面向对象知识进行程序开发 3. 对Ja...
程序员需要学些什么程序员需要: 学习软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,分配项目的实施和技术支持工作。学习软件部开发的软件项目的相关软件技术。...
县级农村饮水安全工程从开始到完工需要哪些程序“十大民生工程”: 1.开发完成劳动保障网格化监管信息系统;制定欠薪应急周转金具体操作流程及实施细则;在符合条件的企业建立企业劳动争议调解委员会,研究在龙山、观海卫、周巷...
程序员需要做些什么题目来提高思维能力程序员都是大量代码“堆”出来的,没有太多捷径。 参考建议如下: 1. 《数据结构》,是程序员培养基础思维能力的重要内容。你也可以在学习后通过ACM等系统的大量试题提高思维和理...
架构师跟程序员有什么区别呢程序员:做编程的底层开发工作,写代码,不停的写代码软件设计师:其实这个概念不太清楚,跟架构师类似,就是要分析设计这个软件的整体概念,就像盖房子要先画图纸,然后分给不同部门的人去...
运维架构师是程序员还是运维人员属于运维人员。 运维工程师负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的ROI。运维工程师面对的最大挑战是大规模集群的管...