研发团队管理

刚接手了一个团队,接到通知需要在公司领导面前说一下自己的研发和管理思路,总结了这几年的思想,写了如下的记录;已经在公司领导前讲过了,得到了还不错的反馈。

1 做软件

原则:

模块原则:使用简洁的接口拼合简单的部件;

清晰原则:清晰胜于技巧;

简洁原则:设计要简洁,复杂度能低则低;

透明性原则:设计要可见,以便审查和调试;

健壮原则:健壮源于透明和简洁;

(摘自《The art of UNIX programming》 第1章哲学)

单一职责原则:单一职责:就是一个对象只做一件事。

OCP :开闭原则:对修改关闭;对扩展开放。

(面向对象5大原则)

注:这是被证明了的有效原则,是一个很好的研发参考,软件源于西方,很多我们的困惑外国人早就体验过,也找到了不错的解决办法,我们要做的就是多去看看经典的书籍,发现为我们所用的思想。 这些不是编出来的,是实践证明有效的。

重视设计

生命周期:产品设计,软件设计,软件实现,测试发布,维护,(后续开发,后续测试,后续维护)

重视设计:设计和用来表述设计的文档:

研发的设计文档包括什么?

1 设计方案:你打算怎么做来实现这个需求?

2 详细设计:具体描述实现之后软件的样子

(例如界面由几部分组成?每一部分的细节是什么?软件要实现的功能点有那些?)

:设计结束了吗?很多设计到这里结束了,开始编码,因为软件要实现要求已经说的很明白了。但是会存在一个问题,把这个文档交给不同经验的人去实现,软件的质量会差距很大,经验比较丰富的工程师质量会不错,bug会少,便于维护和后续开发;经验相对少的工程师实现的软件质量会难于把握,bug数量,维护和后续开发都难于把握。所以需要把具体实现的设计也仔细考虑。

3 实现设计:在目前的系统里,

设计中包含了多少个功能点?

实现这个功能需要写多少个类?

这些类之间的关系和接口如何定义?

新功能与系统的接口如何定义?

每个实现类包含多少个方法?

这些类实现后运行的效果是什么样的?

哪些类实现了哪些功能点?(方法的注释)

(表达方式:UML 类图和时序图,或者能明确表达设计者意思的图)

注:实现设计里面需要考虑的问题是早晚都要去思考的问题,很多人习惯写程序时再思考,想到哪里写道哪里,既然早晚都要思考这些问题,晚思考还带来难于把握的未来,好的解决办法是:没想好,别动手写。

4 项目核心人员确认,工程师完全理解设计意图,设计类和结构满足要求,工程师开始编码。

一切思路设计完成,实现只是很简单的工作。

好处:

1 程序实现是可控的,交给经验丰富和相对不丰富的工程师实现,软件的质量差距很小,整个软件看起来像是一个经验丰富的人写的;

2 把难点细分为若干简单的部分,每个部分的设计难度降低,实现难度降低,bug出现几率也降低;出现问题可以迅速定位问题;

3 大大增强代码的可读性和可维护性(后续的工程师可以很快进入角色,而不是到处去问,和猜测这段代码是做什么的);

4 列出需要实现的功能列表(1 与需求和设计人员沟通方便 , 2 自测使用,3 绩效统计参考);

5 锻炼工程师抽象思维能力;

6 避免不清晰和复杂的程序结构,得到透明和简洁的程序;

实现设计谁来做?

根据个人能力会设计大小难度不同的模块来设计;SE和主管把关

谁来分解难点?

主管和SE,

注释和文档的作用:

软件的生命周期中时间最长的是维护周期,良好的文档和注释,更好的可读性和可维护性,软件的生命力在于别人去读和使用,很难懂的软件是缺乏生命力的软件,避免未来的重复工作。

文档的要求:

不必面面具到,要突出重点;

软件版本的交付:

响应变化,持续性的交付可以使用的软件版本,变瀑布式开发为敏捷开发;

(运气球游戏形象说明两种开发的特点)前边讲述的设计更贴近敏捷开发的设计思路;

