当前位置: 首页 > news >正文

如果你想技术转管理,先来试试管好一个项目

        技术转管理,是很多技术人员的梦想,所以经常很多人很迷惑,怎么样才能转型管理?

        项目管理,是最基础的管理,既要管理一个项目,又要协调整个团队一起,完成共同的目标。

        我的管理转型就是从项目管理开始的,在从技术转型项目管理的过程中,让我从以前专注于局部技术实现,逐步转向关注项目整体;从个人的单打独斗,到借助整个团队的力量一起完成一个项目。

        一直到后来做开发总监要去管理整个开发部门,发现还是一样绕不开要管理项目,只是从直接管项目变成了间接管项目而已。

        所以我一般会建议:如果你想技术转管理,先试试管好一个项目。项目管理通常是技术人员转型管理的第一步,也是非常关键的一步!

技术人员转型管理的障碍是什么?

        很多人认为技术人员是不适合做管理的,包括网上也有很多对程序员的刻板印象,比如说:极客、木纳、不善交际、头发少、穿格子衫……

        而我了解的程序员却不是这样子的,他们都很聪明,学习能力强,而情商这些其实和其他职业群体是没有区别的。

        那么为什么程序员会给人这种刻板印象呢?

        一方面原因是这个群体勇于自黑,不介意这些印象;另一方面则是他们过于专注技术实现,沉浸于细节中,而忽视了其他事情。

        程序员总是想着如何技术实现、用什么语言框架、怎么提高效率……要钻研技术,这些是非常好的优点,但是要转管理,这反而会是一种障碍。

        因为管理,最重要的一点就是大局观,要能从整个项目的角度,从整个团队的角度去思考,去确定方向,去发现问题,对问题及时解决及时调整。

        但是当你把注意力都放在技术细节上,就容易忽视其他事情,例如和其他人之间的沟通、不关心当前项目进展。

        就像有人说的:

关注细节的,是工程师;

关注过程的,是项目经理;

关注结果的,是老板。

        所以,如果你要技术转管理,可以先从管好一个项目开始。这也要求我们需要逐步转变思维,从技术思维到工程思维,不要仅仅局限于自己负责的那一个小模块,而是要多从项目的整体去思考。

怎么样去管理一个软件项目?

        软件项目管理涉及知识不少,既有传统的项目管理知识,又需要掌握软件工程的知识,所以很多人一谈到项目管理就觉得很难很复杂。

        我一直强调的“道、术、器”,对于很多知识,如果我们能总结出其中的“道”,再去看很多问题,其实就没那么复杂了。

        就软件项目管理来说,“道”就是管好人、管好事。如果从这两个维度去看如何管理项目,就会发现其实并不难,有很多“术”可以为我们所用。

怎样管好软件项目中的人?

        软件项目管理的一个维度是管人。项目管理中的人,主要涉及两类:客户和项目成员。

  1. 管理好客户的预期

        客户,就是会使用你软件产品的人,通常也是给你项目出钱的人。

        对于客户的管理,就是对于客户期望值的管理,如果你项目的结果高于客户的期望,那么就可以说你的项目就是成功的,如果没有达到客户的期望,可能就是不成功的。

        想要满足客户预期,通常来说,就是你能在项目的质量、范围、时间和成本上达到要求。

        质量达标:交付产品是高质量的,满足客户需求的。

        完整交付:按照约定的功能范围交付最终产品。

        按时交付:项目按照客户认可的进度完成。

        预算之内:在预算内完成项目。

        这四个要素,并不是说必须都要满足,其实很多时候是可以协商的,重点是要达到一个平衡,怎么达到平衡?

  1. 用流程和规范让项目成员一起紧密协作

        项目成员,也就是帮助你一起完成项目的人。

        对于项目成员的管理,不需要过多依赖人的管理,否则项目经理就会成为项目管理的瓶颈。所以更多要落实到流程和工具上。

        好的项目管理,不需要直接去管人,而是管理好流程规范;项目成员不需要按照项目经理的指令做事,而是遵循流程规范。

        合适的项目管理工具,也可以简化流程,保障流程的执行,提高效率。

