【读书笔记】代码大全28章:项目管理

本文通过《代码大全》的读书笔记,探讨了如何鼓励良好编码习惯,制定和执行编码规范,以及如何进行有效的项目管理。内容涵盖代码审查、配置管理和版本控制,强调了团队合作、代码质量和变更管理的重要性。同时,文章提到了估算项目工时的方法,以及项目度量对于监控和提升生产力的价值。此外,还讨论了程序员的工作效率、开发环境和团队协作对于项目成功的关键作用。
摘要由CSDN通过智能技术生成
  • 鼓励良好的编码习惯
    • 制定编码规范
      • 使用灵活的编码规范
    • 鼓励良好编码规范
      • 项目的每个部分都分配两个人
      • 审查每一行代码
      • 做好代码验收工作
      • 将好的代码用来审查
      • 强调“代码属于大家”
      • 程序员写了良好的代码要给予奖励
        • 给程序员想要的东西
        • “良好”指的是特别好,大家都认可的“好”
      • 制定单个简单的标准
        • 比如:我必须能读懂项目中的一切代码
    • 本书的目标:提供良好的编码规范
  • 配置管理
    • 什么是配置管理
      • 配置管理就是系统地控制项目中的各种变化
    • 需求和设计的变更
      • 采用科学的变更程序
      • 通过团队处理变更
      • 估算每个变更的成本
      • 小心太多变更
      • 小心官僚主义,但是不要害怕官僚主义
    • 源代码变更
      • 版本控制工具
        • 好处
          • 两个人可以同时修改一个文件
          • 可以通过一行命令轻松地更新整个项目
          • 可以查看任何历史版本
          • 可以查看任何一个版本做了哪些改动
          • 无需备份源代码,因为版本控制已经在这方面做的很好了
        • 工具版本
          • 有时候编译器、库都要放到版本控制中,这样构建历史版本的时候就不用额外配置了
      • 运行环境配置
        • 可以通过虚拟机来统一大家的开发环境
      • 备份计划
        • 程序看不见摸不着,很容易丢失,所以备份是必须的
        • 备份完之后记得测试
  • 估算项目工时
    • 估算方法
      • 利用估算软件
      • 用估算算法,比如Cocomo II
      • 引入外面的估算专家
      • 开会讨论
      • 估算每个部件的工时,再相加
      • 根据之前项目的经验
      • 参考之前项目的估算结果,并根据之前项目的完成情况作出相应调整
      • 设立估算目标
      • 给定充足的时间
      • 细节考虑越多,估算结果越精确
      • 采用多种不同的估算方法
      • 没有一种通用的方法
      • 每隔一段时间重新估算
    • 估算编码用时
      • 项目越大,编码所占的时间比重越少
    • 项目工时的影响因素
      • 人员的分布情况(同一个地方工作还是不同地点工作)
      • 数据库大小
      • 项目可用的文档数量
      • 需求的灵活性
      • 项目风险
      • 语言和工具的熟悉程度
      • 人事变动
      • 平台的可变性
      • 业务流程的成熟度
      • 程序员的能力
      • 可靠性需求
      • 需求分析能力
      • 重用性需求
      • 是否注重美工
      • 磁盘储存限制
      • 团队团结程度
      • 团队在项目方面的经验
      • 团队在技术平台方面的经验
      • 时间限制
      • 工具的使用情况
    • 估算和控制
      • 估算和控制是两个相互对立的两个观念
    • 如果项目进度落后了怎么办?
      • 告诉自己可以跟上进度的,因为后面的工作可能可以很快做好
      • 增加团队成员。《人月神话》说这点不可取,但是在项目可以拆分的情况下是可以这样做的
      • 减少需求数量
      • 对不重要的功能重新估算工时
  • 项目的度量
    • 原因
      • 度量总比没有度量要好
      • 数据分析一定要有数据
    • 可度量的变量
      • 软件大小
        • 代码行数
        • 注释行数
        • 类的数量,函数数量
        • 变量数量
        • 空白行数
      • 缺陷跟踪
        • 每个缺陷的严重性
        • 每个缺陷的位置
        • 每个缺陷的源头(需求、设计、构建、测试)
        • 每个缺陷是如何修复的
        • 每个缺陷的负责人
        • 修复缺陷修改的行数
        • 修复缺陷所用的时间
        • 找出缺陷的平均时间
        • 修复缺陷的平均时间
        • 修复缺陷尝试次数
        • 修复缺陷产生的新缺陷
      • 生产力
        • 项目花费的工时
        • 每个类或函数花费的工时
        • 每个类或函数修改的次数
        • 项目的支出费用
        • 每行代码的支出费用
        • 每个缺陷的支出费用
      • 全局质量
        • 缺陷总数
        • 每个类或函数的缺陷总数
        • 每千行缺陷数
        • 编译器检测不出隐含错误的平均时间间隔
      • 可维护性
        • 每个类的公共函数
        • 每个函数的参数数量
        • 每个类的私有方法或变量
        • 每个方法中的本地变量个数
        • 每个类或函数调用其他函数的次数
        • 每个类或函数中的逻辑分支数量(if/while/for等)
        • 逻辑分支的复杂程度
        • 每个类或函数的行数
        • 每个类或函数的注释行数
        • 每个类或函数中的变量或常量定义次数
        • 每个类或函数中空白的行数
        • 每个类或函数中goto关键字使用的次数
        • 每个类或函数中输入输出语句的数量
      • 不要一开始就搜集所有的这些数据,从最简单的几个数据开始
  • 请把程序员当人看
    • 程序员的时间组成
      • (有一张很大的表格)
      • 从事情的目的来看,大部分时间在做编码有关的事情
      • 从事情的方式来看,大部分时间在谈话或者听。
    • 不同的程序员写出的代码性能和质量差别很大
      • 人和人之间比较,最好的和最差的:
        • 速度方面相差20倍
        • 调试时间相差20倍
        • 程序大小相差5倍
        • 执行速度相差10倍
        • 统计研究表明:程序员的经验和代码质量、生产力关系不大
      • 团队之间比较,最好的和最差的:
        • 努力程度相差3.4倍
        • 程序大小相差3倍
        • 开发速度相差2.6倍
      • 习惯问题
        • 编程语言
        • 缩进风格
        • 括号的位置
        • IDE
        • 注释风格
        • 可读性和性能两个方面的偏好
        • 开发方法的选择——Scrum、极限编程、evolution delivery
        • 编程效用
        • 命名规范
        • goto的使用
        • 全局变量的使用
        • 生产力等
      • 工作环境
        • 办公室面积
        • 安静的环境
        • 隐私环境
        • 轻声打电话
        • 呼叫转移
        • 频繁地打扰
        • 让人觉得高贵的环境
  • 处理好自己与主管的关系
    • 有些管理员虽然技术方面有很丰富的经验,但是技术是很容易过时的,以前的经验在当前环境中不一定适用
    • 几个方法
      • 想好你想做什么,然后等你的主管对你的想法做一次头脑风暴
      • 跟主管说明正确的做法。这种方法适合走长线,因为主管也想要进步、升职。这是最好的做法,推荐卡耐基的《人性的弱点》
      • 和主管说话的时候要关注主管感兴趣的地方,了解他真正想做的事,不要说一大堆难懂的设计细节
      • 坚持自己的主见,不要听主管的
      • 辞职
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值