如何添加新功能

OCP原则:对修改关闭;对扩展开放

为什么这么做?可以更好得隔离变化,自测和测试组测试都很方便;只测变化和与变化相关的地方即可;经过多轮测试的软件是好的软件,如果不加控制去修改和添加,造成整个软件安全系数降低,测试人员前期的工作就浪费了,增加了整体的工作量。

2 团队建设

管理的发展方向,更开放,更透明

主管的责任:

1:帮助大家顺利优质的完成工作;

2:优秀的团队思想得以执行;

3:提高团队成员的能力;

4:打造一个使团队成员的知识和能力得到最大的发挥的环境;

团队成员的责任:

对自己做的工作心理有底;就是在你心里对自己做的东西有清晰的认识,

心理有底是有什么:

就是有长时间的技术和心理积累下来的东西,用两个词可以概括:经验和信心,归纳为一个词:能力;

能力是如何积累的

每天的工作当中,在工作的同时你也在做另一件事:积累自己的能力;

为什么大家每天同样工作能力的增长却有差异?

因为每个人的工作的方法和态度有很大不同,方法和态度是能力是否增长很重要的因素;

什么方法是有效的方法:就软件开发角度:以上说过的就是被实践证明很有效的,比较合适的,可以增长能力的方法;

什么态度是很好的态度?

如何面对困难:

其实工作会经常遇到大大小小的困难,对待困难的态度就很重要,什么是正确的态度?

(Martin Flower的例子,面对一个很臃肿的系统,重新改写了之后变得高效和易扩展,而且还写了一本java的经典《重构》,成为很有名的大师级人物)

总结,把困难变成发展的机遇,让自己更强;

战胜困难带给人什么?

变的更强,强者的好处是什么?在生活上选择很多;困难是变强的机会;

坦诚的面对自己的错误

每个人都会犯错,不回避自己的错误,坦率的面对自己的错误是很好的态度;不再犯相同类型错误的人是很厉害的人;

关注点在事情上面

关注点在事情上面,多阐述自己对事情的看法,而不是对人的看法;我们会讨论什么是好什么是坏,而不是讨论谁好谁坏;

80/20效率法则

接到任务之后,先审视以下,找到重点的部分,先完成重点,不要胡子眉毛一把抓,从重要的事情开始做;

(推荐 重要紧急象限图)

保证每天大部分时间处理的是“重要 不紧急”的事情;

提倡的

1:不要抱怨;

2:多做事,不要怕犯错误,及时改正错误;

3:高效率,勤奋;

4:以简洁为美;

5:多去了解计算机的起源,发展和背后的文化;

6:要熟悉面向对象的思想;多去看看设计模式;

7:  空杯与海面心态;

8:持续的进步;

9:工作中发挥自己的优点;

10:沟通的时候抓住重点;

11:有困难找你的主管;

用什么考核员工的绩效

目标:团队成员重视自己的贡献;

1:有效的工作量(做了多少事,无效的工作主管有义务去纠正)

2:做了什么都会被记录(放在大家都可以查看的地方),工作量是排名很重要的依据;

3:经验不多,目前不能做太难的怎么办? 多解决简单的问题也能体现自己的工作能力,因为想要获得能力的质变,一定的量变积累是非常必要的。

(设计的时候就会估计工作量,真正开发完成会核对估计的工作量,这个工作量是代码的行数;)

个人在团队中的位置:

每个人在企业中会最终找到属于自己的位置, 位置和能力和贡献关系密切。

备注:

 

180/20效率法则:

20%的人占有80%的社会财富;(帕累托)

     “在因和果、努力和收获之间,普遍存在着不平衡关系。典型的情况是:80%的收获来自20%的努力;其他 80%的力气只带来20%的结果。”(里查德•科克)

目前中国是不到10%的占有80%的社会财富(文国庆);

2: 空杯与海面心态

一进公司就要忘记自己从那里来,名校只代表过去,不要念念不忘。进来就要从头学习,倒完水,成为空杯,以海绵的心态虚心学习。公司每周开周会,学习相互经验,从错误中吸取教训。用自己的错误学习是一种方式,代价很大,更要用别人的错误学习。(BENQ曾文琪)
 
