我的项目管理生涯
1 前言
从好几年前就想写几篇关于自己职业生涯的文章了,一直由于各种原因没有写成,正好借新的工作机会,尤其是项目管理这段工作经历,计划通过这一二篇文章进行总结和反思一下,以期更顺利的开展相关工作或是自己能更上一层楼。
2 主要经历
从2012年年中开始,我由Java架构师转做项目经理。当时转型原因也是因为看了不少“程序人生”的文章,了解了大家现在所熟知的35岁现象,借着一个机会就转做项目经理了。从12年7、8月份开始做企业的相关项目,一直做到了14年。现在回想起来当时做项目经理最大的感受是心累,作为项目经理各方面都得操心,不像做程序员时,写好自己那部分的程序代码就可以了。作为项目经理,你相当于是公司派出去的代表,你要对项目团队最后的结果负责,你要利用有限的人力、物力、时间内给公司和甲方有一个基本满意的交待。最后还好,凭借着自己技术功底和理论的项目管理经验,算是合格过关了。
时间来到了15年,公司开始进行组织机构改革,要变成强矩阵式的管理。凭着前2年的项目经历和公司领导的认可,我顺利当上了PMO部门经理。挑战又进一步加大了。整整一年多的时间,我坚持了下来,以至于后续的2年时间,我感觉无比的轻松。记得高峰时间我当时管理了接近20个项目经理,60多个项目在并行。我们制定了一系列的项目管理制度,印象比较深的有项目工时估算、项目激励与考核还有各种项目文档模板。16年和17年我们成立了业务事业部,我负责其中的一个业务部。工作也由前几年项目工作再往前进了一步,做了一些市场和销售支持的工作。
时间来到了18年,由于公司业绩对赌没有完成,公司又进行了一系列的调整。我先后做了研发管理和项目管理的相关工作直到最后公司解散。2021年3月,我离开了工作14年的公司,通过猎头顺利进入到了另一家大型软件公司,也终于去感受到大型软件公司的工作氛围,在23年年初,由于一些机缘巧合我跳槽到一家创业公司去做了公司的合伙人,主要是负责企业的产品研发和实施工作。
3 感悟和收获
3.1 关于打工和事业
在一家公司内,只要你不是公司的实际控制人,职位做到再高,你也只是打工人,这份工作不是你自己的事业。换句话说,你要随时做好走人的准备。因为天有不测风云时常发生,尤其在这个经济环境下。所以上了年纪的人(这里可以是35岁或者40岁或更大)一定要有危机意识,离开了公司,一定要有自己能干的事。当然财务自由的人除外。
3.2 关于项目管理证书
建议做IT行业的同志,无论你做哪一个岗位,有了三五年的工作经验后,一定要考取一个项目管理证书。建议考一下软考的“信息系统项目管理师”证书和PMP证书。其中取得“信息系统项目管理师”证书的人员可以申请评聘为高级工程师职务,PMP证书有些单位招聘项目经理时,有此证书的可以优先录用。当然,大家也可以像我一样,先拿到软考的“系统集成项目管理师”,再拿“信息系统项目管理师”,最后拿 PMP证书。怎么才能拿到证书,我认为最快的方式是参加培训,因为培训老师已把项目管理知识体系已给我们梳理的非常清楚了,只要按照老师的方法去实践,拿到证书是没有问题的。
3.3 关于项目管理知识
学习和实践了这么多年项目管理,给我印象最深的还是范围、时间、成本、质量的项目管理三角形,如下图所示:
一、范围:范围是项目管理的核心,项目管理一定要从这个项目的业务核心目标出发,要能识别出业务的核心目标,并且超预期的满足它,项目基本上就成功了一半。
二、时间、成本、质量都是项目成功重要约束条件,一个成功的项目在进度、成本和质量上都应该基本符合项目的要求。
三、项目范围如果扩大或缩小,就直接影响了时间、成本和质量的大小(长短、高低、好差)。在范围不变的情况下,时间、成本和质量之前也是相互影响的,他们之间一定要形成一个三角形的。
另外5个过程组和9个知识领域,也得需要基本清楚,基本上只要记住大块的内容就可以了,以下内容大家可以参考一下:
知识领域 | 项目管理过程组 | ||||
启动过程组 | 规划过程组 | 执行过程组 | 监控过程组 | 收尾过程组 | |
整合管理 | 制定项目章程 | 制定项目管理计划 | 指导与管理项目执行 | 监控项目工作 | 结束项目或阶段 |
实施整体变更控制 | |||||
范围管理 | 收集需求 | 核实范围 | |||
定义范围 | 控制范围 | ||||
创建工作分解结构 | |||||
时间管理 | 定义活动 | 控制进度 | |||
排列活动顺序 | |||||
估算活动资源 | |||||
估算活动持续时间 | |||||
制定进度计划 | |||||
成本管理 | 估算成本 | 控制成本 | |||
制定预算 | |||||
质量管理 | 规划质量 | 实施质量保证 | 实施质量控制 | ||
人力资源管理 | 制定人力资源计划 | 组建项目团队 | |||
建设项目团队 | |||||
管理项目团队 | |||||
项目沟通管理 | 识别干系人 | 规划沟通 | 发布信息 | 报告绩效 | |
管理干系人期望 | |||||
项目风险管理 | 规划风险管理 | 监控风险 | |||
识别风险 | |||||
实施定性风险分析 | |||||
实施定量风险分析 | |||||
规划风险应对 | |||||
项目采购管理 | 规划采购 | 实施采购 | 管理采购 | 结束采购 |
3.4 关于管理
做了这么多年的项目管理和部门管理,我认为最重要的沟通方面是最重要的,也是最最基础的。我也接触了不少讲沟通的一些理论模型,我认为还是以下这个模型,是我印象最为深刻的,今天翻出来,重新温习一下。
沟通要做到人和事并重,才能达到最好的效果,尤其和同级或下级的沟通更是如此。关于沟通和管理方面的技能培训,推荐大家可参加“DDI英跃”学习,一定会让你受益匪浅的。
和上级的沟通,是最重要的。首先沟通的对象一直要搞清楚,如下面的场景:在一个部门里,有部门的老大,老二,你作为老二管辖下的这个部门的组长,这种场景下千万别以为你只需要和老二沟通好就可以了,尤其在部门的老大和老二看起来不是那么和谐的情况下,因为决定你生死的一般情况下只有老大说了算。其次,老大肯定是很忙的,你要定期的和你的上级(这种情况一定是老大本人)进行沟通,让他能够理解和支持你的工作。
3.5 关于项目和产品
做项目时间长了再转型做产品的确是需要花些时间的,最近这两年一直做B端的产品,感受还是很明显的。
一、做项目时,你只需要面对一个客户就行,而做产品你需面对整个行业和许多客户,这就要求你必须得是个业务行家才行,否则你容易走向偏道,光是需求你就搞不清楚该不该做。如何判定需求该不该做,比较实用的办法就是这个需求是不是至少3个客户都提了,如果都提了,可能就是一个非个性化需求。
二、项目的需求在一定程度上范围是明确的,而产品的需求及优先级需要产品经理通过对行业和产品业务目标的理解,进行明确。随着客户的催促,产品经理一不小心就跳进了过度研发的泥潭。
3.6 关于职业生涯
做IT的尤其是写代码,肯定得需要做职业发展规划的。35或40岁了还在以写代码为主,在我们国内肯定是不行的,要更早的转向其它岗位,如技术管理岗、项目管理岗等。我个人的职业岗位路径程序员、架构师、项目经理、部门经理、其它管理岗位。
3.7 关于赚钱
君子爱财,取之有道。无论是打工、还是创业一定要走正道赚钱。因为我亲眼目睹了曾经的老板,由于公司经营的不合规,导致最后自己在晚年不保的事实,给我的冲击还是很大的。
4 最后
以上的观点,是本人的一些想法和体会而已,不见得一定对,欢迎大家进行交流,相互学习,共同进步。
相关文章:

