谢谢老师精彩的分享!整理了一下笔记和同学们分享一下
1. “提出问题”难于“解决问题”。程序员要学会如何从用户的角度发现困难,提出需求问题,适配用户场景。不仅仅是一个解决问题的人,而是提出问题的人,不断地思考什么样的需求的问题能让我们的产品更先进
2. “设计最难的部分就是去设计我们要设计什么样的问题” - 《设计原本》Brooks
3. 什么是架构?从很多层面上说,架构是一种tradeoff,是一种权衡、平衡。作为一个架构师,你应该是那个说“不”的人。决定不要什么比要什么更难。先确定一个大原则,之后在做选择的时候根据这个原则来取舍,这样就不会随着工作的推进而迷失了
4. “决定不做什么和决定做什么是一样重要的”-史蒂夫.乔布斯
5. “人们认为专注是对你要关注的事情说yes。但是这完全不是专注的本意。专注是对其他一千个好的想法说no。你必须非常谨慎的挑选。实际上我对我拒绝做的事和我做过的事一样感到骄傲。创造力就是对一千件事说NO的能力。” - 史蒂夫.乔布斯
6. 非功能需求决定架构。所谓的非功能需求,包括性能,伸缩性,可扩展性,可维护性,甚至还包括了你的团队结构,你的团队技术水平,你的发布周期的要求,这些来筛选那些可以去使用的方案,最终找到一个合适的架构。
7. 非功能性需求在架构中是非常重要的,起了决定性作用,因为功能性需求在设计完之后,如果是了一个功能,未来我们可以再加上去,它对你的架构不会有本质上的影响。但是如果我们忽略了某一种非功能性需求,在未来这有可能产生灾难性的后果,很有可能你就需要重写,比如架构导致数据一致性的问题,没用充分考虑性能问题等,这样所有的功能性实现都没有意义,你就得完全重写整个东西。Micro-Kernel模式架构可以了解一下。
8. “简单可以比复杂更难。你必须非常努力的把你的想法想清楚之后你才有可能把事情做的很简单。但是这个努力是值得的,因为一旦你达到了这个目的,它会给你带来排山倒海的能量。为了能达到真正的简单,你必须思考的足够深入。”--史蒂夫.乔布斯
9. 简单不同于容易,而且恰恰相反,真正的简单其实是来自于不容易的,复杂才容易,简单蕴含了巧妙在里面
10. 在软件开发生命周期中,对软件发布后的维护占了整个成本的一半以上。如果你要让一件事情简单,你就可以让后期的维护变得简单,这是性价比最高的事情
11. “我相信软件开发中最难的部分,也是最经常导致失败的部分,是和软件用户之间的沟通交流”--Martin Fowler(马上搜了一下Martin Fowler的推特账户,发现大师在人间还活跃着,很激动…)
12. 对于一个架构师来说,你永远都不要停止编码,你永远都是一个程序员。如果你停止编码,你就会丧失对敲代码这种痛苦的感觉,你就会容易产生不切实际的幻想,做出不切实际的设计,这是最大的一个问题。(罗胖也坚持自己做启发俱乐部磨练自己的手艺)
13. 风险优先。所谓的架构设计就是你要在早期就能识别出这个系统可能出现的风险问题,然后通过你的设计去除或转换它,比如通过原型或架构切片的早期迭代去测试我们的架构是否还存在风险。
14. 敏捷开发的精髓是,如果一个项目会失败,那你要让它快速的失败
15. “如果你这个项目其中能预见到的风险都能通过重构解决的话,那么你就没必要设计软件架构,你重写就好了。”--《恰如其分的软件架构》Just Enough Software Architecture
16. 从“问题”开始,而不是“技术”
17. 过度繁忙使你落后,因为你没有时间去更新你的知识。在一个公司干了几年,如果你不持续学习,你就很容易“被忠诚”,因为你失去了跳槽的能力和勇气。而且在你的工作中,你面对的问题会越来越复杂,你会觉得越来越难以应付,你只有通过不断地加班来解决。如果你不能紧紧跟随你所在行业的发展,那你只能天天加班,这会是一个恶性循环,越加班,越没有时间学习。试想一下,如果你已经领先业界五年了,你还在乎休息一个礼拜吗?
18. 做更好的自己。锻炼配合营养,实践也要结合学习,你才能变得越来越好。
19. 要不断学习,你不一定要换领域,你可以用不同的方式做同样的事情,然后把事情做的更好。
20. 不忘初心,坚持匠心
展开