最近在看一本书《项目管理修炼之道》的时候。我突然领悟,原来我的学习方向彻底的错了。
一直以来我的想法都很直观:技术不是万能的,一个软件项目的成败,重要的是如何进行项目管理,而不是采用何种技术。 这个观念本事没有错误,但是用在了错误的人身上。 我是一名程序员,不是项目经理,不对整个项目负责,我的职责是按照项目经理的部署编写优质代码,用技术解决一切问题。 项目经理的责任是什么第一,负责确定需求,提出方案 第二,负责分派工作 第三、监管开发进度与软件质量 可以看出项目经理的职责中没有编写代码这一项,也许有些项目经理还写一部分代码,但这不是他主要任务。 而程序员,则是负责编码的专业人士。 再看看程序员的职责。1,软件工程师,按照既定的套路完成交付的编码任务,修改bug。无论新手还是老手,工作内容是一样的,区别仅在于一个有经验,速度快,质量高;一个没经验,速度慢,BUG多。这样的程序员一抓一大把,少了谁企业都照样运作。 2、中级软件工程师,在既定套路的基础上,独立思考部分的技术解决方案,通过编码解决。这时程序员已经有不少的自由了,可以在以往的经验之上搞一些创新。这样的程序员是企业的中干力量。 3,高级软件工程师,提出完整的技术解决方案。这时候程序员在一个领域内已经是专家级别的存在了,走到哪里都是不可或缺的人才,可归属于企业的核心竞争力之中,这样的人一旦离开公司,那就是伤筋动骨,也许还能维持,但以后就别想发展了。必须尽快找到一个能代替他的人,尤其是纯技术型的企业。 以上是我的总结,不一定对,大家不要对号入座。 扯远了,回到正题,说说为什么我的方向错了。因为我的想法,轻视了技术,对于管理人员来说,多掌握项目管理的知识能够保证项目进度和交付,但对于技术人员来说,只需要掌握技术本身就好,用技术去解决一切问题,至于项目的进度掌控,最终交付,需求谈判......全都甩到一边去,那不是技术人员的职责,工作一定要先干好本职才能获得认同。 如果对项目管理感兴趣那就做项目经理好了,但是要明白,首先做项目经理不需要写代码的,然后做项目经理要面对是无休止的会议,善变的需求,还有让人焦头烂额的bug。 而技术人员只需要安静的坐在电脑前,用自己掌握的编程语言,控制电脑做你想做的任何事情,如同掌控一个世界,bug不是问题,因为技术人员的职责之一就是解决bug。 然而不了解计算机是做不到的,所以往深处学习技术吧,掌握编程语言,算法,数据结构,以及计算机本身,不要被各种敏捷,框架,模式诱惑,那都是给懒人用的。 要掌握自己的命运,必须用自己的技术!别人的技术可以借鉴,但不能当做自己的。