软件工程之美
宝玉
Groupon资深工程师,微软最有价值专家
立即订阅
6739 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 你为什么应该学好软件工程?
免费
特别放送 | 从软件工程的角度解读任正非的新年公开信
学习攻略 | 怎样学好软件工程?
基础理论 (9讲)
01 | 到底应该怎样理解软件工程?
02 | 工程思维:把每件事都当作一个项目来推进
03 | 瀑布模型:像工厂流水线一样把软件开发分层化
04 | 瀑布模型之外,还有哪些开发模型?
05 | 敏捷开发到底是想解决什么问题?
06 | 大厂都在用哪些敏捷方法?(上)
07 | 大厂都在用哪些敏捷方法?(下)
08 | 怎样平衡软件质量与时间成本范围的关系?
“一问一答”第1期 | 30个软件开发常见问题解决策略
项目规划篇 (8讲)
09 | 为什么软件工程项目普遍不重视可行性分析?
10 | 如果你想技术转管理,先来试试管好一个项目
11 | 项目计划:代码未动,计划先行
12 | 流程和规范:红绿灯不是约束,而是用来提高效率
13 | 白天开会,加班写代码的节奏怎么破?
14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决
15 | 风险管理:不能盲目乐观,凡事都应该有B计划
16 | 怎样才能写好项目文档?
需求分析篇 (5讲)
17 | 需求分析到底要分析什么?怎么分析?
18 | 原型设计:如何用最小的代价完成产品特性?
19 | 作为程序员,你应该有产品意识
20 | 如何应对让人头疼的需求变更问题?
“一问一答”第2期 | 30个软件开发常见问题解决策略
系统设计篇 (4讲)
21 | 架构设计:普通程序员也能实现复杂系统?
22 | 如何为项目做好技术选型?
23 | 架构师:不想当架构师的程序员不是好程序员
24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
开发编码篇 (7讲)
25 | 有哪些方法可以提高开发效率?
26 | 持续交付:如何做到随时发布新版本到生产环境?
27 | 软件工程师的核心竞争力是什么?(上)
28 | 软件工程师的核心竞争力是什么?(下)
29 | 自动化测试:如何把Bug杀死在摇篮里?
30 | 用好源代码管理工具,让你的协作更高效
“一问一答”第3期 | 18个软件开发常见问题解决策略
软件测试篇 (4讲)
31 | 软件测试要为产品质量负责吗?
32 | 软件测试:什么样的公司需要专职测试?
33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
34 | 账号密码泄漏成灾,应该怎样预防?
运行维护篇 (6讲)
35 | 版本发布:软件上线只是新的开始
36 | DevOps工程师到底要做什么事情?
37 | 遇到线上故障,你和高手的差距在哪里?
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
39 | 项目总结:做好项目复盘,把经验变成能力
“一问一答”第4期 | 14个软件开发常见问题解决策略
经典案例解析篇 (7讲)
40 | 最佳实践:小团队如何应用软件工程?
41 | 为什么程序员的业余项目大多都死了?
42 | 反面案例:盘点那些失败的软件项目
43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?
44 | 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
45 | 从软件工程的角度看微服务、云计算、人工智能这些新技术
“一问一答”第5期(内含彩蛋) | 22个软件开发常见问题解决策略
结束语 (1讲)
结束语 | 万事皆项目,软件工程无处不在
软件工程之美
登录|注册

23 | 架构师:不想当架构师的程序员不是好程序员

