Table of Contents:

作用:
* 形成知识框架、知识地图
* 遇到问题、知识时可以快速定位,并和已有的知识建立联系
* 遇到新知识时知道把其挂在知识树的什么位置,如何跟已有的知识进行关联
* 排查自己的知识盲区,查漏补缺

技能

阅读代码
    快速了解程序的功能,程序的具体行为,语言方面, 数据结构和算法方面
    
软件设计
    使用什么样的代码技术达到怎么样的功能,而系统架构设计直接决定了软件的质量、性能和可维护性
    需求分析
        接受给定的需求和代码规格    
        能对规格的遗漏提出疑问    
        对有矛盾的地方可以识别出
        了解全面情况,提出需要被规格化的整体范围。    
        能够提出更好的可选方案,根据经验的浮现给出需求
    问题分解
    系统分解


编写程序
    代码组织
        同一文件、跨文件代码组织、源码树组织
    代码可读性、强健性、防御性编码、错误处理
    工具类库、编程框架的使用
    
    接口api的查找能力(快速上手)
    接口api的使用能力
    接口的封装和设计(功能抽象分封装)
    接口api的实现能力


熟悉软件工程
    每个程序员都应该明白软件工程是什么东西,都应该知道,需求分析,设计,编码,测试,Release和维护这几个阶段
    软件开发的方法论,比如:敏捷开发或瀑布模型。


使用程序库或框架
    一个程序员需要学会使用已有的代码,无论是标论的程序库,或是第三方的,还是自己公司内部的,
    站在前人的基础上,可以让你的工作事半功倍。


程序调试
    assert
    打印调试
    断点

单元测试
    单元测试框架


重构代码
    重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能


开发自动化
    批处理文件、shell脚本、python脚本
    自动化编译,自动化测试,自动化部署,系统集成


运维能力


快速学习的技能
与人的沟通能力
语言的表达能力
写作能力
团队协作能力
时间管理能力
故障处理能力    

参考链接