之前有多位读者问我想做项目经理,想问下我的经验及教训,答应了好多人要写,一直没写,眼瞅着年底了,2018答应过的事情绝对不能拖到2019。今天就跟大家聊聊,内容可能有点长。
这篇文章其实很早就想写了,但说实话一直不写的原因是有点心虚,毕竟我也才毕业不到5年时间,不是什么行业大牛,也不是知名大V,害怕自己写不好给读者带来误导。但又转念想想,谁不是这样过来的呢,大部分人刚毕业都不可能立马找到满意的工作,大部分人对自己的职业规划也是充满迷茫,都是慢慢积累,一路摸着石头过河。今天我就大胆写出来,哪怕对你有一点点启发,能帮你少走一点点弯路,我就觉得值了。
我14年毕业于一个普通的本科院校,计算机与科学技术专业,算是所谓的科班出身吧。从大学毕业顺利拿到毕业证和学位证来讲,我算是合格的,但从毕业就业所需的专业技能来讲,我是学渣。这里我并不想过分强调中国大学教育与社会所需工作技能的脱节。如今的互联网时代,想要学习任何的技术知识大多都能找到,关键是你怎么利用学习资源了,所以不要抱怨自己的学校和大学教育环境。
现在想想,我的大学日子过的太爽了,篮球、dota、妹子、一帮好兄弟、热闹的班集体,肆无忌惮的挥霍着自己的青春,大学四年可以说是目前为止我人生里最美好的一段回忆了吧。但时间是公平的,有的人肆意挥洒青春,毕业就面临着失业,而有的人早早就为考研或是工作准备着,他们大多也都能如愿。我是前者,但我也不后悔,那段时光短暂而美好,青春无悔。
大三末的时候,虽然是专业技能很差,但编程还是有一点基础的,就硬着头皮试着去找了一份工作,是一家做电商网站的公司。记忆深刻的是当时那个公司老板给我开出一个月的工资是2000,需要说明的是当时是2013年,我还没毕业,而且我所在的城市是一座四五线的内地小城市,一个月2000感觉真的很多了。跟我一起进去的还有几个实习的同学,私底下我问了都才1000多点。我内心当时那个高兴啊,我想这主要源于我面试时候的表现吧。其实当时的技术水平都很低,我感觉主要是那个老板觉得我综合能力更强,希望我未来能带领一个小团队。我大学期间是班长,自认为沟通能力还不错吧,我想这个是主要原因,在面试的沟通过程中,我表现出的自信,叫吹牛逼也行,我觉得征服了那个老板,当然也可能是因为我太帅(噢,那个老板好像是女的)。
后来临近毕业,家里人让考公务员。我也确实努力考了一把,差点进面试,说实话我现在想想幸亏没考上,如果当时真当了公务员,我可能会后悔,虽说工作稳定,但一定见识不了外面世界的精彩。公务员考试失败后,我就想着继续找计算机相关工作了,当时还真没想去大城市,觉得去像北京这样的大城市,可能就是去找死,水平这么低,找不到工作的,现在回过头想想那时候真傻逼。一个堂哥给我的建议是,你要下定决心从事计算机行业,就别小城市发展,要去就去IT聚集地北上广,当时他给我举了个形象的例子,至今记忆犹新,在小城市里做IT就像在小河湖泊里划船,只有到大城市的大江大海里,才能历经风雨,扬帆远航。现在回想过往几年,确是这样。
从认为自己来北京是找不到工作、是找死,到我下定决心来北京,经历了很多,包括家里人的反对、自己痛苦的思想斗争。很庆幸我战胜了自己,很感激当时自己下定决心的勇气。年轻的时候不去冒险,不去尝试,要等到自己老了吗?
我大学的时候学的是Java,刚来北京的时候,仅有一点基础知识,编码能力很有限,投了一部分简历,收到面试也很少。相比之下,当时有很多同学参加了培训,他们也确实比我更快找到了工作。由于之前的实习经历,我对自己还是有信心的,我觉得我不培训也能找到工作,我更愿意在工作中去学习,而不是再回到上课的日子里,事实证明我可以。虽然面试机会不多,但我抓住了每次面试机会,每次面试都是提升自己的机会。基本都是白天面试,晚上回来学习,我发现这样效率很高。针对职位要求去准备相关知识,我记得找工作面试那一周我晚上都是熬夜到两三点才睡觉,终于功夫不负有心人,收到了两家公司的offer,一个是做测试的,一个是做java开发。考虑到以后的发展方向,我选了java开发。
在公司的前半年基本都是白天在公司跟着别人做项目,晚上回去自己再学习。说实话很辛苦,当时水平太低,大家也都很忙,遇到问题,不到万不得已也不会轻易问别人,基本都是自己查资料,自己摸索。这里说下,有时候有些技术难题如果自己一段时间还没解决,就厚点脸皮赶紧问同事,没啥不好意思的,技不如人不可怕,可怕的是你不敢面对,别人的指点能让你少走很多弯路。经过半年的努力,我渐渐从一个Java小白开始跟着做项目,自己也学着搭建框架了。工作虽辛苦,经常加班,但有几个一起进公司的同龄人,我们一起加班一起玩,渐渐成为了朋友,工资不高但还算过的开心。这样的日子过了快2年,渐渐地,我发现了问题,一是在这个公司里我能学到的东西已经不多了,技术氛围不够,提升空间有限;二是领导一直口头上说要给我们加薪,但一直往后拖,每次加班一段时间后,就带领大家下馆子,大吃一顿,喝一场酒,讲一场兄弟情。只怪当时我们太年轻,竟然每次都被领导的兄弟情感动,恨不得为他上刀山下火海。后来了解到,2个爱喝酒的,跟领导玩的好的老员工,私下领导都给了“好处”。而他们就是平时指挥我们干活的人,其实我们干的活比他们多的多。认清了这一点,我们几个人相继跳槽换了公司,临走时领导还极力挽留,说现在行情不好,不好找工作。谁能再信你的鬼话,尼玛不出来不知道,我们的薪资基本都翻了2-3倍。正在看这篇文章的童鞋,如果你的领导是这种总拿兄弟情洗脑的人,现在是市场经济,听哥一句话,找个机会赶紧撤吧。
到下一家公司,开始还是做Java开发,这个时候水平离大牛还很远,但基本也能在项目中担任重要角色,甚至在有些项目中挑大梁了。但渐渐的我又发现问题了,这次不是公司的问题,是我自己的问题。这时候做研发快3年了,在思考我的未来发展方向时,我迷茫了。往什么方向发展呢?那段时间我看了很多关于职业规划的书,很多书中基本都指向了2条路,一条是管理方向,一条是技术大牛、架构师方向。我对比了自己,问了自己几个问题,我喜欢写代码吗?我能在技术的道路上走的更深吗?
说实话当初考大学选专业的时候,想必大多数人一样,都不知道自己喜欢什么。当时选专业的时候,我就觉得计算机象征着科技、未来,就选了计算机专业。其实也不知道自己喜欢不喜欢这专业,将来会不会喜欢写代码。大学期间学渣不说了,参加工作写了几年代码后,我发现有时候我是喜欢写代码的,特别是在我用自己的思路实现一个牛逼功能的时候,那时候我甚至觉得自己能改变世界。但我发现这种获得内心满足感、自豪感的时候并不多,更多的时候可能是出于完成任务。同时我发现,周围很多人是这种情况,但也有少部分人,他们不仅喜欢写代码,而且擅长写代码。比如,同样的功能开发,擅长的人可能半天完成,而我也能完成,但需要1天甚至更长的时间。也许有人会说,这说明你不努力,你没有及时掌握牛逼的技术知识。咱不要抬杠,即便你努力,在做同一件事上,你必须承认,有些人是更有天赋的的,这叫擅长,而你最多叫喜欢。我特别喜欢打篮球,有时候甚至幻想能去打NBA,看NBA的都知道科比牛逼,除了我科每天看洛杉矶凌晨4点钟的太阳,你以为人家没有天赋吗,努力加天赋,人家这叫擅长,我就算全天24小时再努力打篮球,最多叫喜欢。
认清了喜欢和擅长的差距,我逐渐认清了自己,我最多算喜欢写代码,但我并不擅长写代码。成为技术大牛,也许擅长的人需要5年,我可能需要10年甚至更长时间。也许我加倍的努力,理论上有可能实现的,但有时候选择可能比努力更重要。也许别人5年后成了大牛,而我在成为大牛的路上已经熬成了秃瓢大爷。我认清自己后,决定了自己以后不会走技术大牛这条路线。当然这只是说我选择路线时候的考虑,不同的人情况不同,并不是说管理就好,技术就不好。就算我下定决心以后要走管理路线,但对于技术,在我成为项目经理之前我也还是不敢有丝毫懈怠,因为这是当时的安身立命之本啊。至于管理路线,当时也是一知半解,不知道自己具体管理路线怎么走。但是当时我心里就埋下了一颗种子,等待着它的发芽。
在明确自己以后要走管理路线的情况下,我也没有放弃技术的精进,我会留心观察一些之前我没有关注的事情,比如项目上的一些沟通、客户或产品经理提出的需求、项目范围控制、项目里程碑节点、项目阶段总结等等。这些之前我都认为是杂事,是没用的事。花时间在这些事上不如让我静心写几行代码,不用理会那么多乱七八糟的人和事。我想大多数程序员也是这么想的,但这些看似跟程序员关系不大的事情,后来我发现也是完成一个项目必不可少的,甚至有时候比写代码重要的多。
下面说2种情况,看你遇到过没。我刚写代码的时候,小组长布置了开发任务,我啥也不问,觉得理解就直接开始做了,结果快做完了,组长告诉我他想要的并不是这样,卧槽,辛苦写了半天的代码要重写。这是很典型的程序员遇到的一个问题,一方面是缺乏对功能需求的理解,只想着如何实现这个功能,殊不知跟实际的需求相差很远。另一方面缺乏与布置任务人的沟通。还有一种情况,有时候客户需求说的很清晰,我们理解的很清楚,沟通也不错,貌似我们做的都对,但却有一种现实让我们很痛苦,感觉功能越做越多,尼玛啥时候能做完啊,需求感觉没边没头的,为了工期我们还要苦逼加班加点。向着目标我们工作加班加点也能理解,但是像这种项目给你造成了很大的精神压力,完全没有了当初改变世界的兴奋。上面说的第一种情况,需要我们程序员写代码的时候多理解需求、多沟通,避险陷入孤岛的思维陷阱,但后面一种情况,看似与程序员写代码无关,但直接影响到了我们,这其实就是项目经理要解决的问题。
上面说的第2种情况,在项目管理中叫项目范围蔓延,属于项目范围管理中的问题。那么项目经理一般怎么处理这种问题呢,这就要说到项目范围管理中的定义项目范围,定义范围其实就是明确需求的过程,确定哪些需求在项目范围内,哪些将排查在项目范围外,从而定义出项目产品、服务或成果的边界。这个定义范围的过程中会有一个输出叫项目范围说明书,它的前身叫项目工作说明书(SOW)。这个文件一般是需要项目甲方、乙方确定的,大部分情况是很正式的书面文件,有双方的负责人签字的。在项目进行过程中需要项目经理根据这个及时把控项目范围,如果出现范围蔓延就要及时找客户相关方负责人沟通了,一般客户看到这个当初大家达成一致的文件就不会再逼逼新增需求了,当然也有例外的,这时候如有必要就问题升级了。现实项目中遇到的问题可不仅仅是这一种情况,还有很多,比如项目时间管理、成本管理、质量管理、沟通管理、风险管理等等,每一个展开都能写一篇文章,受限于篇幅,这里不一一展开讲了,以后有机会挑大家感兴趣的说说我的理解。
回到我的经历上来,在我不断精进自己技术的同时,我会很留心项目经理做的事,经常在完成自己的工作的前提下,去协助项目经理处理一些工作。有段时间公司项目很多,但项目经理人员有限,项目经理都是一个人同时带几个项目。我参与开发的项目,完成自己的开发任务之外,我基本都会尽最大努力去帮助项目经理做一些事,比如写一些项目文档,业务需求分析,跟客户沟通等等。面对不同的客户,沟通方式也不一样,这块我学到了不少。但也很累,好多时候半夜里还在帮着写文档,不要以为项目经理就很轻松。
相比开发,更多时候是专注自己的代码,完成功能就行。而项目经理从项目一开始到结束,都在各种操心。项目开始的时候要制定项目计划、定义项目范围,执行过程中要随时把握项目进度、评估各种风险,项目验收阶段要保证满足客户验收标准,期间还有各种会议、汇报工作等等。有时候我甚至觉得倒不如写代码痛快,但我觉得凡事都有个过程,不可能一开始就能处理好所有事情。渐渐的,我熟悉了一个项目的完整流程。有一次,我所在的项目中,项目经理家中有事不得不离开,整个项目需要一个能掌控进度的人,项目经理向领导推荐了我,我顶着压力接了,毕竟这是个机会,期间遇到我不能解决的问题,及时领导汇报,磕磕碰碰,最后项目总算是结了项。我平时的努力部门经理也都看在眼里,通过这次机会,我也证明了自己,不仅能写代码,我还能带项目。虽然短期内职位上没有变化,但后续的项目中我开始带项目了,我做的就是项目经理的工作,后来也确实得到了职位晋升。
有一点需要注意的是,项目经理大部分都是从技术做起,从项目做起,慢慢历练出来的,很多时候是被提拔出来的,不是说你刚刚毕业或突然想转项目经理就能做的了,这需要一个过程,需要你踏踏实实做好自己的工作的前提下,多去关注,多去学习。还有一些人如果对客户需求敏感、对产品设计感兴趣,也可以做产品经理,这也是管理路线的一个选择。
不知不觉,感觉写了好长,很感谢你能看到这里,后续我也会经常在这里分享自己的一些感悟。不论是做技术还是管理,希望大家都能找到适合自己的路。最后再说一点,不论你从事任何工作,都要培养下自己的写作能力,多记录,多总结,多分享,每次写作都是一次很棒的自我对话,这真的是未来很重要的一项个人技能。欢迎大家关注我的公众号「kevinsheng」,我会经常分享一些自己的职场经验、感悟等,期待与大家沟通交流,一起进步。