###(法)平衡出最优的team生产力组合 IT项目品质系统控制技巧


以此文分享于曾经被不良项目管理风格扎针难耐,苦逼得“曾经拥有健康”程序猿兄弟们。 最近辞职在家,无意之酝酿,多有开发感触,故想做道法术器四文《(道)良性成瘾开发习惯养成策略》《(法)平衡出最优的team生产力组合》《(术)产品、交互设计理念断想》《(器)构建自由通行的IOS开发者地图》,此为其一,法。 这篇文章的题目“平衡出最优的team生产力组合”,说白了其实就是“项目管理”。如果要掌握一门“软性能力”的技能,像“项目管理”。由于其不具有良好的实践机会去操作then反馈学习。 所以我建议的策略是战隼warfalcon的原话:“学习或研究一门新的知识时,最好的办法就是去学习这一领域名家的方法或系统,然后根据自己的情况进行调整,形成自己的系统,再不断实践并改进。” 这句话涵盖了几个点,根据我的领会方式,我把它分成:

  1. step1==>主题阅读,针对项目管理类书籍;
  2. step2==>系统思考,概括项目管理名家的一些思想;
  3. step3==>粗略构建自己的系统:书籍抽要+实践领会;
  4. step4==>试验性&碰撞出自己风格的系统;

首先,针对step1。“主题阅读”是个精辟的词汇,它明确了几点,@阅读种类、@阅读目标、@时间控制。那就让我们在一段时间内GTD掉step1吧。下图是我个人进行的主题阅读方式,其中的阅读循环中我比较推崇有两个关键点,@带着疑问去索引到目标页数,@理解不清的东西别舍不得放弃。

1

然后针对step2。“系统思考”同样也是个精辟的词汇,它也明确了几点,@思考的逻辑是一体的,@发掘出内在逻辑的联系和关系。惭愧,个人的积累程度还达不到系统思考地输出。下图是只是我的第一印象思考,也可抛砖引玉一起思考。

2

继而针对step3。“粗略构建自己的系统”,简单的就是,粗略系统=书籍抽要+实践领会;经历前两个step,还有加上你的一些经验,你大致印象认为项目管理需要那几个要素。

3

最后针对step4。“碰撞出自己的雏形系统”。而这套风格系统的目标就是本篇的题目—>“平衡出最优的team生产力组合”。实质上,项目管理这门科目建立的目标也是为了,平衡出最优的team生产力组合。 而下面就是我个人马虎经历了以上几个step加上得到恩师simon和战隼文章多次启发后,弯弯曲曲碰撞出来的我的雏形项目管理风格框架。

4

下面,我就简要点破每一项中个人颇有领悟之处: ####1、leader对架构设计思想深刻把握;

  • ==>首重MVC模式;
  • ==>了然“OOP的6个设计原则,23个经典设计模式”;

“跟对人,做对事”,这点是我一直以来很坚守的一个原则。对于项目中也同样是,如果项目leader很糟糕,而且你也尽力在你能够影响的范围内积极做出建议了,但是leader依然很糟糕。那么个人建议不管薪酬有多高,你的发展瓶颈是相当明显而且很难去突破的。那么再去找可以跟随的人吧。同时你也可以注重一下这方面的提升,他日也让人家来跟你又何乐不为。 “MVC”是一个被说烂了N回的词。而或许留意其意义并且加以实践到项目中的人就不多。就像多数IOS开发者都有看过斯坦福IOS课程2011版,其中有一张介绍MVC的PPT,里面有一张“MVC示意图”,而留意到这张示意图并且弄清楚这张示意图表明内容的人或许不多。

5

解析上面MVC这张图,可以抓住一个思路“两个圆圈的相互联系的管道(pipe)各是什么?各表示什么?”

  • 抓住C<–>V之间的pipe:V指向C有三条黄线,分别是action,delegate,datasource,可以理解为从“视图层V”输入一些事件,需要在“控制器C”进行响应;而C指向V有一条绿线outlet,可以理解为“控制器C”响应后通过outlet变量输出处理结果到“视图层V”上;
  • 抓住C<–>M之间的pipe:C到M有一条绿线,在这里绿线表示objc-c里面的[消息 传递],可能是方法调用,或者属性调用;而M没有直接到C的pipe,这是为什么呢?再仔细观察原来M有一根天线,备注文字是“Notifacation&KVO”,只是说明M中的数据变动通过通知的机制以KVO(基于键值的观察者模式)来进行捕获。

