WNCG 软件组第一次培训大纲

一图总结:

思维整理

  1. 培训与总结安排 每周有总结,总结上周内容,答疑,安排下周学什么 每周培训讲上周总结时安排的内容,完成周志

  2. 培训会给大家讲什么、为什么要强调团队合作

    • 软件工程教学现状与我们想做的尝试
    • 我们的现状:野路子,单打独斗、依靠个人能力编程,缺少文档,缺少合作,别人觉得代码乱,自己也觉得代码乱
    • 软件工程现状:经典瀑布流教学,上课做完作业就完,学完课程没有任何收获,图完成学分
    • 我们的尝试:人数少,手把手教写代码,规划正规路线,讲授更亲近,
    • 表明教练与学员的关系,说明负担情况,相互竞争原则,知识是构建的,提问辩证能帮助构建
    • 为什么需要课堂:自然的、有批判精神的学习环境
    • 团队合作的必要性:项目不是由一个人来完成的
    • 团队的必要条件:成员在作为码农的能力是合格的 (用以解决中层次及高层次问题,而非低层次语法问题)
    • 团队需要一定的流程来管理开发活动
  3. 团队合作怎么做 有哪些流程

    团队开发解决了什么?

    1. 首先解决了工作量的问题
    2. 提高了软件开发、运营、维护的效率,提升软件的可靠性、可维护性 每个具体的开发者在团队中都有各种各样的角色担当,开发、测试、美工、管理等 把工作有序的组织起来就是团队流程 每个人应该被团队需求

    通常流程

    1. 分析需求
    2. 设计模块
    3. 团队讲解项目 (成员有必要了解子系统、模块及他们之间的关系)
    4. 分模块任务安排 (初步)
    5. 合作开发 (通过文档沟通接口,做好单元测试)
    6. 记录开发进程、未完成事项、遇到的问题 (项目管理工具)
    7. 负责人通过每个人进度及能力调整部分任务分配 (细节)
    8. 相互提交模块代码 (pull request)
    9. 讨论问题
    10. 管理者合并代码 (merge)
    11. 集成测试
    12. 功能测试 (需求变动)
    13. BUG 修复
    14. 部署
    15. 完成交付
  4. 个人学习规划

    初级软件工程师成长

    1. 积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)
    2. 积累问题领域的知识和经验(例如:对前端或后台的了解)
    3. 对通用的软件设计思想和软件工程思想的理解
    4. 提升职业技能(区别于技术技能)
    5. 实际成果
  5. 软件推荐

    • 本地搜索神器:Everything
    • 文本编辑: UltraEdit Notepad++ SouceInsight
    • 版本控制:Git
    • Markdown编辑器:Typora
    • 笔记管理:印象笔记
    • 思维导图:Xmind
    • 搜索引擎:Google GitHub 百度
    • 科学上网:SS (难,稳定) Green (易,稳定性一般)
    • 项目管理工具:GitHub Worktile
  6. 书籍推荐

    • 《XXXX 从入门到精通》
    • 《XXXX 编程指南》
    • O'reilly 动物书
    • 《大话设计模式》
    • 《大话数据结构》
    • 《操作系统原理》