关于编程
Table of Contents

我的职业是 Software Engineer ,日常工作是通过编程来解决问题。我不是科班出身(本科是数学系),大二下学期开始接触编程,一路走来磕磕绊绊,中间也绕了很多弯路,最终还是选择了从事计算机编程作为职业。这篇 wiki 总结一些学习编程/写代码过程中的建议。


程序员如何学习与成长

关于程序员:

阅读 是重要的学习渠道,书籍是高质量信息的重要来源和载体。

结构化信息的阅读,更有利于思考能力的提升:

要保持批判性思维:

软件工程师 != 码农

区分好代码与坏代码

好的代码:

坏的代码:

写代码 -- 需求分析、系统设计

编写代码只占软件开发的 10%。

写代码前明确目的。写代码前更多投入,收益往往更大。沿着错误的思路,走到后面再想回头改就困难了

需求分析与系统设计的区别:

需求分析:

系统设计:

需求是系统设计决策的来源。

系统设计的风格与哲学:

写代码 -- 表达

代码是写给人看的。

模块(Module)化,高内聚、低耦合。

切分模块的一种角度:

数据类模块:

过程类模块:

关于 OOP

写代码 -- 编码

graph LR id1(系统)-->id2(子系统/程序) id2-->id3(模块) id3-->id4(函数)

函数描述:

控制函数规模。

函数返回值:

划分代码块,理清逻辑。

先写注释,再写代码。

关注可监控性,互联网时代,系统是运营出来的

如何成为优秀的软件工程师

成为一个优秀的软件工程师,和写了多少年/多少行代码,曾经在哪里上学/工作是没有必然联系的

知识 -> 方法 -> 精神

夯实基础:软件工程师基础,至少要 5 到 8 年的沉淀。

求木之长者,必固其根本;欲流之远者,必浚其泉源。 -- 魏征《谏太宗十思疏》


参考:

百度技术学院--代码的艺术