一、技能素质
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个番茄