团队构建及项目管理
项目概览
社交类程序, 采⽤前后端分离结构, 主要包含以下模块:
- 个⼈模块
- 社交模块
- VIP 模块
- 异步任务模块
- Redis 缓存模块
- ⽇志模块、异常处理模块
- 短信模块、邮件模块
- 运维、部署、shell 脚本(常⽤ Linux 命令)
- 前端模块
- 其他
项目目标
- 了解真实项⽬的开发流程
- 掌握如何使⽤ Git 完成协作开发和代码管理
- 掌握 RESTful 的概念, 掌握前后端分离式的开发
- 掌握⽇志的使⽤
- 掌握缓存的使⽤
- 掌握 Redis 不同数据类型的⽤法
- 掌握 Celery 异步任务处理
- 掌握 Nginx 的配置, 及负载均衡的原理
- 了解分布式数据库及数据分⽚
- 掌握数据库关系建模, 及不使⽤外键如何构建关系
- 掌握服务器异常处理, 及报警处理
- 熟练掌握常⽤ Linux 命令, 以及初级 bash 脚本的开发
- 掌握线上服务器的安装、部署
- 理解进程、线程、协程的原理, 以及事件驱动、异步⾮阻塞等概念
- 对服务器架构、服务⾼可⽤等有⼀个初步认识
企业中的团队建制
-
管理层
⾼层:CEO、COO、CTO 等
中层:各部⻔总监、经理
基层:主程、Leader -
⼈⼒部⻔
制定⽤⼈制度, 负责⼈员的流⼊流出,员⼯关系,社保,公积⾦办理
制定绩效考核制度, 审批薪酬表
每个求职者都要经过⼈⼒⾯试 -
⾏政部⻔
⽇常办公、会议、活动管理
内部物品、设备的预算和购置 -
财务部⻔
资产管理、预算及成本管理、⻛险管控
薪酬管理, 税务、财报管理
市场部⻔/商务部⻔ -
运营部⻔
公司产品的线上线下运营
产品收⼊,产品新增⽤户,及⽼⽤户留存 -
研发部⻔
- 项⽬经理
- 产品研发
产品⼈员
----产品经理 / 产品专员
设计⼈员
----UI / UE - 技术研发
技术总监/架构师
前端开发
----HTML5 (3~4⼈)
----iOS (3~4⼈)
----Android (3~4⼈)
后端开发
----Python / PHP / Java / Go (4~8⼈)
----运维(1~2⼈)
---- DBA
测试
----⽩盒测试(通过代码测试代码)
----⿊盒测试 (1~2)
工作中的开发流程
- 产品⽴项
- 产品⼈员进⾏原型设计, 提出业务需求(产品原型及需求⽂档)
- 产品需求讨论会(确定⾥程碑,需求优先级)
- 设计⼈员进⾏ UI、原画等绘制⼯作
- 前端⼈员接收各种图形元素
- 前后端⼈员对接接⼝, 并编写接⼝⽂档
- 前后端同时开始开发
- 前后端联合调试
- 测试⼈员测试
- 版本发布,上线部署、服务重启
⼯作中的研发管理流程
- 敏捷开发(scrum)
- 任务跟踪,每⽇站会
项目阶段开发流程及要求
- 两⼈⼀组, 结组编程, 每组不要超过三⼈
- 每组选⼀⼈作为组⻓, 由组⻓在 Github 上创建⾃⼰的组和项⽬
- 组⻓分配任务, 各⾃开发⾃⼰的功能
- 开发过程中注意编码规范, ⼒求做到 “团队代码如同⼀⼈编写”
- 每个⼈为接到的功能创建⼀个独⽴的分⽀
- 开发、提交、审核、合并、上线
Git 命令回顾
init : 在本地创建⼀个新的库
clone : 从服务器克隆代码到本地 (将所有代码下载)
status : 查看当前代码库的状态
add : 将本地⽂件添加到暂存区
commit : 将代码提交到本地仓库
remote : 远程仓库管理
push : 将本地代码推送到远程仓库
pull : 将远程仓库的代码拉取到本地 (只更新与本地不⼀样的代码)
log : 查看提交历史
branch : 分⽀管理
checkout : 切换分⽀ / 代码回滚 / 代码还原
diff : 差异对⽐
merge : 合并分⽀
.gitignore : ⼀个特殊⽂件, ⽤来记录需要忽略哪些⽂件
ssh-key 的使⽤
GitHub Flow
- 版本控制及代码管理
- 分⽀类型
master: 主⼲分⽀, 代码经过严格测试, 最稳定, 可以随时上线
develop: 开发分⽀, 合并了各个开发者最新完成的功能, 经过了初步测试, 没有明显 BUG
feature: 功能分⽀, 开发中的状态, 代码最不稳定, 开发完成后需要合并到 develop 分⽀
- Pull Request: 拉取请求
开发者⾃⼰提交 Pull Request 通知团队成员来合并⾃⼰提交的代码。
通过此⽅式可以将合并过程暴露给团队成员, 让代码在合并之前可以被团队其他成员审
核, 保证代码质量。
- Code Review: 代码审核
代码逻辑问题
算法问题
错误的使⽤⽅式
代码⻛格及规范化问题
学习其他⼈的优秀代码
- 分⽀管理流程
⼤型项⽬代码布局
- 概览
- 布局详解
- 通⽤的算法、功能放到 common ⽬录
- 底层的功能放到 libs ⽬录
- 独⽴脚本的放到 scripts ⽬录
- 配置⽂件放到项⽬⽬录 或 config ⽬录
- views .py 及 view_func()
- MVC 模式的 V 只负责视图处理, 逻辑属
- view_func 本身不适合写逻辑, view 是特
- 添加 logic .py ⽂件, ⽤来放置每个 app
- 函数构建应保持功能单⼀, ⼀个函数只做
- 复杂功能通过不同函数组合完成
项目初始化
$ mkdir swiper
$ cd swiper
$ cat > .gitignore << EOF
*.pyc
*.sqlite3
.idea
__pycache__
*.log
.venv
medias/*
EOF
$ python -m venv .venv
$ source .venv/bin/activate
$ pip install ipython django redis django-redis gevent gunicorn requests celery
$ pip freeze > requirements.txt
$ django-admin startproject swiper ./
$ git init
$ git add ./
$ git commit -m 'first commit'
$ git remote add origin git@github.com:yourname/demo.git
$ git push -u origin master