文 / 许正华 伴随着软件开发敏捷化趋势的发展,“以人为本”的软件团队建设理念越来越得到广泛的重视,但在这方面的研究、探讨与实践则显得乏善可陈,现在是到了个体、团队、组织甚至是社会力量一起行动起来的时候了。 构建开放的软件团队文化绝不仅仅是搞几次技术交流和设计讨论那么简单,它是一项长期的系统工程。开放的软件团队意味着什么?个人与团队应该如何行动?作为团队的管理者以及团队成员都应该认真思考这些问题。 一个程序员的文化观 文化的自然属性 “文化”总给人一种高高在上的感觉,这多少是受到狭义文化定义的影响,即文化是人类所创造的语言、文学、艺术及一切意识形态在内的精神产品。在中国古籍中,“文”既指文字、文章、文采,又指礼乐制度、法律条文等;“化”是“教化”、“教行”的意思。 文化是可以培育、教化出来的吗?我们可以从文化的产生与传承略加分析。一种文化的产生必定源自人类内在与外在的需求,其传承少不了培育与教化的功劳,但也要遵循事物发展的客观规律。因此,我认为一个有生命力的文化必须是顺应自然的。今天,我们的很多传统文化面临着生存的危机或者被边缘化,主要原因就是那些原本支撑它们的内外需求已不复存在,这些文化必然会被历史所淘汰,只是个时间问题。 文化的封闭属性 构建开放的团队文化是一项艰巨的历史工程。很多人可能没有意识到“开放”与“文化”是一对矛盾体,因为文化从本质上有着封闭的属性。弱势的文化想尽各种方法避免被强大的文化所同化或吞并;强势的文化则希望尽可能地扩展以获得更大的利益。从这个角度讲,人与人之间的战争、组织之间的吞并都是文化现象,是人类文化的一部分。 人—文化的综合体 我们讨论文化一般都以群体组织为背景,其实每个自然人都是一个复杂的文化综合体,包含语言、艺术、科学、信仰甚至宗教等多种因素。这个文化综合体也没有超越前面讲的两个属性。 首先,我们绝大多数人都在相似的教育制度里接受着同质化的教化,但最终在文化上的表现却千差万别,这说明个体文化是一种自助餐式的文化:餐厅能够提供什么样的食物可供选择决定了我们可以吃到什么,但最终吃到肚子里去的却是我们自己选择的结果。 其次,每一个独立的个体都难以逃脱封闭的趋向性,只是程度不同罢了。这种趋向随着年龄的增长或者知识与经验的增多,得到不断的增强。一个典型的例子就是,人年纪越大其生活习惯越难以改变。我就曾经出于健康的原因试图劝说父母在某些生活细节上做出适当的调整,但最终都以失败而告终。最后,当我意识到这可能与文化封闭性有关时,也就不再做这种无用功了。 什么是开放的文化 开放的文化是一种文化表象,其实质与民主、自由、平等、容忍等人生理念与社会理念有关。谈到民主与自由就不得不提及胡适,这位中国新文化运动的领军人物。下面两段引文虽然是在讨论民主,实际为我们勾勒出了一幅以“开放”命名的画卷。 引文1:“胡适所说的个人主义的精义,可以概括为‘独立自主,参与奋斗’八个字。民主的生活方式,就个人来说,是独立的、是有充分个人自由的;但就整体来说,是参与的,是有一个共同理想的。独立而不参与固然无法达成这个理想,参与而不独立,也会失掉个人的价值。在民主的生活方式中,中国人所最需要的是参与而不党同,独立而不避世的精神。”(《少不读鲁迅,老不读胡适》) 引文2:“民主的生活方式,在政治制度上的表现,好像是少数服从多数,其实它的最精彩的一点是多数不抹杀少数,不敢不尊重少数,更不敢压迫少数,毁灭少数。”(《胡适手稿》) 胡适的声音今天听起来仍散发着无尽的光芒。在一个开放的组织中人人应该是平等的,至少在精神层面。我很难给开放的文化下一个简单的定义,但至少可以从两个方面来甄别“真开放”与“假开放”——自主性与双向性。在一个真正开放的组织中,信息的交流是多样、自由的。任何屈服于权力的开放都不能持久,也不能深入。在一个真正开放的组织中,信息的交流是双向的。一位站在讲台前滔滔不绝的演讲者与坐在台下虔诚的听众都不是开放文化的代表。 开放文化的一个核心与三个方面 两种或者多种文化间的开放是建立在共同利益基础上的。如果我们把团队看作是一种文化共同体,那么建立开放的团队文化的核心就是确立共同的利益。 对于任何一个组织,“人/过程/产品”都是三个紧密相关的组成要素。接下来,我们将探讨开放的文化与三者间的关系。 人的因素 一个文化在其形成及发展的初期是比较开放的,因为它要从外界吸收充足的营养。随着它的逐渐成熟,其封闭性就表现得越来越充分。对个人而言,也遵循这样的普遍规律。不同的是,人的成熟更多地受主观意念所左右。现实中很多博学的人,仍可以保持旺盛的求知欲,来支撑其个体文化的不断发展。 我们习惯于将一个人的性格打上“内向”或“外向”的标签,那么开放的团队文化是否要我们更加外向吗?如果真是这样,开放的团队文化将变得可望而不可及。一个渴望学习的人最容易做到开放——这里所说的开放并不只是针对人,也是针对一切有用的知识。因此,构建开放的团队文化最终转化为了建立学习型的组织。 虽然构建学习型组织仍然是一个具有挑战性的任务,但至少已不是一个陌生的话题,本文对此只做一点分析:持久学习的动力来自于一种高尚的理想。我们不能只满足于完成自己所能的事情,而要致力于完成自己所希望的事情。 过程因素 也许很多程序员会质问我为何要将过程硬扯进来,它与开放的团队文化何干?我可以理解程序员多少对各种软件开发过程抱有一些敌意,因为他们把很多问题都归结于过程的错。这多少与团队缺乏对过程统一的理解有关。过程本应成为程序员的伙伴,而不是绊脚石。 过程的建立与实施是有成本的,但同时也是有收益的。我们不仅要仔细规划团队在每一个过程上面的投入,也要评估相应的产出。这种评估并不容易,因为缺乏一种简单而一致的标准。 统一的过程是团队沟通的平台,是开放的催化剂,是建立开放团队文化的重要基石。 产品因素 建立一个完善的产品知识库是构建开放的软件团队文化的重要保障。试想,如果对产品知识的掌握上水平相差悬殊,团队成员便很难开展有效的沟通与合作。在我看来,没有哪个高技术工作在产品知识库上遇到像软件开发一样大的挑战。缺乏足够有效的技术文档是大多数软件开发团队所面临的实际情况。 结束语 建立利益共同体是开放团队文化的核心。激励团队建立学习的习惯、持续地改进过程、建立完善产品的知识库是具体的方法与工具。 尽管本文内容并不可以直接用来解决具体的问题,但希望能够对探究此问题的本质多少有所帮助。在采取行动前,理清概念、定义问题、分析本源总是大有裨益的。 作者许正华,目前就职于CA Technologies中国技术中心,从事数据备份和高可用企业软件方面的开发和研究,并专注于软件工程、知识工程、团队文化等领域的研究与实践。 本文选自《程序员》杂志2011年11期,更多精彩内容敬请关注11期杂志 《程序员》杂志订阅火热进行中

