拥有良好的系统设计能力,是一个优秀程序员的必要素质。
当然更重要的是,越来越多的公司在面试中考察系统设计能力,尤其是外企巨头,如谷歌,亚马逊,微软等。这些公司对于社招的软件工程师往往有这方面的要求。
但是系统设计和算法题不一样,它考察的是程序员对于复杂系统的理解与设计,更重要的是沟通与思维。
还有一点不一样的是,每一个系统设计问题都没有明确唯一的答案,目前也没有直接的教材。不过,令人高兴的是,国外目前有一本关于系统设计的书,详细讲解了系统设计涉及到的方方面面,它用几个实际例子引导读者一步步了解并熟悉系统设计, 以求让读者在实际工作中进行系统设计时有更完善的考虑,并且在未来可能的面试中能从容应对系统设计相关考核。
我在这本书的前几页就读到了其精髓,在此与大家分享。
--------------------------------------------------------------
系统设计过程中的几大步骤:
- 需求澄清(Requirments Clarification)
- 系统接口定义 (System Interface Definition)
- 粗略估算 (Back-of-the-envelope Esti