已经翘辫子的敏捷开发与瞎扯淡的30岁前端转管理

在教学和工作过程中,我经常听到学生说,老师是不是30岁以后精力和脑子就跟不上了,那你说我是不是要转管理啊。

我暂且不论30岁以上是否还适合敲代码,我说一下那个被程序员和代码搬运工眼中的技术人员养老院-管理岗是不是真的是他们想象的那样。

好多同学也会问我,老师我不是要学些项目管理的东西啊?比如敏捷开发?还有鱼骨图还有各种管理我是不是都得懂一点?

其实我心里就飘出四个字儿。

懂你妹啊!

管理岗并不是技术人员的养老院,也不是一个不需要技术功底的职业。这里我就说一个普遍大家认识的误区,拿敏捷开发举例,我说完大家就明白了为什么我这么说。

10多年前我第一次接触软件工程的时候看到敏捷开发,就跟看到了两个人能演完的电影一样打开眼界,我擦嘞,牛B啊,神器啊,还能这么完,搞什么苦逼的代码啊,直接搞这个管人多好,尼玛,做着直升机直接当项目主管多爽啊。

后来慢慢的接触多了,发现根本不是这么回事,一转眼10年过去了,太阳底下并没有什么新鲜事,我当初的幼稚想法又一次出现在了这一代程序员的身上,历史总是那么惊人的相似,就像两个人演完的的电影无非就是那点内容,两个人上场一鞠躬,然后今天我给大家说段相声,然后再鞠躬,然后滚蛋,这么一个节奏。

是什么改变了我的想法呢?

后来接触项目多了一个有一个敏捷开发的项目的失败让我明白,是的,敏捷开发已经死了,或者说谈敏捷开发的项目管理者大部分都是在扯淡。

本身敏捷开发是软件工程学的东西,臭不要脸的项目管理人员生拉硬拽渐渐的被变成了项目管理的内容,好像不谈谈敏捷开发就感觉自己是个LOW B一样,摆脱,你谈敏捷开发才是LOW B好吗。

为什么严格使用敏捷开发的项目失败了?

为什么使用敏捷开发的项目人员很多离职了?

为什么很多公司采用敏捷开发反而项目进度推迟了?

为什么很多采用敏捷开发的公司项目最后产出一大坨翔一样的代码?

核心的问题很简单,因为敏捷开发根本就不是项目管理领域的东西,人家是软件工程学的东西好吗。

有同学说,老师你咬文嚼字干嘛,有用吗?

从上世纪90年代初起,计算学科(Computing)的发展远远超越了计算机科学的边界,形成了计算机科学、计算机工程、软件工程、信息系统与信息技术等若干独立学科。计算机工程从电子工程学科中分离出来,旨在研究计算机硬件的相关工程问题,而软件工程从计算机科学中的一个学科方向发展成为与之并重的一门独立学科,重点研究如何以系统的、可控的、高效的方式开发和维护高质量软件的问题。

软件工程学科诞生后,人们为软件工程给出了不同的定义,例如最早的定义是由F.L. Bauer给出的,即“软件工程是为了经济地获得能够在实际机器上高效运行的、可靠的软件而建立和应用一系列坚实的软件工程原则”。而美国梅隆卡耐基大学软件工程研究所(SEI)给出的定义则是软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题。但目前普遍使用的软件工程定义是由IEEE给出的,即软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护。

软件工程概念实际存在两层含义,从狭义概念看,软件工程着重体现在软件过程中所采用的工程方法和管理体系,例如,引入成本核算、质量管理和项目管理等,即将软件产品开发看作是一项工程项目所需要的系统工程学和管理学。从广义概念看,软件工程涵盖了软件生命周期中所有的工程方法、技术和工具,包括需求工程、设计、编程、测试和维护的全部内容,即完成一个软件产品所必备的思想、理论、方法、技术和工具。

这个是软件工程,那什么是项目管理呢?

项目管理是管理学的一个分支学科 ,对项目管理的定义是:指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程。项目管理是对一些成功地达成一系列目标相关的活动(譬如任务)的整体监测和管控。这包括策划、进度计划和维护组成项目的活动的进展。“项目是在限定的资源及限定的时间内需完成的一次性任务。具体可以是一项工程、服务、研究课题及活动等。”

两者的区别是,软件工程师需要大量的脑力劳动研究软件如何更好开发、运营、维护、交付的学问,而项目管理丫就是的是在限定的资源及限定的时间内需完成的一次性任务。

还是不懂对吧?没问题,翻译成人话,

软件开发人员使用敏捷开发的方式去工程化的开发代码能够更快更高质量的交付满足用户需求的产品。

项目管理是资源有限的情况下怎么样完成任务。

一个是需要高超的专业技能,一个需要高超的管理技能。

一个高超管理技能的人使用软件工程学的技能,去管理一帮脑袋聪明的都掉毛的程序员,这是扯淡的,要么失败

要么就流于形式。

敏捷开发是帮开发人员更好开发软件的,不是一帮不懂技术的所谓管理者在daily scrum敲着开发者的脑袋问为啥没有按照进度完成啊?

尼玛呀,设置deadline或者时间 我用手机就可以,用你这个蠢货提醒我们程序员?

所以让没有技术或者技术很菜的项目经理用所谓的敏捷开发管理项目,就是一个失败,彻头彻尾的失败。

这也是我举这个例子的原因,你如果程序开发技术很牛掰,那么你想转管理,我完全支持你,但是扪心自问,跟我说老师是不是30岁以后精力和脑子就跟不上了,那你说我是不是要转管理啊。这句话的人有几个是技术很厉害的?记住,真正技术厉害的人已经管理团队了,不会问这句话。

没有深厚技术底蕴的程序员想去做项目管理,就和没有xx的太监想做A片的动作指导一样可笑。

最后一些经验之谈吧:

1.软件开发是非常高超技巧和脑力劳动的事情,开发者的能力是决定软件质量的主要因素,什么软件工程的方法和

卡工期之类的项目管理都是扯淡,没用。

2.操蛋的设计往往意味着软件的失败。

3.工期卡太死一定会造成软件的垃圾。

4.让软件开发者有充分的动机和自由度去开发软件能够提高软件开发效率。

5.经验丰富的领导者能够提供良好的环境和正确的方法能够提高员工的效率和软件质量。

第五点我举个例子,

曾经我问一个带我的总监我说我想再下一个项目里面使用scrum,瀑布开发满足不了咱们需求了。

他说leo啊,你需要的是敏捷开发,不是scrum.

我说有区别吗敏捷开发的时候不一般都用scrum吗?

他说如果让你做一辆轿车你怎么做啊?用敏捷开发。

我说好办,

1.生产两个车轱辘上面加个板,弄个滑板。

2.轮子弄大点,然后滑板整个形自行车出来了。

3.连个自行车前后加两根棍上边再加一个板牛车出来了。

4.加个罩子,马车出来了。

5.搞个发动机,汽车出来了。

他说你思路挺清晰的,你看你这个过程中提到用什么工具做这些车了吗?

没有吧scrum是实现方式和工具敏捷开发是思路。

同样最后一句话也送给所有想转行项目管理的前端人员,项目管理的成功是基于技术底蕴的对项目合理的管控,

而不是因为你用了什么工具。

鹦鹉会说话不代表它有思想。

具体怎么做呢?睡觉,下回说。

你可能感兴趣的:(已经翘辫子的敏捷开发与瞎扯淡的30岁前端转管理)