• 【华磊原创】论:技术团队的创造力建设


    论:技术团队的创造力建设

     

    目 录

    1    综述    2

    2    创造力的三个要素    6

    3    成功的保障-坚持    7

    4    团队创造力    7

    5    "因术入道、集腋成裘、大道无术"——软件领域的专业能力的培养    8

    6    《资治通鉴》创造性思维的培养    8

    7    创造力的土壤-动机    9

    8    创造力的源泉-目标    10

     

     

    1. 综述

    行业现状

        接触软件开发领域一来,一直关注开源社区的动向,并曾经加入过几个开源项目的团队中;在这几年,有感于国内软件行业创造能力之低迷,与国外的软件行业的整体素质的差距越来越大;故一直在反思,为何我们的软件业会是这样。

        现象一:

            最近几个年度的各大媒介筹划的软件评比中,其中十大大部分被工具类软件、娱乐类软件占领,尤其是杀毒软件、播放软件、工具类软件为主;绝对的缺乏有创意的、自主创新的软件。

        

        现象二:

            国外各类开源社区如火如荼,其中的项目千奇百怪,各具风采;而这些项目中难得一见中国本土的软件项目。

            

        现象三:

            中文网上不乏各类技术学习、交流的信息,但大部分停留在框架的使用、问题的解决上,再或是一些枪手受雇于大公司的教学类软文,针对技术本身和创造性的讨论都比较少。

    什么是创造力

        在我们这个行业中,何谓创造力?我一直在反思这个问题,不能明确的给其一个合乎环境和时代的定义,改善更是无从谈起。

        从codeplex开源社区、codeproject谈起,在这个社区里摸爬滚打了几年,最近略有感悟,我仔细研读过好几个较好的开源项目,如memcache、ajaxpro、StringTemplate.Net、Jquery相关等,站在我自己的角度,具有如下心得

        开发能力

            就实际的code能力而言,就笔者个人水平在这个社区尚数中上水平,其中如ajaxpro、jquery等,其中的关键算法很多都掌握许久,如对应的项目我是其中一员,很多地方的实现可能更好。实际上这也反映了中国程序员在code能力上还是首屈一指的。

        设计能力

            这一块而言,敢于将自己的项目开源的人都具备很强的设计能力,大部分的项目设计水准尚可,我把自己的几个项目与其进行讨论,也获得了一些比较认可的评价。

        动力

            毋庸置疑,开源社区的程序员都具有足够的激情和动力,做出最伟大的产品无疑是大多数程序员的追求,同时,看到自己的产品被无数人下载使用、参与、点评都是一种自我价值提升的表现,哪怕这种价值提升并没有带来更多的回报。

        创新

            何谓创新,在技术领域中,从头造轮子是为创新,但将若干造好的轮子组装成一种新的产品也是创新,这一块,我看到了国外程序员的强烈的创新渴望,在各种开源项目中都能看到很多天马行空的创意(jquery的hash算法),也有很多项目中看到了重造轮子的事迹(最显著的莫过于mono,直接自行实现了一整套基于qt的windows api)。同时也看到了无数失败的创新。

        持续性

            坚持,直接决定着项目的成功还是失败,我见过一个开源项目,本身没什么创意,无非是针对网络操作进行封装,提供一套基于异步的网络操作的工具包(包括ftp mail ssl等)其技术没什么高级的,但这个团队持续性非常之强,笔者在4年前研究mail的操作时接触了该项目,直至今日,4年过去了。这个项目还在持续、还在不断的完善,至今,整个项目代码行超过30w,几乎涵盖了所有的网络应用的操作,这个项目历经数年,无数次周而复始的变化,其中有我已开始就觉得有问题的,也有我很看好的;我最佩服的反而是这个团队的毅力和这种坚持;而最让我诧异的是,这个项目的负责人是个瑞士的老头(真是老头),主要开发人员是个不足20的年轻人(如今23-25吧);我思索很久,这样一个项目,没什么商业动机也算不上成功,就算成功也不会带来多少知名度;而支持他们坚持至今的动力到底是什么。

    众所周知,很多好的软件、框架、技术都是来源于开源社区,换句话而言,开源社区的的创造力产出比例是很高的,从而对比开源社区的一些特征来分析我们行业的创造力的定义和模型。

    根据如上结论,得出如下创造力的模型

    1. 创造力的三个要素

          创造力不是一种心境,创造力是开发和表达用来解决问题、满足需要的新颖创建的过程。由此可见,与其说创造力是一种禀赋,倒不如说它是产品创新的一种目标导向过程。一旦目标明确,则如何采用更合适的导向方法来激发个体的创造力,则要分析产生创造力的基础来分析。

          综上述,我们可以认为创造力由如下三个关键要素产生关键作用,而激发个体来自于团队的创造力,则也是要在这三个要素上狠下功夫:

          专业才能(软件开发能力)

              软件行业,具备一定的专业素养才可能向更高的领域进发,根据开源社区的特征,笔者将软件行业的个体层次做如下划分:

              编码级

                  这种是国内大部分程序员的层级,平时工作以例行开发工作为主,总是陷在各种各样的问题、bug中,不会有过多的思考和总结能力,实际上,在他们脑海看到的都是一行行的代码和各种各样学也学不完的技术、框架。。

              应用级

                  指面向解决具体应用的能力层次,在这个层次中,主要需要具备应用级的解决能力和分析能力,一个小型系统的设计开发,大型系统的设计开发均属此类。主要特征为可以从应用层面考虑问题,清楚所有的技术都是为应用服务的(应用才是一切的核心)。

              框架级

                  指在能解决应用的基础上进一步为了提高效率、质量、可维护性而进行的框架性建设,这个层级中会将应用中碰到的各类问题进行抽象,产生新的框架产品。

              架构级

                  架构本身也是为应用服务的,但在这个层级,关注的是选用合适的框架、技术等来实现应用(架构设计),同时,在这个层级也会产生无数框架级的需求。

              算法级

                  该层级是相对独立的,算法本身是跟具体应用(行业)相关,新的算法理论可能针对应用是革命性的,这个层级中的人物均是行业的绝顶人物。

          创造性思维(技术)

              我们行业是很有特点的一个行业,创新思维一般会由三个途径产生:

              借助别人的肩膀

                  具有相当的技术深度,经常学习了解参考整个技术领域动向、新产品、新技术,并在技术的学习上无拘无束(管他java还是c++);通过大量的学习(参考)积累了足够的视野和知识,在针对具体应用时善于组织总结,最终借助了别人大量的成熟经验进行有效组织、选择,最终产生了一套新的创造性的产品/技术,如流行的Ajax既是此例。

              特定行业的专业知识/资源

                  足够的领域知识,结合领域和软件知识设计了新的产品/技术,如最早做地图的google map(图形学和ajax)、支付宝、jquery(数学知识)等。

              突发奇想

                  这种。。。只有天才才会有,笔者相信,大部分人都不是。

          动机

                专业才能和创新思维是创造力的绝对基础,但动机才是产生创造力的源泉,比如,一个拥有足够水源的人虽然他手头有工具和技术但他绝对不会去打口水井;一定要他感觉到水源的匮乏才会努力去打井,而哪怕他不具备足够的工具和技术;当然,假设他永远不具备工具和技术,可以肯定他永远也没法打出一口水井来。

    1. 成功的保障-坚持

      结合上面的例子,假设这位口渴的人具备工具、技术,但不肯坚持不懈的进行打井工作,那样也是没法达成目标的。

      坚持在整个业界有着无数成功的典型案例:

      面对wintel不屈不挠的苹果

      十年磨一剑的暴雪

          2000年大量关服的腾讯(笔者当年去腾讯面试过。知道一些内情)

          专心做idc的万网

      也有着失败的典型:

          提出网络就是计算机的-sun

          曾经的浏览器大鳄-网景

    2. 团队创造力

      毋庸置疑,团队的创造力来源于合理的目标导向过程;激发各个个体的创造力进行有效整合,最终团队的目标得以达成,个体的价值得以体现;

      尽管创造力经常是个体行为,但仍有大量革新是创造性团队的产物。贝尔实验室的科学家开发的晶体管只是不胜枚举的众多例子之一。爱迪生和伊斯曼实现的许多技术突破,同样是这两位卓越的发明家与众多为他们工作的技师和工程师们共同成就的。团队可以实现比单打独斗的个体更大的创造性成果,原因在于集体可以带来更强的实力、更高的见解和更多的能量。但是要想获得这种更高的成果,团队必须在思维方式和技术方法上进行正确组合。这种"正确"组合大多数情况下意味着在思维模式和技术方法上的差异性。差异性具有以下几大优点:

      ·个体的差异会产生摩擦,这种摩擦能擦出新点子的火花。

      ·观点和视角的差异可以预防群体思维 (groupthink)的出现。群体思维是指人们基于社会化原因(social reasons)而非认识原因趋同于同一种观点。

      ·观点和技术上的差异,提高了产生好创意的可能性。由此可见,管理者必须认真考虑一个团队如何选配人员以及团队内部如何沟通。

      下表描述了许多似乎矛盾的特性,它们都是一个团队想提高创造力所不可或缺的。

    初学者思维

    团队既需要新鲜的、没有成见的视角又需要专业才能。吸收一个非专业人士对于这种视角平衡经常很有效。

    经验

    自由度

    你的团队必须在经营真正需要的范围内工作,并且符合公司长远战略。但同时也需要给他们一定的自由度,主要是在决定怎样实现战略和满足经营需要的途径上。

    纪律

    "票友"心态

    创造力在游戏心态下发挥充分,但是经营要求高度的职业化。因此,要为团队成员"游戏"提供一定时间和空间,但头脑必须清楚什么时间什么场合是适当的。

    职业性

    即兴随意

    对项目进行精心规划,但记住项目并不总是按计划的。鼓励团队成员们将意外事件转化成机遇。计划要有弹性,留有空间吸收新创意或即兴创意。

    计划性

    结合到软件行业,创造力是一个团队绩效的目标,但也是一个团队建设的过程,大部分时候,相比如何选择合适的成员组成一个具有创造力的团队,"如何激发团队隔离的创造力"、"如何培养和建设一个具有创造力的团队"。我们不能期望所有的团队都满足完美状态,大多数时间,管理者更多的是要考虑建设和管理的问题。

    1. "因术入道、集腋成裘、大道无术"——软件领域的专业能力的培养

      笔者会单开文章阐述和分享在专业能力建设上的心得和体会。

    2. 《资治通鉴》创造性思维的培养

      中国历代皇帝偏爱修史,如史记、资治通鉴等;上述针对创新思维的分析,创新思维主要来源于充足的经验、知识储备并结合应用,唐太宗李世民说"以史为镜,可以知兴替",在治国的过程中,结合前人成功、失败的经验并善加利用,最后产出了合适的办法来治理国家,如此,合理的达到目标并开创了一种新的成功模式;这个过程也是一个创造力的过程。

      提升创造性思维的主要方法(细节略):

      1. 学习
      2. 互动交流
      3. 换位思考和抉择
      4. 反向工程
      5. 模拟演练
    3. 创造力的土壤-动机

      一般而言,个体的需求是触发动机的最直接的因素,西方管理学针对个体需求分解出如下几个关键阶段/要素,笔者结合软件行业来分析这几个要素在动力提升中的关键作用。

      生存需求

          暂略

          自我实现

              暂略

          社会认同

              暂略

          笔者再补充一个要素:时间压力

              时间是每一位创造性人才和创造性团队实现任何有价值成果所必须的条件。但是他们到底需要多少时间呢?给他们多少时间才合适呢?这些都是管理者在试图以有限资源实现特定目标的过程中遇到的重要问题。

      长期以来学者们致力于研究时间压力与创造力之间的关联性。总的来说,这些研究大都指出二者之间存在着抛物线型关系,也就是说,在达到一定程度之前,压力的增加是有助于提高创造力的,超过这一点之后,压力就开始起负面作用。

      时间压力与创造力的矩阵

    我们的研究表明,时间压力对创造力的影响各有不同,取决于环境是否容许人们全神贯注于工作,是否赋予紧迫的任务某种意义,或激发或削弱创造力的其他因素。

     

    时间压力

    激活创造性思维的可能性

     

     

     

     

    当人们感觉像是在进行的科学考察时,低的时间压力会促进创造性思维更可能出现,这时他们

    ·创造性思维的主导倾向,是生发或探索新思想而不是解决问题

    ·更乐于与一个人合作而不是一个组织

    当人们感觉像在秉承着某种宗旨进行新奇的科学考察时,极度的时间压力促进创造性思维,这时他们

    ·由于被保护而没有干扰,可以一整天全心投入一项活动。

    ·相信自己正做着意义重大的事情,感到被挑战刺激着,乐于投入进去。

    ·创造性思维的主导倾向既在发现问题,又在生发或探索新思想。

     

     

     

     

     

    当人们感觉像是在自动驾驶(由他人操纵)时,低时间压力也很难激发创造性思维,这时人们

    ·没有获得高管人员关于创新的激励。

    ·乐于开会或在团队中讨论,而不是个别交谈。

    ·总体上很少进行合作。

    当人们感觉像在骑脚踏车(单调乏味)时,极大地时间压力也无法激活创造性思维,他们感到心烦意乱。

    ·干的事情五花八门,日子像断片。

    ·丝毫感觉不到工作很重要。

    ·与"有使命感"的情况相比,即便每天工作时间相同,但对时间压力的惶恐感更强。

    ·乐于开会或一大群人谈话,而不是个别交谈。

    ·他们的计划或日程常到最后关头还改动。

     

        

    1. 创造力的源泉-目标

    在软件行业中,频繁的目标改变是扼杀创造力的很重要的因素。由于软件行业的项目特征;一般一个项目会持续数月或者数年,在项目持续的过程中,高层的目标改变或者不太合适的改变手段对整个项目团队的创造力打击是致命的。

    本文作者:华磊 出处:http://www.cnblogs.com/hualei/
    本文版权归华磊和博客园、CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-博客园-华磊CSDN-华磊
    特别授权:敏捷开发(SCRUM)系列文章特授权上海火速转载使用并应用到研发项目“火速智卓-用心连接企业员工的微信企业号应用平台”的管理中。
    小规模研发团队的敏捷开发(SCRUM)全集
    JQuery+FlexiGrid+asp.net完美解决方案-开源项目dotNetFlexGrid,构建快速的Ajax应用程序[官网][下载]。
  • 相关阅读:
    2018-2019-1 20175330 《信息安全系统设计基础》第四周学习总结
    2019-2020-1 20175330 《信息安全系统设计基础》第三周学习总结
    《程序设计与数据结构》实验一报告
    《程序设计与数据结构》第四周学习总结
    学号 20172326 《程序设计与数据结构》第三周学习总结
    《程序设计与数据结构》第二周学习总结
    《JAVA软件结构与数据结构》第一周学习总结
    《程序设计与数据结构》(上)课程总结
    2017-2018-2 《程序设计与数据结构》实验五报告
    《程序设计与数据结构》实验四报告
  • 原文地址:https://www.cnblogs.com/hualei/p/2288619.html
Copyright © 2020-2023  润新知