An action-oriented approach is probably the most effective way to develop one’s career as a software architect. The world of software has proliferated at an exponential rate in the past two decades which has also led to an equal growth of security and quality concerns. It is overwhelming to think about learning everything. Realistically, no one can learn everything since there is no limit to technological expansion. On the other hand, a sound and effective engineering methodology with strong discipline provides a way to ensure your software is delivered to a high standard.
In this talk, I am going to share the set of disciplines that I practice most of the time, if not all the time. The key success criterium is to make the software I built work all the time. When the practice becomes the general agreement among all team members, synergic effects usually result in new inventions that individuals cannot realize themselves alone.
演讲提纲:
- Design with First Principles
- What's First Principles
- How to design your product with First Principles
- Case – Database Refactor (DR) Project
- Motivation and background for this project
- Tactics used in the DR project
- My thinking on this DR project
- Define Quantitative Objectives and Measure Nightly
- Product requirements must include the quantitative measure
- Measure nightly to identify design issue as soon as it occurred
- Program components must be instrumented with time and space measurement code
- Program to Detect Issues Intelligently
- Prove Correct Proactively
- Why and how to code defensively
- As an architect, how to make sure your programmers follow your way of coding
- Code with Right Programming Language in Right Place
- Micro-service architecture allows using different programming language in different components
- Performance intensive, C++
- Easy DB manipulation, Java
- Good wrapper, Javascript (prime language for serverless programming on AWS)
- Refactor Often and Early
- Architecture changes evolved in DR project
- Other small refactors should be absorbed into daily programming practice
- Renew Knowledge Periodically
- New techniques adopted during DR project
- When and where will you need new techniques to improve your project architecture
- How to make yourself keep up to date with new technologies
- Summary
- 用科学方法来工作:实验尝试,小心求证
- 用First Principle 来思考:Connecting the Dot
- 用 OKR 来自我管理
- 用流水线来安排工作
- 在制高点审视全局
- 时时准备交班
- 时时刻刻提升自己的市场价值
- 每三年检讨自己在 Marslow's Hierarchy 的位置,步步为营
- 失败为成功之母,失之东隅,收之桑榆
- Stay Hungry, Stay Foolish
听众受益:
- Designing with first principles
- Defining quantitative objectives
- Programming with self-diagnostic intelligence
- Coding defensively
- Refactoring often and early and renewing knowledge periodically
面向行动的方法可能是发展软件架构师职业生涯的最有效方法。在过去的二十年里,软件世界以指数级的速度激增,这也导致了安全和质量问题的同等增长。一想到要学习一切,就让人不知所措。实际上,没有人可以学习所有内容,因为技术扩展没有限制。另一方面,具有严格纪律的健全有效的工程方法提供了一种确保您的软件达到高标准的方法。
在这次演讲中,我将分享我大部分时间(如果不是一直都在)练习的一套学科。关键的成功标准是让我构建的软件始终有效。当实践成为所有团队成员之间的普遍共识时,协同效应通常会导致个人无法单独实现的新发明。
演讲提纲:
- 第一原则设计
- 案例——数据库重构(DR)项目
- 项目的动机和背景
- DR 项目中使用的策略
- DR 项目思考
- 定义定量目标并每晚测量
- 产品要求必须包括定量测量
- 每晚测量以在设计问题发生后立即确定
- 程序组件必须配备时间和空间测量代码
- 智能检测问题的程序
- 主动证明正确
- 为什么以及如何进行防御性编码
- 作为架构师,如何确保您的程序员遵循您的编码方式
- 在正确的地方使用正确的编程语言编写代码
- 微服务架构允许在不同的组件中使用不同的编程语言
- 性能密集型,C++
- 简单的数据库操作,Java
- 好的包装器,JavaScript(AWS 上无服务器编程的主要语言)
- 经常和尽早重构
- DR 项目中的架构变化
- 其他小的重构应该被吸收到日常的编程实践中
- 定期更新知识
- DR项目中采用的新技术
- 您何时何地需要新技术来改进您的项目架构
- 如何让自己跟上新技术
- 概括
- 用科学方法来工作:实验尝试,小心求证
- 用第一原则来思考:Connecting the Dot
- 用 OKR 来自我的管理
- 用流水线来安排工作
- 在制高点审视全局
- 时时准备交班
- 时时刻刻提升自己的市场价值
- 每三年检讨自己在 Marslow's Hierarchy 的位置,步步为营
- 失败为成功之母,失之东隅,收之桑榆
- Stay Hungry, Stay Foolish
听众受益:
- 了解使用第一原则进行设计
- 了解如何定义量化目标
- 了解具有自诊断智能的编程
- 了解防御性编码
- 了解如何经常和尽早重构并定期更新知识