对于“OOP的6个设计原则,23个经典设计模式”,下面列图出来。至于吃透它的方法,大家估计各有千秋,理解记忆的几个核心个人认为还是几个关键词句,“艾宾浩斯记忆曲线”、“勤于基础动作练习”、“善于利用效率工具”(善假于物也);

6

7

####2、teamer对项目代码框架、设计模式了然把握:

  • ==>对每个模块,需声明用到的设计模式或构建思路;
  • ==>对每一模块,需同时生成有UML图; 在良好leader的前提下,组员会得到明确清晰地任务分派,以及建议或者讨论后的模块设计方法。那么对于个体组员来而言他需要做三个步骤工作: 草稿出模块的UML且声明构建思路==>编码操作出模块==>循环滚轮直到测试出稳定可用;

8

####3、规则先行,约定大于技术:

  • ==>项目进度表、进度日志;
  • ==>界面规则风格明确文档;
  • ==>代码风格文档;
  • ==>代码编写结构会议;

在项目管理里面,讲究的是team生产力,而不是个人英雄式生产力,所以有一等式:“约定规范”]] > “技术操作”。那我们就认可了“team规则”的重要性,那么团队的leader就必须生成制定出这相关的规范。 这些文档估计每家公司都会有的,只不过需要反思是否具有易用性和高效性。这里着重“代码编写结构会议”,因为这个必须有。这个会议的过程“可以抹清很多噪音和雾气”。我所比喻的噪音和雾气其实是,team成员经常会有的一种迷糊感,他不明白为什么这么做,从而他有很多意见或建议。而这些噪音和雾气如果太重就很不利于项目的健康推进了。

####4、项目开发日志:

  • ==>事务、时间日志线(可用于为“IT工作2.0”建立保障机制);

个人反思了N回。才发掘出这个开发日志方式,这也是我的项目管理认识里面最核心的一种思想和工具。这个“事务、时间日志线”,良好操作的前提必须是team成员都有已经良好时间管理意识。然后每天以下面的日志线风格进行事务管理、时间管理。

9

这个若是能够融入团队的文化基因。那么就太强大了,因为日志线追踪着项目中每一个微型的任务事务,同时确立了一条推进项目的高效轨道。我未来的假想是,若我成立一家公司,我将用这一机制来进行试验“IT工作2.0”是否可行。

####5、短时长、高频率“微会议”;

  • ==>严谨15min时间控制,善控制“讨论主题”、“讨论时间”、“讨论记录”;
  • ==>leader需“善于击破”木桶长板组员的随意,也需“善于引导”木桶短板组员实现自我的突破;

这也是一种高效率的机制建立。leader需要控制好节奏,目标是: 1、把脉各处工作推进情况; 2、同时疏通耦合环节; 这样,确保独立模块能够按进度稳妥推进,也确保多模块耦合环节不新冒出问题,对未来造成不可控制影响。

####6、MBA式对待team中“人”的问题;

  • ==>对事可“有则升堂,无则退朝”,对人需“有事没事还得和他有事”;
  • ==>沟通技巧和话术的方式;

人性化,氛围宽松,几乎是每一家公司都挂在嘴边的。但并不是每家都理解到、做到。总结出这个点,其实也是得到前公司恩师simon的多次启示下,在此甚感谢simon。项目团队,虽然是四面八方凑在一块一起合伙挣口饭吃。不过大家都是人,与人做事就得把握个良好的交流印象,这就是对人需“有事没事还得和他有事”; 而沟通技巧,下面我举几个例子,大伙可以举一反三: “我们一起考虑如何解决这个问题,明早上花五分钟交流一下,你看行吗?”; “你做的XX怎么样了?有什么地方需要我帮忙吗?⋯⋯如果一切顺利可以在后天早上完成交给我吧。”; 就是这种形式的沟通方式。如果需要更深层的把握估计就是MBA们该干的了。在此我也想到了一本书,也是在战隼warflcon那里发掘到的,叫《说话就是生产力》。这本书相当棒,我晚上发现的,第二天早上立马买了回来 。