构建开放的软件团队文化相关推荐

  1. 如何营造性能至上的团队文化

    和我合作的大部分人都了解,我是个追求性能优化的极客. "渲染引擎"."代码打包优化"."每秒帧数提升"......这些关键词是工作中的家常便 ...

  2. 技术管理如何管理,如何构建领导力、构建团队文化

    文章目录 一.对"管理"的理解 1.1 技术团队需要理什么? 二.领导力 三.构建团队文化 四.方法论 整理自:IT技术管理者的自我修养 一.对"管理"的理解 ...

  3. 微服务团队_为什么团队文化对于成功的微服务至关重要

    微服务团队 by Jake Lumetta 杰克·卢米塔(Jake Lumetta) 为什么团队文化对于成功的微服务至关重要 (Why Team Culture is Critical for Suc ...

  4. 4个步骤成功构建出一个机器学习团队

    在过去的几年里,机器学习有了巨大的发展.但是,尽管机器学习是一门学科,管理机器学习团队的技艺却更年轻.当今许多机器学习管理人员被迫进入管理岗位,要么是出于需要,要么是因为他们是最好的个人贡献者,而且许 ...

  5. 构建创业公司突击小团队

    创业公司要想突围,钱.资源.团队和核心商业模式一样不能少,但其中最重要的是人,也就是团队,只要团队搭好了,其他所有的东西,包括商业模式,都会慢慢回到正规上来. 海豹突击队是美国的特种部队,他们形容自己 ...

  6. [机器翻译]参与 Microsoft 开放源代码软件项目的方式

    下面是一个事实:Microsoft 托管在 GitHub,包括.NET 编译器平台,也称为"Roslyn"具有多达 4 万行代码等一些相当大的大约 2,000 开放源代码软件 (O ...

  7. 线性瘤是良性吗_良性聚会:露营者如何构建开放源代码工具来解决时区

    线性瘤是良性吗 by Michael D. Johnson 迈克尔·约翰逊(Michael D.Johnson) 良性聚会:露营者如何构建开放源代码工具来解决时区 (Meeting for Good: ...

  8. 管理的角度分析:团队建设、团队管理、团队文化、沟通与辅导、招聘与解雇等

    管理的角度分享技术 TL 的核心职责 导读 背景 团队建设 团队管理 团队文化 坦诚的力量 允许你的下属 challenge 你 owner 意识 建立学习型的组织 补充 导读 <如何成为优秀的 ...

  9. 打造高效研发团队 (4) —— 团队文化篇

    原文:https://my.oschina.net/huangyong/blog/1823660 软件开发是一场需要集体智慧的运动,它的成功不完全属于团队中任何一个人.然而,团队成员们做人做事的风格却 ...

最新文章

  1. Java配置----JDK开发环境搭建及环境变量配置
  2. android 圆角图片
  3. Preference跳转activity出错Unable to find explicit activity class
  4. golang为LigerUI编写简易版本web服务器
  5. inotify+rsync
  6. linux下文件删除不了
  7. 为什么需要动态内存分配?
  8. 【Python】Python中的异常处理
  9. Qt中与文件目录相关操作
  10. 在Crystal Report 8中调用Oracle的procedure储存过程,并取得返回的类型为Sys_Refcursor数据表...
  11. tomcat8修改session的JSESSIONID名称
  12. EditPlus编码格式设置
  13. .woff2/svg/woff文件报404错误
  14. 申请阿里云香港试用1年服务器教程
  15. 苹果输入法怎么换行_现在还有没有必要学习五笔输入法呢
  16. 由于找不到libmysql.dIl, 无法继续执行代码。重新安装程序可能会解决此问题
  17. 实验三 七段数码显示器
  18. 使用 Eslint + husky + lint-staged + Prettier 提高前端项目质量、统一项目代码风格
  19. Java练习题8:输出1000以内能同时被3和7整除的正整数
  20. 服务器入侵之找出隐藏字符的原理

热门文章

  1. python进阶--pandas基本功能
  2. Ableton Max for Live Collection ALP 音频MIDI效果合成控制设备拓展合集
  3. 轻量级单片机命令行交互项目,全部开源
  4. python带你采集不可言说网站数据,并带你多重骚操作~
  5. SAP SD模块配置
  6. 案例 02、OpenGL入门--正方形键位控制
  7. 2022年4月24号MyBatis总结.
  8. 【.Net码农】【淘宝API】淘宝API开发
  9. 16、爬取知乎大v张佳玮的文章“标题”、“摘要”、“链接”,并存储到本地文件...
  10. python2读取excel中文处理_Python处理Excel数据