作为一名程序员,天生崇拜写代码能力强的程序员。但是,只要写代码能力足够强,就能在职业发展道路畅行无阻吗?
答案是:NO!你还需要有项目管理的能力。
提到项目管理能力,不少人第一反应就是项目经理的岗位。然而作为一名普通的程序员,其实也需要懂得项目管理。
调查结果显示,大部分程序员工作三五年后,都能掌握所在岗位必须的知识、经验和技能。然而很多人接下来就陷入困境,左冲右突,无法加薪升职,一直停在职场金字塔的第一层,三年五年过去了,八年十年过去了,可能都还停在一层的位置。
对程序员来讲,第一层对应的就是具体的软件开发角色,卡在这层无法晋升,是指没办法成为技术管理角色。这其中最重要的原因是:大部分开发者只注重专业技能的修炼,忽视了人际沟通、项目管理等技能。
而实际上,程序员想进阶技术管理这个岗位,随着项目的复杂度的增加、竞争压力的增大,单单做一个会写代码的优秀程序员是不够的,只要你在一个多人协作的团队,想要能够在团队中发挥最大价值,那你就需要有项目管理的能力。
项目管理是你从个人走向团队,扩展自己的工作职责时,一个必备的底层能力升级包。
项目管理的三大目标即时间、成本和质量,实际是告诉我们应重点关注什么因素,项目控制应该做什么工作。三大目标虽然简单,但如果能将其真正贯彻到自己的行动中,那么对项目计划制定、过程控制等工作,均能起到引导作用。有了努力的方向,程序员在进行代码的项目管理时也就可以真正告别“盲目”了。
编写高质量可维护的代码是程序员的基本修养,接下来,就让我们从项目管理聚焦到项目代码质量这个相对小的领域来深入剖析。
01学习项目管理知识体系
很多事情都是有章法、框架的,项目管理也是如此。
完整的项目管理可以分为10个过程:
1、整合管理
2、范围管理
3、进度管理
4、成本管理
5、质量管理
6、风险管理
7、采购管理
8、人力资源管理
9、沟通管理
10、干系人管理
前7个过程,是对事务的管理,后3个过程,是对人的管理。而且,后3个过程往往会在很大程度上影响前面的7个过程。所以,人际沟通能力,协作管理能力,都是技术管理岗位必须具备的能力。
我们掌握一项技能的最开始,就是找到这个领域的知识体系和框架去学习。了解了基本框架,再去实践,以实践来印证所学知识体系,相互促进,这样,知识才能内化为能力。
02先设计后开发
我们程序员总认为:码代码才是正事,其他事情都是扯淡。但你别忘了,你肯定也经历过需求改来改去导致的痛苦、设计稿一改再改带来的重复劳动、没有设计就开发导致的各种问题。
既然我们身为程序员的时候,已经经历过这些苦楚,那为什么要让我们的同事再经受一遍呢?
所以,请重视项目前期的阶段。去搞定干系人、去敲定需求、去定稿设计、去指导代码设计。这些工作完成的越好,开发过程越顺利,项目进度越有保障。
很多事情等到开发阶段再介入,你会发现为时已晚。莫要坑了同事也坑了自己。所以小渡想说的是,防范于未然的能力,比救火能力更重要。
03专业技能
读程序的能力
很多的软件开发工作不一定会从头开始,这就需要开发人员有良好的阅读程序的能力,能在尽可能短的时间里了解软件整体的架构,理解该软件初始的开发思想,能迅速并有效地参与到项目开发中去。
编写代码能力
这点会涉及到开发人员对所用语言的熟练程度,和该开发人员的编程风格。是否拥有良好的编程习惯,能遵循通用的编程规范,并作好注释,对该开发人员所开发代码的易读性和易维护性有很大的影响。
调试测试能力
代码的调试和测试时间并不比编码时间短,甚至会超出,当然,很多的调试和测试工作并不都是编码人员完成,但测试工作是很多软件开发人员的必经之路。
04工作中练习主动代入角色
主动打杂,日常推演,这些方法可以让我们熟悉项目管理的知识、技能和过程,但有效的办法,还是直接做目标领域的项目管理工作。
你要用心观察,发现机会,主动去做。
比如拔高自己,站在全局视角思考整个项目,从立项、需求、开发、测试、交付、运维、项目生产工具,分析哪个环节做得不好,哪个环节改善之后效果可以被看见,主动去做这些事情,主动成为衔接不同环节、不同人员、不同部门的桥梁;
比如观察项目经理、研发经理,看他们有哪些项目管理相关的事情是不愿意做的,比如组织会议、跟踪计划、分派任务、推动多干系人协作等,主动找他们表达你可以分担这部分工作的意愿,获得打杂的机会。
有心就可以发现很多可以发挥的机会——因为大多数开发者都嫌麻烦不想把事情揽在自己身上哦。
05少写代码可以,脱离技术不行
这最后一条,是为了引起各位的警惕。
我们程序员天天和机器打交道,习惯了非0即1的二进制生活。而在项目管理中是需要和人沟通的,与人打交道。所以面对我们的同事,面对整个团队。应该多考虑人,以人为中心。
但这就代表我们要脱离技术了吗?其实不是这样的。我们可以少写代码,但我们不能抛弃技术。
我们程序员做项目管理,最大的好处就是,不会出现外行指导内行的情况。所以我们即便转型了,也要时刻保持对技术的敬畏和对技术的关注。
你可能不需要对各种技术的细节了解的特别透彻,但要心里有底,知道各种技术的适用范围、使用条件、优势劣势等等。保证在项目需要的时候,能够快速选型。
而程序员在项目管理中,最大的一个好处在于可以让团队同事去学习,让他学习整理后来教你,以达到快速学习的目的。
所以:不要抛弃技术,它总有一天会拯救你。
正所谓“有道者术能长久,无道者术必落空。”具备项目管理能力的程序员,无疑会在互联网高级人才竞争的局面下,拥有更多的市场竞争优势。
在很多大厂,比如网易这些大企业,已经有越来越多的主程开始承担项目管理职责,在他们的绩效考核中,也会明确写入一定比例的项目管理责任。这种类型的项目负责人,已经在逐渐成为组织中的中流砥柱,技术之路自然也越走越宽广。
很多时候我们都会迷茫:程序员究竟该如何成长?到底什么时候才算准备好呢?与其在反复纠结,不如一边做一边思考,给自己定下更高的标准要求,也许会有意外的收获。有些人属于先转变思维,进而转变角色。有些人可能先转变位置,再带动思维转变!我也许就是后者,但无论怎样,小渡都相信你可以做到。
|