怎样管好软件项目中的事?

        软件项目管理的另一个维度就是管事。

        软件项目中的事,是指要完成项目目标,在整个开发过程中所产生的一系列任务。对项目中事情的管理,本质上就是对软件开发过程的管理。

  1. 选择适合项目的开发模式

        软件项目的过程管理,和其他工程项目完全不一样,有其独特性,好在软件工程对这些过程的开发模式都已经有了很好的总结,我们直接借用就可以了。

        选择好开发模式,才好确定后续的一系列问题,例如流程规范、使用什么工具,如何制定项目计划等。

        所以对软件项目过程的管理,首先就是要根据项目特点选取合适的开发模式,是敏捷开发还是瀑布模型或者瀑布模型的衍生模型?是一步到位还是逐步迭代?

        当然,开发模式选好了后,还需要配套的流程规范,以及合适的工具,以保障开发模式的执行。

  1. 制定好项目计划

        凡事预则立不预则废,在选择好开发模式后,紧接着就是要做好项目计划,有了项目计划,才能有计划有目的地去推动项目进展,出现问题也能及时发现、及时调整。

  1. 对计划进行跟踪和控制,同时做好风险管理

        计划制定后,并不是说事情就会完全按照我们设想的进行,实际执行难免会和计划有些出入,所以还需要对计划进行跟踪和控制。当项目的推进过程中,如果计划有出入时,需要分析原因,对计划做出调整。同时,也不能盲目乐观,对于项目过程中可能存在的风险要进行识别,做好 B 计划,这样一旦风险发生变成问题,可以及时应对,减少风险导致的损失。

管好人、管好事,你就能管好软件项目

        除了上面介绍的一些项目管理知识,涉及软件项目管理的知识内容还有很多。这里并不是说其他知识内容不重要,而是在刚开始的时候,先把这些事情做好,可以保证项目管理不会出现大的偏差,然后逐步拓展到其他知识领域。

        在这里,我把前面说的内容做了个简单的思维导图,希望可以对你的项目管理转型起到一定的帮助作用。

技术转管理的一些经验教训分享

        技术转管理的路上肯定不会是一帆风顺的,要自己踩过很多坑才能成长,我这里也给你分享一点经验教训,希望能帮助你少走一点弯路。

控制你想写代码的冲动

        我给每一个刚从技术转型管理的同学的第一个建议都是一样的,那就是:“不要写代码,不要写代码,不要写代码,控制你想自己动手写代码的冲动。”

        前面我说过技术人员转型管理的最大障碍是什么,那就是过于关注技术,而忽略了其他事情。从技术转型管理,是个巨大的转变,这种思维的转变是很难一蹴而就的。

        对于程序员来说,写代码是自己的“舒适区”,而管理则是“学习区”或“恐慌区”,在转型的过程中,特别容易回到舒适区。

        比如你看某个接手你的程序员代码写的实在是不够好,那是你最熟悉的,你只要一小时就写完了,而他要一整天的时间,还没有你写的质量好,你会很有冲动去帮他完成。

        比如说在项目进度吃紧的时候,你可能第一想法就是自己去写代码帮助团队赶上进度。

        但是,你要知道,当你转型管理后,你的主要职责就是管理,而不是写程序。如果你还是把大部分时间用在写程序上,那么你就很容易忽略项目中的问题。比如没有去关注项目的进展、目前项目的瓶颈、和客户以及其他项目组之间的沟通协调等。

        这就是为什么你第一步是要控制自己写代码的冲动。作为一个项目管理者,你的第一要务是管理好项目,而不是去写代码。当你控制住不去写代码以后,你才能把注意力放到团队和项目上去,去领导团队。团队出现问题时,你能及时解决、及时调整。

        所以,如果你带的项目进度吃紧时,你要做的不是去写代码,而是去帮助团队从其他角度想办法。

团队的成功,才是你的成功

        我刚转型做管理的时候,问过老板一个问题:“是不是我把上级的工作做了,我就能升职了?”老板的回答很出乎我意料:“并不是你把上级的工作做了就能升职,而是你的下级都成长了,能替代你的位置了,你就可以升职了。”

        这让我明白一个道理:作为一个管理者,团队的成功,才是你的成功。做程序员的时候,把代码写好就很成功了,但是转型做管理后,团队的成功和项目的成功,才是你的成功。