####7、项目高效展开的几个保证;

  • ==>资料获取,公司书籍库(纸质or电子版);
  • ==>资料获取,公司模块库(封装好的.a文件);
  • ==>资料获取,公司通畅网络;
  • ==>leader效率工具,项目协作平台的使用;
  • ==>teamer效率工具,evernote做“事务时间日志”, mindnode做“逻辑分析辅助”, “UML tool”做uml图;

这点很关键。也是必须要基本保证的东西。说白了程序员也是个输入输出工具,你得给他输入资料他才能够输出代码解决方案。我最近就直接拒绝了一家给了我高薪诱惑,但是这点却没有保证好的公司,他们那里的程序员得到的“输入”相当有限,以致输出了一些让人匪夷所思的代码解决方案。以至于我极度怀疑这公司的实力,担心会不会月底拖欠我工资。

以上七点就是我为了达到“平衡出最优的team生产力组合”,所进行思考出的“engels项目管理风格系统雏形”。在“大家”前就献丑了,只求分享此文于曾经被不良项目管理风格扎针难耐,苦逼得“曾经拥有健康”程序猿兄弟们。

##构建自由通行的IOS开发者地图 IOS开发人员知识技能归档固化管理

最近辞职在家,无意之酝酿,多有开发感触,故想做道法术器四文《(道)良性成瘾开发习惯养成策略》《(法)平衡出最优的team生产力组合》《(术)产品、交互设计理念断想》《(器)构建自由通行的IOS开发者地图》,此为其一,器。

作为一只刚出道的程序猿,我常常受阻在新项目启动开发的初期。主要原因在于,不了解需要用到哪种技术解决,如何用其解决。问题的实质原因在于自己对“整体的技术脉络图”认识不清晰、不全面。

如果幸运,是在一个有好心大牛的团队里面,或许这个大牛就会用他大脑中长期潜移默化生成地“开发者技术地图”来点拨你,并且恰到好处的指点对位,这样就给程序猿有胜读十年书的一翻超然感受。

但是多数时候我们并不容易遇到这么好的引路人。既然如此,换一种思路。究其实质,我们既然可以抓住 “开发者地图”这个关键字, 为何不运用程序猿相对强大的自主意识去驱动这张“地图”快速有效地建立起来呢。

一般情况下,进行开发工作个三年五载的这张“地图”是会意想不到地在大脑中扎根存在的,也就是现在企业很看中的硬性技能经验的一种表现。而现在我讨论的就不是一般情况下缓慢的经验积累方式,我讨论的是运用高效学习探索思维,把“传统非量化的经验”转化为“开发者地图”这一实体,然后再拓展巩固这张可以被量化的“开发者地图”。我暂且称这一转化为“隐形经验转化为显性知识组织形式”。

如果有人疑惑,我为何要做这一番功夫。那么估计你还没有下意识到这是一种很高明的提升能力,提升经验的手段,可以告诉你的就是,在实践中可以有意识地通过建立、拓展、巩固、回温地方式运用这张“开发者地图”,它可以非常有效地提升你在同样时间量的经验积累程度。简单比喻,就是可以让你一年的经验值比得过人家三年的经验值。这是很可怕的比喻,但这是毫不夸张的说法。

针对不同的技术方向,“开发者地图”也分种类分层次,但是其“根地图”都必须是一样的,都基于“自然科学,工科科学的根地图”。所以“开发者地图”也可以做一个层次包含关系,由于我在此介绍“IOS开发者地图”,所以我下面绘制出“IOS开发者地图”如何从“根地图”派生出来。 “自然科学,工科科学根地图”==>“软件工程系统地图”==>“IOS开发者地图”

rootMap

下面,进入关键的操作流程,如何进行使用这张“IOS开发者地图”才能够让自己受用。

一言以蔽之,在实践中有规划地以建立、拓展、巩固、回温地方式运用这张“IOS开发者地图”。

