给程序员的一封信:
生活、学习中的每个问题的求解,到最后或者是归结为一种数学模型,或者是归结为一种哲学思想。因此,我建议大家在自己的自由时间能抽空学习一些哲学、数学方面的思想,这对自己是终生有益的。
只要在遇到各种问题后能很快找到解决问题的方法,就可以算得上是一个真正的高手了。在实际的生活中、学习中,我们应该注意多总结方法、修订方法,特别是对于一些重复发生的事情,我们应该总结每次发生问题时自己采取的方法,并在下次发生时采用。
人的生存,归根到底是人的竞争,你懂的东西比别人多,你就会在竞争中获胜。
程序员岗位技能图:
1. 技术素质: 编程技术 -> 测试技术 -> 设计技术 -> 分析技术 -> 架构技术
2. 管理素质: 时间管理 -> 风险管理 -> 计划管理 -> 过程管理 -> 成本管理 -> 人际沟通 -> 领导能力
(P5) 作为程序员,30%的工作时间写注释和技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。
(P14) “可行性分析” —— 决定“做还是不做”
(P20) “需求分析” —— 决定“做什么,不做什么”
(P23) UML提供了各种图形,比如 Use Case 图、类图、对象图、顺序图、协作图、状态图(共五类10种图)
(P24)
系统设计分两个阶段:总体设计和详细设计
1. 总体设计的主要任务是把需求分析得到的结果转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分,建立模块的层次结构及调用关系。确定模块间的接口及人机界面等。概要设计方法包括模块化方法、功能分解方法、面向数据流和面向数据结构的设计方法、面向对象的设计方法。
2. 详细设计的主要任务是设计每个模块的实现算法,所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法要逻辑上正确、算法描述要简明易懂。
(P26) 世界上所有的事物都可以称为对象,对象可以是有形的,也可以是无形的。
(P31) 需求分析 -> 体系结构设计(概要设计) -> 界面设计、数据库设计、模块设计、数据结构和算法设计 (详细设计)
(P31) 数据库设计: E-R图 -> 数据表 -> 数据库命名规范 -> 数据库设计规范 -> 数据库正则化
(P47)
接口是模块的外部特征,应该当公开;
数据结构、算法、实现体等则是模块的内部特征,应当隐藏;
(P47) 模块设计的核心工作是“接口设计”和“数据结构与算法设计”。
(P48) 程序员应该充分地了解一些常用的数据结构与算法,避免不必要的重复设计工作。
(P50) 无论哪种语言,作为一个程序员,首先应该熟练掌握并精通一种。
(P54)
Ajax包括:
1. XHTML和CSS;
2. 使用文档对象模型(Document Object Model)做动态显示和交互;
3. 使用XML和XSLT做数据交互和操作;
4. 使用XML Http Request进行异步数据接收;
5. 使用Java script 将它们绑定在一起;
(P60) 一般认为,在结构化时代,单元测试所说的单元测试是指函数,在当今的面向对象时代,单元测试所说的单元是指类。
(P62)
性能测试 —— 正常情况下的性能指标;
压力测试 —— 在正常的基础上加大多少百分比压力的性能指标;
负载测试 —— 不断加压,直到系统崩溃;
(P66) 白盒测试6种覆盖方法: 语句覆盖 -> 判定覆盖 -> 条件覆盖 -> 判定\条件覆盖 -> 组合覆盖 -> 路径覆盖
(P293)
在应用中产生问题、带着问题去学习、学习后进行应用,这是一个不断进步的循环过程。
真正的程序员是善于总结的。随着项目经验、编程经验的增加,每个程序员都会积累很多的编程技巧和心得。记得一定要把这些技巧和心得用文件的形式保存下来,这是你个人的财富。