`
参照物
  • 浏览: 12365 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

一次开发人员交换角色的尝试

阅读更多

转载自IT学习社区:http://bbs.itcast.cn/forum-102-1.html

 

    如果你曾经有过这样的经历,在一次开发讨论会中,人们都在热火朝天的讨论出现的问题,而且你却待在角落里打盹儿——这说明你毫不关心他们关心的问题。出现 这种现象并不能简单的认定你是个没能力的蠢货(然而,你很有可能就是),而是因为你确实跟他们讨论的问题不相干。也许你从来没有写REST接口,处理过数 据库升级问题,或为互动网站写过网页标签。你不知道哪里会有错误,难点在什么地方,或遇到的是什么样的技术挑战——你对所有的这些都不熟悉或根本不知道。 为了补救这种情况,我的同事——威利·米勒和我启动了一个我们称作“开发角色互换”的实验。

    米勒是一个科班教育出身的程序员,在很多我们一起工作的项目中(e.g., Boss Blueprint),他一直在开发后端的程序,而我做前端的页面。为了能让我们对对方的工作有更多的了解和赏识,我俩决定做一个新的项目,项目中我们互 换角色,我将要写后端程序,而他要写前端页面。

    “前端开发的兔子洞比我想象的要深的多。就好象我走到洞边,丢一块石头,却一直没有听到触底的声音。”

    – 威利·米勒

    我,同样,也感到了前所未有的阻力。我头一次接触Ruby语言,要从头学习像Sinatra或Rails这样的web框架,需要去研究那些看起来数都数不 完的各种引用库。这些是如此的不同,很显然是因为我从前从未用过它们,也是因为我所面对的是完全不同类型的问题。作为前端开发人员,通常最麻烦的问题是一 个按钮没有表现出色彩梯度,或有些东西没对齐。然而,不了解后台的工作原理,也许会导致前台不是最优的处理展现方式,甚至会妨碍和后台服务集成。

    经过数周在项目里艰难行进和互相帮助,我们发现这种互换角色的锻炼让我们在所有Web项目中都变得更容易沟通,传递思想更有效率。比如在站会中,我能更有 兴趣的参与后台程序员解释他们的成绩和他们遇到的困难。我还能提出一些不弱智的问题,对问题提出一些不同角度的观点。可在角色互换前,我只能傻站在那,脑 子里是想午饭吃什么或下班后干什么。经过了角色交换的锻炼,我认识到,我不仅收获了大量的关于ruby语言的知识,更重要的,当团队作为一个整体在创造和 实现一个东西时,我对解决方案有了一个更全面的视角。

    很显然,开发角色交换在公司组织层面有一定的难度。如果在一个重要项目的中期这样做自然是不明智的。当你的团队中做一些低优先级的任务时可以考虑这样做。 你能找到很多让团队成员担任不同角色的好机会。这样做不仅能让你的团队获得更大的交叉训练,同时也能帮助团队成员提高参与度、扩大视野,以更有效更优雅的 方式完成项目目标。

    你们做过开发角色交换的练习吗?你们的团队有过这样的锻炼吗?说来听听!

 

英文原文:Swapping Developer Roles: A Lesson in Empathy and Cross Disciplinary Work

分享到:
评论

相关推荐

    交换编程-结对编程的延伸实践

    ### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸...对于那些希望提高团队协作能力和稳定性的软件开发项目来说,交换编程无疑是一种值得尝试的新模式。

    让java网站开发从此简单起来[一个项目只用一个Servlet和一个Dao类]demo

    在给定的项目中,作者尝试简化这个过程,通过仅使用一个Servlet和一个DAO类来构建整个网站。这种方式旨在降低复杂性,提高开发效率。 Servlet在Java Web应用中扮演着服务器端处理程序的角色,它接收HTTP请求并返回...

    J2me 基础学习 rpg游戏开发学习

    Java 2 Micro Edition (J2ME) 是一种用于开发小型设备和嵌入式系统的 Java 平台,尤其在早期的移动设备,如功能手机和早期的智能手机上非常流行。RPG(Role-Playing Game)游戏是指角色扮演游戏,这类游戏允许玩家...

    c++游戏开发经典案例详解.pdf分享

    而实践是检验真理的唯一标准,不断尝试和改进,将理论知识转化为实际代码,是成为一名优秀游戏开发者的关键步骤。在学习过程中,遇到问题时,不要忘记利用开源社区、论坛和教程资源,它们是你成长的宝贵财富。

    在复杂的项目开发中使用结对编程

    经过一定时间后,两人会交换角色,以便于双方都能获得实际操作的机会和经验。 #### 二、结对编程的优势 1. **提高代码质量**:结对编程通过实时的代码审查,能够及时发现并修正错误,从而显著提升代码质量和可维护...

    Android客户端远程登录web服务器数据交换实例

    在Android开发中,实现客户端与Web服务器的数据交换是一项常见的任务,尤其在移动应用需要与远程数据库交互时。本文将深入探讨“Android客户端远程登录Web服务器数据交换实例”,讲解如何使用MySQL数据库、JSON数据...

    基于PHP的网站后台角色权限管理系统源码.zip

    授权部分则依赖于角色-权限模型,当用户尝试访问资源时,系统会检查其角色是否拥有相应权限。 【API接口】如果系统设计得当,还可以提供RESTful API接口,使得其他应用或服务能与后台进行数据交换,实现更灵活的...

    USB 转串口驱动 嵌入式开发

    - **调试工具**:嵌入式开发人员常使用USB转串口设备作为调试工具,通过串口连接到目标板,发送命令、读取反馈,实现对微控制器或嵌入式系统的调试。 - **固件更新**:许多嵌入式设备支持通过串口进行固件升级。...

    Delphi+10.1+Berlin+DataSnap+开发手册+PDF扫描版及源码

    **Delphi 10.1 Berlin DataSnap 开发手册及源码详解** DataSnap是Embarcadero Delphi中的一个强大框架,专为构建分布式应用程序而设计。在Delphi 10.1 Berlin版本中,DataSnap提供了一整套工具和技术,使开发者能够...

    linux驱动开发学习步骤

    2. **编写一个简单的Makefile**:尝试为自己的驱动项目编写一个Makefile,确保它能够支持使用`make`命令进行编译和清理。同时,确保Makefile能够与Linux内核的构建系统兼容,以便于后续的集成测试。 #### 二、实现...

    基于手机开发平台Android的推箱子程序

    【基于手机开发平台Android的推箱子程序】是一个利用JAVA语言在Eclipse集成开发环境中构建的移动游戏应用。Android是Google主导的开源操作系统,广泛应用于智能手机和平板电脑,为开发者提供了丰富的API和工具来创建...

    TestStand 开发培训教程

    - **定义**:TestStand 是一款由 National Instruments(简称 NI)开发的用于自动化测试系统的软件工具,适用于多种硬件平台。 - **角色**:在自动化测试环境中,TestStand 作为测试执行引擎,负责调度和运行测试...

    SOCKET通信 MMORPG网页游戏开发经验

    SOCKET通信作为一种常见的网络通信技术,扮演着至关重要的角色。本篇将深入探讨SOCKET通信在MMORPG网页游戏开发中的应用及其经验。 首先,我们需要理解什么是SOCKET。SOCKET是操作系统提供的一个接口,允许程序通过...

    嵌入式与物联网开发Shenzhen

    总的来说,"嵌入式与物联网开发Shenzhen"是关于利用先进技术改进传统行业的尝试,通过嵌入式系统和物联网的集成,提高房地产行业的效率和用户体验。而"ShenzhenRealestate-master.zip"则是一个实践案例,对于学习和...

    .NET平台研究与开发丛书:C#语言程序设计(一)

    SOAP(简单对象访问协议)是一种消息传递协议,用于在网络上交换结构化信息。 同时,文档也提到了一些关于C#语言的基本概念,例如simplicity(简单性)、modernity(现代性)、object-orientation(面向对象)、...

    深入体验JavaWeb开发内幕

    在现代软件开发,尤其是JavaWeb领域,XML(可扩展标记语言)扮演着至关重要的角色,它不仅是一种通用的数据交换格式,更是配置文件标准化的基石。对于任何希望深入理解和掌握JavaWeb开发技术的人来说,具备扎实的XML...

    OPC客户端服务端测试工具,包含多个客户端,服务端,可以实现开发时的环境搭建及测试

    OPC(OLE for Process Control)是工业自动化领域中的一种标准通信协议,用于不同设备和系统之间的数据交换。它基于微软的COM/DCOM技术,使得应用程序能够通过标准接口与各种设备进行通信,无论这些设备是由哪个制造...

    蓝牙开发参考

    蓝牙开发在IT行业中是一个重要的领域,特别是在移动设备如iOS上,它允许设备间的无线通信,实现数据传输、音频播放、设备配对等多种功能。本文将深入探讨蓝牙开发,特别是针对iOS平台,以及如何处理蓝牙连接的建立与...

Global site tag (gtag.js) - Google Analytics