Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1367524
  • 博文数量: 946
  • 博客积分: 52360
  • 博客等级: 大将
  • 技术积分: 13080
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-07 17:31
文章分类

全部博文(946)

文章存档

2011年(1)

2008年(945)

我的朋友

分类: C/C++

2008-08-07 17:39:27

下载本文示例代码
原文出处:Understanding the Psychology of Programming

  与众所周知相反,程序员更多地象艺术家而不是科学家。 如果你想最大限度地调动团队的创造潜力,你必须开始研究程序员的心理,而且愿意用管理策略支持它。
  人们常说,程序员很内向,我发现这不是事实。通常情况下,程序员确实比多数人能保持较长的注意力和集中力。一个程序员能花长时间集中精力解决单项任务而不顾其他,这就让一些人认为其有自闭特征,有人甚至认为大多数程序员都有轻微孤独症。我不认为大多数程序员有自闭取向,果真要是这样,我们的注意力就太容易破碎了。
  编写程序是一个创作的行为,尽管程序员乐意在尽可能的情况下把科学和工程应用到这过程中,但编程既不是科学,也不是工程,因此一名程序员必须具备很高的创造力。这就是为什么程序员喜欢新项目的开发,而不是对旧项目的维护。这并不表明他们不想卷入过去陈旧的东西(尽管是编程的一部分),而是项目维护并不为程序员提供创造的机会。

"为了原创点子能出现,你必须让它们在内心世界里渗透,让它们在那里不受我们自己的愿望和自己的方针所约束。"

——Mihaly Csikszentmihalyi,Researcher
  当有创造力的人做事的时候,他们经常进入一种精神状态,让创作的思路源源不断。这是很高的思想境界,非常有利于本人和他所在的研发机构。
  著名的心理学家,芝加哥大学心理系的前主任,Mihaly Csikszentmihalyi 教授就创造力的问题,已经对几百个典型个人进行过研究,其中包括诺贝尔奖获得者和 IT 企业家,就此他也写了许多有关思路和创造力的书和论文。
  Csikszentmihalyi说:“为了原创点子能出现,你必须让它们在内心世界里渗透,让它们在那里不受我们自己的愿望和自己的方针所约束。然后通过一些未知的,随机组合力量的推动,而让它们出现。正是经过这种重新组合,而不是人为的直接推动,新生事物才会涌现。”
  思路是脆弱的,是需要时间来实现的。如果程序员的思路被干扰,那是需要很多的时间去重新进入状态。就是一个小时,也让你的工作整体失去一个小时的生产率。如果一天中程序员的工作被干扰多次,或许他就根本再也无法进入工作状态,没有工作的状态,创造力会是残缺的。
  思路是易脆的,但也并非如表现的那样脆弱。只有那些让程序员改变思维方式的干扰才能打断思路。就是说你可以拍肩膀和程序员打招呼,询问他们在忙什么,甚至建议点什么,都是没有问题的。但是如果你问他们的进度,那么你就干扰了他们的思路。我已经几次从经验丰富的协作程序员那里听说这样的事例。他们应该知道:如果思路超过了它自身的脆弱性的话,那协作编程是不可能的。思路是某种依赖前后关系的状态,只要他们都在这种状态中,你便可以主观操纵去完成不同的任务。如离开这样的状态,那会需要相当时间来重新建立它。

创造思路,…对,思路
  那么你怎样才能为开发团队最大限度的调动这神奇的力量? 方法再简单不过了:从精神上和时间上给思路的酝酿提供适当的绝缘环境,同时灵活对待个体在工作中所选择的奇异行为。
  1. 提供适当的精神空间
      当程序员被安排去做任何具有创造性的工作时,应该容许他们不受非理性干扰地去完成任务。保证不让他们参加不必要的会议,不安排辅助性的任务。尽力去安排好这一切,让他身边的其他程序员也尽量做同样的工作。如果那样不可能的话,就让程序员拥有他自己的工作间。
  2. 提供足够的时间恢复创造活力
      如果你希望你的程序员重复过去所犯的错误,那么你就象训狗一样不给时间休息;如果你想让他们有所创新,你应该让他们休息好。
  3. 满足合理的特殊要求
      在 Csikszentmihalyi 的研究中提到这样一个案例,一个著名的计算机研究员,他说在计算机的很多领域,其所有好的发明创造思路都来自淋浴的时候。他说他相信,他的公司因为没有安装仅1400美元的淋浴装备,就让公司损失了几百万。Csikszentmihalyi写道:“当他换到新的有淋浴的公司,他的点子就层出不穷。”
      我并不是说你要为程序员提供新的淋浴设施 (至少不是所有的),但是你应该停止象对待插头那样一视同仁地对待他们。他们是独立的个体,很多方面都是不同的,每每都有自己的规律和表现形式。大多数人都知道怎样找到自己的思路,这才是你需要关注的。
      如果一个程序员告诉你,他每天在下午2点的时候需要15分钟的休息,你就提供这个方便吧;这仅仅是放张沙发在咖啡间或者休息间。(你有休息间,不是吗?)
      或者这样:与其给整个团队配备相同的椅子和桌子,为什么不将预算派发给每个程序员,让他们自己去买他们自己的椅子和桌子? 办公室虽然看上去不太整齐,但提供了让每个程序员都感觉舒适的环境,那样可以激发他们的工作热情。
  我知道你会争辩;要考虑费用问题!如果你要把这个问题放在首位,那么你就根本没有明白本文的整个主题。你要从头开始阅读本文,这次要集中注意力。
如果你不能调动人的积极性,那么你怎么能做好你的项目?
  如果你雇佣图像设计师,帮你创造一个甜眼图在你的网页上,你或许为他们提供合适的工具,工作地点和宽松的条件促进他创作。你宽容他们的个性,为他们买透明的计算机。如果你不考虑程序员的需要,那么你就很难发挥他们的长处而得到你应该得到的。
  我们的任务增强人的聪明才智,充分雇佣多样化的人才,取长补短。你应该尽力促使你所管理或与其合作的所有人做到最好——如果你不能调动人的积极性,那 么你怎么能做好你的项目?
  这样做是否需要你花费更多的钱,我没有具体的数据,但潜在的好处是巨大的。如果你继续太在意风险/效益的东西,那么你将继续生产平庸的产品。你的软件是人来做的,了解人的心理是很有好处的。 下载本文示例代码
阅读(114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~