❤️💕💕包含软件工程、算法与架构:设计模式、软件架构、协同开发、质量保障。更多关注我的博客:Myblog:http://nsddd.top
[TOC]
一般来说,在软件工程中,我们往往会面临三类问题:
- 性能问题(The Performant System Problem)
- 系统的嵌入式问题(the Embedded System Problem)
- 复杂领域建模问题(the Complex Domain Problem)。
互联网行业,不乏很多优秀的程序员,他们很擅长与机器和代码打交道。当他独立写代码、单打独斗的时候,一点不在话下。但是,当一个优秀的程序员身处一个团队,需要通过团队去拿到项目结果时,可能就会出现各种意想不到的问题。比如,不擅长和其他部门沟通协作、过于关注技术本身而忽视了业务需求、缺乏让项目推动的动力、明明自己技术水平高,但在团队里就是无法发挥作用等等。
曾几何时,只要做一个写代码能力足够强的程序员,就能够在职场发展的道路上一路通行无阻了。但后来我发现,随着项目复杂度的增加、竞争压力的增大,单单做一个会写代码的优秀程序员是不够的,只要你在一个多人协作的团队,想要能够在团队中发挥最大价值,你还需要有项目管理的 sense 和能力。
项目管理,就是通过一系列专业的知识、技能、工具,进行不同角色的高效协同调度,提升整体运行效率,从而实现全局目标。从这个角度来讲,项目管理,作为一套多人协同的团队底层操作系统,是你从个人走向团队,扩展自己的工作职责时,一个必备的底层能力升级包。
而具备项目管理能力的程序员,无疑会在这个程序员严重同质化的局面下,拥有更多的市场竞争优势。比如在网易,已经有越来越多的主程开始承担项目管理职责,在他们的绩效考核中,也会明确写入一定比例的项目管理责任。这种类型的项目负责人,已经在逐渐成为组织中的中流砥柱,技术之路自然也越走越宽广。
项目管理的核心目的是如何组织各种资源在有限的成本下可控的完成,问题与阶段包含了:
- 范围评估:该做哪些事?
- 时间评估:预计多久能完成?
- 资源评估:需要哪些人来做?
- 团队组建:怎么样才能使项目团队很高效?
- 项目计划:按什么样的顺序组织大家把事情做完?
- 项目运作机制:遇到问题及关键选择如何决策?
- 风险预案:会有哪些风险,如何应对?
单一任务的经验公式:均值 =(乐观评估 + 4 * 最可能 + 悲观评估)/6
。