程序员职业素养

一、技能素质

1.1 软技能

  • 数据结构和算法
  • 设计模式
  • 网络TCP/IP
  • 代码整洁之道
  • 重构改善既有代码
  • 代码大全
  • 敏捷软件开发:原则,模式与实践
  • 领域内驱动设计
  • Git
  • vim

1.2 硬技能

  • iOS 领域专家

    • 基础开发
    • 多媒体开发
    • IM开发
    • SDK开发
    • MVC
    • MVVM
    • MVP
    • VIPER
    • RXSwift
    • 常用框架源码分析
    • 单元测试
    • 持续集成
    • 反编译
  • Android 领域专家

    • 基础开发
    • 多媒体开发
    • IM开发
    • SDK开发
    • MVC
    • MVP
    • MVVM
    • RxJava
    • Kotlin
    • 常用框架源码分析
    • 单元测试
    • 继续集成
    • 反编译
  • 脚本语言
    Python
    Groovy
    Shell

二、工程素质

2.1 专业主义

  • 需求:

    • 认真研读需求文档。
    • 对不合理的需求说”不“。
    • 和产品确定最后的需求。
  • 研发

    • 技术预研,确定采用的技术

    • 开发设计,

      • 遵循六大设计原则。
      • 采用23种设计模式。
      • 设计出架构清晰。
      • 模块低耦合。
    • 设计评审

      • 开发小组封闭讨论设计的不合理之处
    • 工作量化

      • 按功能划分
        / 好处:避免模块的数据层和UI层之间的回调依赖
        / 坏处:不严格遵循设计,导致模块之前紧耦合
      • 按模块划分
        / 好处:模块之间的低耦合
        / 坏处:数据层和UI层异步回调依赖
      • 根据每个人的工作量化导出工期评估
      • 对不合理的工期说”不“
    • 编码

      • 入乡随俗
      • 参考google,sun等大公司的编码规范
      • 初中高
        • 初级:面向功能
        • 中级:面向性能
        • 高级:面向未来
      • 代码提交之前一定要review自己的代码
      • 有精力要阅读别人的代码
      • 推荐工具GitKraken
  • 测试

    • 单元测试 XUnit
    • 组件测试 API
    • 集成测试 API
    • 系统测试 GUI
    • 人工探索式测试

专业的程序员都会写单元测试,甚至测试驱动开发。
对交付的程序,一定是经过一系列,反复测试的。

  • 对交付的程序,

    • 经过金字塔测试
    • 最后组内交叉测试
  • 灰度测试

    • 就是控制发布比例,让一部分用户进行升级测试
  • 持续集成CI
    gradle
    Jenkins
    git

  • Bug追踪

    • fabric订阅bug
    • 开发组的每个成员都要订阅fabricbug邮件
    • 及时修复线上bug
  • 版本迭代

三、团队协作

3.1 团队管理工具

3.1.1 组内沟通

  • 在线沟通有记录
    • 微信
    • lark
  • 当面沟通
    尽量当面沟通,效率最高

3.1.2 项目管理工具

  • Trello
    • 管理需求
    • 管理开发工作量化
    • 管理版本线
    • 管理bug

3.2 时间管理

3.2.1 事件的优先级

  • 紧急重要
  • 紧急不重要
  • 重要不紧急
  • 不重要不紧急

按上面的优先级进行安排工作

3.2.2 番茄工作法

  • 25分钟内免打扰
  • 最优状态是 每天12-14个番茄
  • 最差状态是 每天2-4个番茄

你可能感兴趣的:(程序员职业素养)