3:运气球游戏
国外公司(ThoughtWorks)在让员工体会 瀑布式开发和敏捷开发不同时的一个游戏;从屋子的一端将气球搬运到另一端,每一组有两个人在一端负责装运,两个人另一端负责撑袋子,一个人负责搬运,哪一组能在最短的时间内,
将最多的气球从一个口袋中运到另一侧的口袋中就算胜利,如果过程中任何气球掉在路途中,则不可拾取。第一次的规则是只能运一次,整个过程给人的感觉就是搬运的人花了很多的时间,承担了过多的责任,而其他的四名队员起不到任何的作用,只能边喊边焦心的等待。
第二次的规则几乎与第一次一样,但搬运人可以多次的运输。
 结果第二次,团队不但出色的运输了所有的气球,而且还比第一次所花的时间更少。
 第一次运输就好比传统的瀑布式开发,开发人员承担了许多的压力,缺少沟通和其他人员必要的帮助,
闭门造车造出来的东西,往往并不是客户心目中想要的东西;
 而第二次运输就好比多次迭代的开发过程,开发人员得到更多的信息回馈以及业务分析员和测试人员的帮助,
因此能够开发出更好的软件产品。      

4 马丁.福勒(Martin Flower

ThoughtWorks首席科学家的马丁-福勒先生是当今世界软件开发领域最具影响力的五位大师之一。敏捷软件开发方法的早期开拓者;知名的作家、软件顾问兼演讲大师,他凭借16年丰富的经验帮助各企业将前沿技术应用于关键业务信息系统中;他大力倡导业内最先进的软件开发技术,如统一建模语言UML(Unified Modeling Language)、极限编程XP(Extreme Programming)、重构 (Refactoring) 与分析模式 (Analysis Patterns) 等

5:埃里克雷蒙德(Eric Raymond

    自由软件运动的倡导者和理论家

2004年时,出版了《Unix 编程艺术》(The Art Of Unix Programming),本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,包括Unix设计者Ken Thompson在内的多位领域专家也为本书贡献了宝贵的内容 。

参考资料:

《敏捷软件开发 原则模式和实践》 Robert C.Martin 2003

《Unix编程艺术》 Eric S. Raymond 2006

《帕累托80/20效率法则》

时间: 2024-10-03 04:40:05

研发团队管理的相关文章

转:几个软件研发团队管理的小问题

几个软件研发团队管理的小问题 最近在与一位总经理交流的时候,他谈到他们公司的软件研发管理,说:"我们公司最大的问题是项目不能按时完成,总要一拖再拖."他问我有什么办法能改变这个境况.从这样一个问题开始,在随后的交谈中,又引出他一连串在软件研发管理中的遇到的问题,包括: . 现有代码质量不高,新来的开发人员接手时宁愿重写,也不愿意看别人留下的"烂"代码,怎么办? . 重构会造成回退,怎样避免? . 有些开发人员水平相对不高,如何保证他们的代码质量? . 软件研发到底需

几个软件研发团队管理的小问题

最近在与一位总经理交流的时候,他谈到他们公司的软件研发管理,说:"我们公司最大的问题是项目不能按时完成,总要一拖再拖."他问我有什么办法能改变这个境况.从这样一个问题开始,在随后的交谈中,又引出他一连串在软件研发管理中的遇到的问题,包括: . 现有代码质量不高,新来的开发人员接手时宁愿重写,也不愿意看别人留下的"烂"代码,怎么办? . 重构会造成回退,怎样避免? . 有些开发人员水平相对不高,如何保证他们的代码质量? . 软件研发到底需不需要文档? . 要求提交代码

IT技术团队管理之成长

------------------------------------------------------------------ 今天先到这儿,希望对您技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 领导人怎样带领好团队构建创业公司突击小团队国际化环境下系统架构演化微服务架构设计视频直播平台的系统架构演化微服务与Docker介绍Docker与CI持续集成/CD互联网电商购物车架构演变案例互联网业务场景下消息队列架构

软件开发团队管理与项目经理

软件开发团队管理与项目经理 今天先到这儿,希望对技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 领导人怎样带领好团队构建创业公司突击小团队国际化环境下系统架构演化微服务架构设计视频直播平台的系统架构演化微服务与Docker介绍Docker与CI持续集成/CD互联网电商购物车架构演变案例互联网业务场景下消息队列架构互联网高效研发团队管理演进之一消息系统架构设计演进互联网电商搜索架构演化之一企业信息化与软件工程的迷思企业项

产品团队管理 - 统一研发环境,提效研发过程

(我本来计划将研发环境和管理流程分开来讲的,最后还是放在一起便于理解.) 软件研发最重要的场景就是在有限的时间和资源下把需求落地为产品/项目,也就是研发和项目管理,毫无疑问,这个阶段的主角是开发人员. 是不是应该多思考下怎么面向开发人员来优化整个研发过程和项目管理流程? 本文将介绍如何通过优化开发环境搭建.代码管理来提高研发过程中开发人员效率,并通过持续集成和交付让开发中的问题更早暴露,通过合理的测试反馈工具让开发人员更早定位和解决问题. 说到团队的研发和项目管理的实践,就逃不开先要说一下笔者所

合理的用户业务研发团队搭配

1.前言 用户业务指的就是面向用户的产品展示及用户操作入口,简单点说就是APP,微信,H5活动页等一系列前端展现入口的集合.用户是多变的,用户是神秘的,没有任何产品能从一开始就把握住用户的需求,任何好的产品和功能都是不断试错,不断调整出来的,所以我们需要一个能快速反应的用户业务开发团队,新需求快速上线,已有业务快速调整,响应越快才越有可能在竞争中走到别人前面,产品才有胜出的可能. 用户业务业务研发团队可以称为广义上的前端团队. 2.团队意义 用户业务研发团队(后文如无特殊说明,用前端团队简称),

微软中国的相关研发团队 交流平台

1. 微软中国研发集团服务器与开发工具事业部: http://blogs.msdn.com/stbcblog 作为微软中国研发集团的核心研发部门之一,服务器与开发工具事业部在上海和北京与总部及世界各地产品研发机构紧密配合,致力于为微软用户提供安全与访问.管理与服务.互连系统.数据平台.Windows服务器解决方案.商业在网服务和开发工具等核心产品与技术的研发和孵化. 服务器与开发工具事业部还积极与本土合作伙伴展开战略合作,分享研发管理和产品开发的经验,将创新成果带给广大用户.此外,事业部还在中国

团队管理:新业务团队如何结合绩效来度量开发目标

之前有人给我blog留言问过绩效的事情,本篇主要与大家分享一下如何在新业务项目组中结合绩效来度量目标的一些思考,我们先从对绩效.产品开发的认识开始,最后会列出绩效细则.本篇更多从量化角度去看,不考虑绩效分数的激励制度. 敏捷个人和敏捷团队 就像我在使用Scrum来敏捷自己所说的,在我们要求团队以人为本进行管理时,我们不能单方面要求团队把员工当人看,更重要的是员工要把自己当敏捷个人来看,做到在最基本的主动.自律的完成工作基础之上再去发挥你的卓越.我也一直都是这么要求自己的,并且也在把这些想法积极地

产品研发管理(三):产品研发过程管理概述

概述 这是产品研发管理系列文章的第三篇:产品研发过程管理概述. 生产型企业通过企业研发生产过程,制造出产品,销售给客户,为其提供价值,从而赚取合理利润.软件企业作为生产型企业的一种,它区别于其他生产型企业的特点是它的产品是无形的. 除了传统的生产并将软件卖给客户的软件企业以外,现在出现很多运营型企业.比如:携程.淘宝等.他们不直接将软件卖给客户,而是使用软件为用户提供服务.这种企业里一般还是分为研发部门和运营部门.这种企业研发的产品的客户是自己的另外一个部门:运营部门. 研发生产过程的管理系统是