宝玉 2019-04-20
你好,我是宝玉,今天我想与你讨论一下要想成为架构师,你需要具备哪些能力。
很多程序员的梦想,就是将来能成为一名架构师。包括我刚学编程那时候,也是以当架构师为目标,觉得不想当架构师的程序员不是好程序员,希望将来能成为一个优秀的架构师。就像拿破仑那句名言:“不想当将军的士兵不是好士兵。”
随着工作经历的增多,我也开始参与到架构设计中。对架构设计了解的越多,我越发觉,其实做架构设计,并不代表一定要有一个架构师的头衔。
拿破仑那句名言,原句是“Every French soldier carries a marshal’s baton in his knapsack”,意思是“每个士兵背包里都应该装有元帅的权杖”。
元帅的权杖,意味着大局观,元帅的思维方式。当士兵背包里装有元帅的权杖,就意味着士兵也能胸中有大局观,能有元帅的思维,理解元帅在特定战场上想什么,这样能更好的执行命令,提升整体的战斗力。
其实拿破仑的本意是激励每一名上战场的士兵都要有大局观,有元帅的思维,并不需要每一个人都一定去当将军、当元帅。
这也适用于技术领域,对于程序员来说,并不代表一定要有一个架构师的头衔,而是心中有大局观,有架构师的思维。从而能理解架构设计,能写出好的程序。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件工程之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • kirogiyi
    架构师是一个概念性职位,没有明确的界定,需要具备的能力和素质也是千差万别,每个开发人员心目中的架构师画像也都不一样,神秘的IT牛人,高级的保姆,无休的恶魔...。

    在我看来,一名优秀的架构师应该具备良好的技术思维、产品思维和项目管理思维。技术思维是基础,评估技术难度、分析技术复杂度、准确把握技术方向,这些都是架构师在设计架构时面临的技术决策;产品思维是骨架,在产品思维上构建起来的整体全面的产品意识,可以对业务、功能、模块进行明确的抽象、分治、迭代等等;项目管理思维是方向,无论是敏捷管理模型还是瀑布管理模型,都需要在不同的时间、不同的环境条件下去关注金三角理论的取舍所带来的影响,降低技术以外对项目带来的局限性。

    不过呢,架构师也不是想象中的那么神秘。开发人员和架构师的差别,最主要是层次和格局上的差别,导致最终产生了不同的结果而已。试想,两个能力相同的开发人员,一个的目标是每年涨工资(80%开发人员),他会去努力的多做事,拓展技术的深度;一个的目标是CTO(20%开发人员),他会去努力多做事,多思考,多学习,多交流,尽力做到面面俱到。几年以后的结果就不言而喻,至少坚定的目标能够推动过程的发展。

    作者回复: 👍严重认同。虽然说并不需要每个人都去当架构师当CTO,但是把架构师当职业目标,并且按照架构师的要求去努力,对职业成长的帮助是非常大的,今后可以选择的路会很宽。

    2019-04-20
    2
    6
  • Charles
    初浅理解:
    互联网架构师无论是b应用还是c应用,目标是希望更多用户使用,所以必须要考虑到网络、并发性能、可用性、安全性已经各种存储的横向扩展等架构问题

    企业架构师更多的是如何针对一个行业深度挖掘需求并抽象,把复杂问题简单化,最短路径满足多场景使用以及易扩展、易维护等架构问题

    一个疑问,请教老师:
    有着正常职位或头衔的架构师,一个全新的项目理解产品需求后进行架构设计,一般会产出哪些“东西”,来满足后续的架构讲解和项目开发过程中的沟通?
    由于一直创业公司和小公司待着,有点不好理解,期待老师解答,谢谢

    作者回复: 👍我觉得你对互联网架构师和企业架构师很到位。互联网产品特点是用户多,企业产品特点是业务复杂,所以架构的侧重点不一样。

    架构师在架构设计后,产出首先是架构设计文档,让大家理解架构。

    然后还要写架构开发的文档,比如如何基于这个架构开发功能模块,有哪些公共API可以调用,怎么样是最佳实践,要遵守哪些规范等。

    再要帮助搭脚手架和基础模块或示例项目,也就是要搭建一个最基础的可运行项目,通过这个项目,大家可以直观的理解你的架构是怎么落地的,通过基础模块或者示例项目,可以知道如何基于框架开发,后面就也可以照葫芦画瓢照着实现。

    还有就是在开发过程中,要答疑、解决架构中存在的问题,对架构做优化,还要做代码审查,对于不符合架构规范要指出和修正。

    2019-04-20
    4
  • alva_xu
    讲到架构,我想先得谈一下康威定律。康威在1967年曾说过,“Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”通俗地说,就是组织形式等同于系统设计。所以系统架构设计的进化,是和组织形式的变化结合的。从ITIL来说,BIA,(business IT alignment)是IT的核心,所以充分认识组织的业务模式和运营方式,才能让架构师设计出适合于企业的系统架构,架构设计的最高境界就是适合企业业务的运营。从单体架构到微服务架构,从前后端分离到中台,都是架构适应业务(功能与非功能需求)的体现。所以架构师首先必须要有业务思维、产品思维。TOGAF把企业架构分成业务架构、应用架构、数据架构、技术架构四个子域,我觉得相当全面。
    从程序员开始,如果能培养好老师讲的架构师能力模型中的四个思维和三个能力,我们可以给自己规划出一个架构师的成长路径,从单个业务应用开始,然后扩展到一个业务领域,最终到达企业架构师,甚至成为跨企业应用架构师的境界。

    作者回复: 👍谢谢你从组织架构维度的补充,组织架构和系统架构确实是相辅相成的关系,例如像微服务,一个拆分的原则就是看组织架构要不要细分,否则并不一定要分拆成微服务的架构。

    2019-04-22
    3
  • 青石
    经验积累就是个过程,付出的越多,努力的越多,收获自然越多。看源码学设计是件很不错的事情,当你思考为什么这么设计的时候,同样问题未来就很有可能按此设计。

    成功的道路没有捷径,前面弯弯曲曲的道路,只是让你更容易面对后面的严峻陡峭。

    作者回复: 👍感谢分享

    2019-04-21
    3
  • dancer
    个人觉得架构师这个称谓在国内用过了。。。其中不乏一些PPT架构师。。

    作者回复: 是的,头衔不重要,还是看有没有架构师的能力水平。

    2019-04-23
    2
  • Dora
    关于最后提到的问题,我想到一点,不知是否正确。互联网架构,要考虑互联网很快的迭代速度,所以对于扩展等特别注意。企业架构,内部IT系统相对稳定,对比互联网架构,更简单?

    作者回复: 👍挺好的分析。

    帮你补充几点:
    互联网架构不仅迭代会快一些,用户规模通常更大,但业务也会单一些。
    企业应用通常业务比较复杂,尤其是和行业会有一些结合,但是用户规模要小很多。

    这些特点,都会影响架构设计的选择。

    2019-04-20
    2
  • bearlu
    其实最难是选择行业,请问老师有什么建议?

    作者回复: 抱歉这个我还真没啥好的建议,通常第一份工作会对从事的行业有很大影响。

    我建议你可以请教下你身边的朋友,同时结合下你自己的资源、特长、兴趣爱好等综合选择一下。

    2019-04-20
    2
  • hua168
    老师,我发现市面上很少有架构类的书,有几本感觉OK,
    张开涛亿级流量网站架构核心技术》、陈康贤的《大型分布式网站架构设计与实践》、
    李智慧的《大型网站技术架构:核心原理与案例分析》
    感觉只是讲了一个大概而已,具体深入都是靠自己。

    58沈剑的《架构师之路》,还有点详细,链接地址如下:
    https://www.w3cschool.cn/architectroad/

    作者回复: 谢谢分享👍

    2019-04-20
    2
  • hua168
    老师,你可以继续写个专栏叫《架构师之路》😄

    作者回复: 七牛CEO许式伟已经写了一门课《许式伟的架构课》,应该不错:)

    2019-04-20
    2
  • 小老鼠
    1、可否结合具体案例,介绍抽像思维。2、发现成为一个好的架工程师构和成为一个好的软件测试工程师有许多相同之处。

    作者回复: 1. 举例来说,用户提一个需求,要做一个图书管理系统,那么你就需要针对这个需求,运用你的抽象思维,去抽象出来图书对象、抽象出来图书分类和图书的关系等

    2. 👍是的,有很多共同之处

    2019-09-20
    1
  • 小先生
    抽象,分治,复用,迭代思维。是架构师必备。
    2019-04-20
    1
收起评论
11
返回
顶部