形成自己的管理风格

        我在刚开始工作的时候,当时的项目经理很厉害,对我们要求非常严厉,做错了可能就要挨批评,项目管理的很好。那段时间我也进步很大,所以我觉得他是一个很好的项目理,我就想着自己以后也要像他一样去管理项目。

        等到我开始管理项目时,我也想像他一样去严厉的对待下属,但我的性格是比较温和的,我没有办法去做到动不动就去责骂、批评下属,这也让我有了很大的困惑。

        后来我尝试着结合自己的性格特点,更多地去激励、帮助下属。在这种管理风格下,整个团队的氛围很融洽,大家做事情也积极主动,一样达到了很好的管理目标。

        所以说管理这种事,并不是只有一种风格一种方法,你完全可以根据自己的特点,找到适合自己的管理风格。

坚持就是胜利

        技术转型管理的过程,一定不会是一帆风顺的,你会面临很多挑战,会有非常大的压力。这时候最容易产生的冲动行为就是:“算了,还是回去写程序吧!”

        我在转型的过程中也遭遇过非常大的压力,遇到过各种困难,掉了好多头发。我有过好多次想放弃的念头,最终还是咬咬牙,坚持了下来。

        这样过了几年后,我再回头看当初觉得特别难、压力特别大的事情,现在看起来根本不算什么。如果我当初真的放弃了,恐怕再难迈过那道坎,完成转型。

        一旦你已经下定决心要转型,就不要轻言放弃,坚持就是胜利。

总结

        想要技术转型管理,首先从转变思维方式开始,从技术思维到管理思维,从关注细节到关注整体。然后去改变习惯,控制自己想写代码的冲动,多去从其他角度想办法。

        要管理好一个项目,关键是要管理好项目中的人和事。对客户要管理好期望,对项目成员则通过合理的流程规范更好的一起协作;对于项目中事的管理就是对软件开发过程的管理,选择好开发模型很重要,然后就是制定好计划,按照计划推进,过程中不断的调整,并且管理好项目中的风险。

 

相关文章:

  • mysql 排它锁,共享锁
  • 煤炭行业生命周期分析,煤炭行业周期性特征
  • [SpringBoot系列]NoSQL数据层解决方案
  • 【通信原理】确知信号的性质分析与研究
  • Linux网络:网络层IP协议 链路层MAC协议
  • 猿创征文 |【SpringBoot2】快速上手SpringBoot
  • Linux的scp命令远程传输文件
  • antv x6让拖拽控件工具箱悬浮在画布上,工具箱区域鼠标按下不生成节点
  • matlab怎么训练神经网络,matlab神经网络训练方法
  • 「面经分享」小米java岗二面面经,已拿offer
  • 手把手教你给女朋友编写一个公众号定时推送(java版本)
  • 数据结构与算法--动态规划
  • 标准IO移动光标
  • 咕咕驴2022新版AI短视频一键换脸小程序源码/带流量主
  • 检查异常处理方式:1,抛出;2,捕获
  • [笔记] php常见简单功能及函数
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 《剑指offer》分解让复杂问题更简单
  • extjs4学习之配置
  • Java的Interrupt与线程中断
  • js ES6 求数组的交集,并集,还有差集
  • JS函数式编程 数组部分风格 ES6版
  • Python实现BT种子转化为磁力链接【实战】
  • Spring Cloud中负载均衡器概览
  • XForms - 更强大的Form
  • 简单基于spring的redis配置(单机和集群模式)
  • 聊聊directory traversal attack
  • 日剧·日综资源集合(建议收藏)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 新书推荐|Windows黑客编程技术详解
  • 用Python写一份独特的元宵节祝福
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • scrapy中间件源码分析及常用中间件大全
  • 大数据全解:定义、价值及挑战
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (JS基础)String 类型
  • (三分钟)速览传统边缘检测算子
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原)本想说脏话,奈何已放下
  • (转)德国人的记事本
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET中两种OCR方式对比
  • @ResponseBody
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [Android]Android开发入门之HelloWorld
  • [ASP]青辰网络考试管理系统NES X3.5
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C++核心编程](四):类和对象——封装
  • [Electron]ipcMain.on和ipcMain.handle的区别