首先,针对“建立”。如果现在让你在25分钟内快速建立一张“IOS开发者地图”,你将会采取哪种途径和方法来进行收集、整理、组织、建立?这点你可稍后去进行一个主题思考。在这里我告诉你我的方法:

  1. 10分钟,收集材料==> 最佳途径是询问IOS前辈,考虑出具有高价值含量的提问,如“XX前辈,能不能抽5分钟给我介绍一下IOS开发所需要的一些基础东西?和相关开发资源获取的方法?比如开发环境,开发语言,基础开发书籍,还有有哪些较好的论坛资源等等这些”。如果身边没有这种前辈,那么只有在搜索引擎中发掘出回答你上一个问题所需要的答案。

  2. 10分钟,整理、组织材料==>整理组织材料其实也是一门学问,所以大学才有了图书馆管理员的专业。有兴趣可以去看看最专业的材料整理思路应该是怎么样的。在这里我就用普通的整理方式做为例举,首先将一堆材料进行分类,同时保证每一类中的都有优质材料,否则迅速返回再收集环节。材料种类可分为:

  • 介绍开发工具Xcode的;
  • 介绍Obj-C语言的;
  • 介绍SDK(cocoa)的;
  • 介绍开发常用技巧的;
  • 介绍高级编程开发的(数据库编程,网络编程,多媒体编程);
  1. 5分钟,建立Developer Map==>既然我们称之为“IOS开发者地图”,那么自然这张地图必须是可视的。而采用哪种数据信息可视形式呢?采用哪种可视形式我们必须要考虑到,须方便结构调整,须方便增删。手绘方式不便频繁更新,排除。viso 或者 omnigraffle的结构图形排列方式太过费时,排除。我要推荐的就是”思维导图MindeNode“,最轻松做到”方便结构调整,方便增删节点“。 下图就是粗糙建立好的”IOS开发者地图“;

rawMap

然后,针对”拓展“。拓展应该在什么时候进行的呢。一般情况下,是用你的闲余时间来为你的这张”IOS开发者地图“进行添枝加叶。也有可能是在项目紧张进行过程中迅速的进行更新。为map添枝加叶,具体思路如何因人而异。我比较推荐的做法是,每天抽15分钟时间抓取博客园、CSDN或者cocoachina上关于IOS的技术文章,或者专门抓取某位IOS开发牛人的博客。相信我你只需要坚持十来次,那么你的”IOS开发者地图“肯定达到中等茂盛树的水平。到了这个程度,或许你已经有较强的自我感觉良好了。到了这个时候,你得有个意识你得回头再深究一下,每一个第二层节点结构位置是否得当(根节点”IOS开发者地图“为第一层节点),因为只有充分理清这些开发知识的相互关系和内在联系才能够做到”了然“。 下图是经过我优化结构后的”IOS开发者地图“;

optionMap

再然后,针对”巩固“。巩固应该在什么时候进行呢。通常情况下,你在项目中需要用到什么技术可以到这张”IOS开发者地图“去查询。不过既然我们的目标是要将这张map融入我们的大脑经验细胞中去,以达到经验积累速度优于他人的速度。那么我们就必须进行巩固。至于何时进行巩固,就看个人习惯了。当然我所推崇的方式就需要满足一些客观规律,比如”艾宾浩斯记忆曲线“,”碎片化的记忆纸片“等等。辅助的工具可以用移动app,mindnode或者thinkspace,或者截成图片后存于evernote。 下图是我正在使用的一种良性巩固流程循环,或许大家可以借鉴;

refrenceMap

最后,针对“回温”。其实这个回温也可以称之为进行多次“巩固”达到的状态。但是关键在这里“回温”必须要有一个要素“升华”,巩固的目标是识记,回温的目标是升华理解。对于每一次的回温,应该是在一种哲学自然式思维状态下面。实际的表现做法可以这么做,对于“回温”的每一个技术机制,都能够用抽象的语言来概括出其实质思想。 下图举例出我如何来以抽象的思考来升华对某一技术机制;

demoMap

写到这里,估计不少朋友都有所领会这”IOS开发者地图“的妙处了。这实质是将”隐性的经验知识“转化为”显性的结构知识树“,然后主动地去操作这张结构树,在边把这张developer map变得茂盛的同时,不断地进行反馈到大脑的经验细胞,从而以更强有力的途径提升了存在大脑中不好量化的经验积累。

###相关下载

原版思维导图 http://www.dwz.cn/filemindnode 导出的PDF http://www.dwz.cn/filepdf