我的项目管理生涯
1 前言 从好几年前就想写几篇关于自己职业生涯的文章了,一直由于各种原因没有写成,正好借新的工作机会,尤其是项目管理这段工作经历,计划通过这一二篇文章进行总结和反思一下,以期更顺利的开展相关工作或是自己能更上…...

ChatGPT Canvas:交互式对话编辑器
自两年前 ChatGPT 发布以来,主流 AI 均以对话形式进行交互。传统的对话式界面可以直观看到反馈结果,但在需要深度编辑和协作的项目中就略显局限。为了解决此问题,几个月前 Claude 就发布过 Artifacts 功能,用来拓展原有对话。而现…...

[Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法
标题:[Linux] Linux 的进程如何调度——优先级与进程调度 个人主页水墨不写bug 目录 一、前言 二、将要出现的概念 1.进程调度队列 2.位图 3.进程的优先级 三、Linux进程的调度过程 1.活动队列(*active指向的队列) 2.过期队列&#…...
Python使用Selenium动态爬取CSDN社区帖子的URL链接
前几天读了一篇CSDN社区的帖子,发现文章内容写得极好,值得借鉴学习。于是我想将那个社区的帖子都爬下来,但是那个社区发布的贴子挺多的,一直往下拉才到2022年5月的发布。于是我就只将5月份之前的爬下来就行,但是帖子是…...
【ShuQiHere】双系统指南:如何在 Linux 系统情况下安装 Windows 11,处理引导与网络问题 ️
【ShuQiHere】 🖥️💡 在安装 Windows 11 和 Linux 双系统时,常常会遇到各种棘手的问题,特别是在网络连接、BIOS 设置和引导修复方面。今天我将详细带你解决这些问题,让你顺利完成 Windows 11 安装,并恢复…...
jQuery EasyUI 扩展
jQuery EasyUI 扩展 引言 jQuery EasyUI 是一个流行的 HTML5 框架,用于构建交互式网页界面。它提供了一系列的 UI 组件,如布局、窗口、数据网格等,使得网页开发变得更加简单快捷。然而,尽管 EasyUI 功能丰富,但在某些特定场景下,开发者可能需要更多的定制化功能或组件。…...
408算法题leetcode--第24天
#378. 有序矩阵中第 K 小的元素 378. 有序矩阵中第 K 小的元素思路:值二分,如注释时间:O(log(r-l) * n);空间:O(1) class Solution { public:int check(vector<vector<int>>& matrix, int target){/…...

【CKA】二、节点管理-设置节点不可用
2、节点管理-设置节点不可用 1. 考题内容: 2. 答题思路: 先设置节点不可用,然后驱逐节点上的pod 这道题就两条命令,直接背熟就行。 也可以查看帮助 kubectl cordon -h kubectl drain -h 参数详情: –delete-empty…...
STM32中断编程指南:NVIC和中断优先级
在STM32微控制器编程中,中断是实现多任务处理和实时响应的关键技术。NVIC(Nested Vectored Interrupt Controller)是STM32中的中断控制器,负责管理中断请求、优先级和中断向量。本文将详细介绍STM32的NVIC配置和中断优先级设置&am…...

ThreadLocal底层原理及数据结构详解
ThreadLocal允许为每个线程创建独立的变量副本,使得同一个ThreadLocal对象在不同的线程中拥有不同的值。它的主要作用是在并发环境下提供线程隔离,避免多个线程共享同一个变量,从而减少线程间的相互干扰。 ThreadLocal的核心在于为每个线程维…...

Android Framework AMS(02)AMS启动及相关初始化5-8
该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容过多,因此拆成2个章节,本章节是第二章节&…...
速盾:游戏被攻击怎么办?
随着游戏行业的发展,游戏被攻击的情况也越来越多见。游戏被攻击可能导致游戏服务器崩溃、用户数据泄露、游戏体验受影响等问题。作为游戏开发者或运营商,面对游戏被攻击的情况,应该采取一系列的措施来应对。 首先,要及时发现游戏…...

BUU刷题-Pwn-shanghai2018_baby_arm(ARM_ROP_csu_init,ARM架构入门)
解题思路: 泄露或修改内存数据: 堆地址:无需栈地址:无需libc地址:无需BSS段地址:无需 劫持程序执行流程:ARM_ROP && mprotect函数(运行内存权限修改) && [[ARM_ROP_csu_init]…...

flutter_鸿蒙next(win)环境搭建
第一步 拉取鸿蒙版本flutterSDK仓库 仓库地址:OpenHarmony-SIG/flutter_flutter 第二步 找到拉取的仓库中的README.md 并根据说明配置环境 第三步 配置好环境变量之后 用管理员开启cmd 输入:flutter dcotor 并查看此时flutter所支持的系统 包括&…...

腾讯一面-LRU缓存
为了设计一个满足LRU(最近最少使用)缓存约束的数据结构,我们可以使用哈希表(HashMap)来存储键值对,以便在O(1)时间复杂度内访问任意键。同时,我们还需要一个双向链表(Doubly Linked …...

k8s实战-1
k8s实战-1 一、资源创建方式1.命令行2.yaml 二、命名空间三、Pod总结 一、资源创建方式 1.命令行 就是直接通过命令的方式创建,比如我要创建namespace, kubectl create namespace hello删除: kubectl delete -f hello2.yaml 简单来说&am…...
Python进程池:提升你的并发性能
引言 在现代编程中,多核处理器的普及使得并发编程变得尤为重要。Python,作为一种广泛使用的编程语言,提供了多种并发和并行编程的工具。其中,multiprocessing库中的进程池(Pool)是一个强大的工具ÿ…...

内存占用估算方法
优质博文:IT-BLOG-CN 通过掌握每种数据类型的大小,就可以更准确地预测对象和数据的内存消耗。 一、基础数据类型 Java基础数据类型结构,在64位系统开启指针压缩情况下的内存占用字节数: booleanbytecharshortintlongfloatdoub…...

拓扑排序简介
拓扑排序(Topological Sort)是一种重要的图算法,用于对有向无环图(DAG, Directed Acyclic Graph)中的节点进行排序。拓扑排序的结果是一种线性序列,使得对于图中的任意一条有向边(u, v),顶点u都在顶点v之前。这种排序常用于任务调度、编译器依赖关系分析等领域。 拓…...
使用iTextPDF库时,设置文字为中文格式
在使用iTextPDF库时,设置文字为中文格式主要涉及选择合适的中文字体,并确保该字体能够正确渲染中文字符。由于iTextPDF的内置字体通常不支持中文,因此你需要加载一个支持中文的字体文件(如TrueType字体,.ttf文件&#…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...