转载自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》
相关推荐
### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸...对于那些希望提高团队协作能力和稳定性的软件开发项目来说,交换编程无疑是一种值得尝试的新模式。
在给定的项目中,作者尝试简化这个过程,通过仅使用一个Servlet和一个DAO类来构建整个网站。这种方式旨在降低复杂性,提高开发效率。 Servlet在Java Web应用中扮演着服务器端处理程序的角色,它接收HTTP请求并返回...
Java 2 Micro Edition (J2ME) 是一种用于开发小型设备和嵌入式系统的 Java 平台,尤其在早期的移动设备,如功能手机和早期的智能手机上非常流行。RPG(Role-Playing Game)游戏是指角色扮演游戏,这类游戏允许玩家...
使用临时变量的交换方法是程序中较为直观的做法,通过创建一个临时变量来暂时存放其中一个变量的值,然后通过赋值操作来完成交换。例如: ```e a = 10 b = 20 临时变量 = a a = b b = 临时变量 ``` 然而,更有趣的...
而实践是检验真理的唯一标准,不断尝试和改进,将理论知识转化为实际代码,是成为一名优秀游戏开发者的关键步骤。在学习过程中,遇到问题时,不要忘记利用开源社区、论坛和教程资源,它们是你成长的宝贵财富。
经过一定时间后,两人会交换角色,以便于双方都能获得实际操作的机会和经验。 #### 二、结对编程的优势 1. **提高代码质量**:结对编程通过实时的代码审查,能够及时发现并修正错误,从而显著提升代码质量和可维护...
在Android开发中,实现客户端与Web服务器的数据交换是一项常见的任务,尤其在移动应用需要与远程数据库交互时。本文将深入探讨“Android客户端远程登录Web服务器数据交换实例”,讲解如何使用MySQL数据库、JSON数据...
授权部分则依赖于角色-权限模型,当用户尝试访问资源时,系统会检查其角色是否拥有相应权限。 【API接口】如果系统设计得当,还可以提供RESTful API接口,使得其他应用或服务能与后台进行数据交换,实现更灵活的...
- **调试工具**:嵌入式开发人员常使用USB转串口设备作为调试工具,通过串口连接到目标板,发送命令、读取反馈,实现对微控制器或嵌入式系统的调试。 - **固件更新**:许多嵌入式设备支持通过串口进行固件升级。...
为了更好地理解和应用CAN总线,开发人员需要深入研究其数据帧和远程帧的结构设计,以及错误帧和过载帧在异常情况下的处理机制。此外,对CAN总线网络的物理层和链路层功能的掌握也是必需的。物理层涉及信号的电气特性...
**Delphi 10.1 Berlin DataSnap 开发手册及源码详解** DataSnap是Embarcadero Delphi中的一个强大框架,专为构建分布式应用程序而设计。在Delphi 10.1 Berlin版本中,DataSnap提供了一整套工具和技术,使开发者能够...
2. **编写一个简单的Makefile**:尝试为自己的驱动项目编写一个Makefile,确保它能够支持使用`make`命令进行编译和清理。同时,确保Makefile能够与Linux内核的构建系统兼容,以便于后续的集成测试。 #### 二、实现...
【基于手机开发平台Android的推箱子程序】是一个利用JAVA语言在Eclipse集成开发环境中构建的移动游戏应用。Android是Google主导的开源操作系统,广泛应用于智能手机和平板电脑,为开发者提供了丰富的API和工具来创建...
- **定义**:TestStand 是一款由 National Instruments(简称 NI)开发的用于自动化测试系统的软件工具,适用于多种硬件平台。 - **角色**:在自动化测试环境中,TestStand 作为测试执行引擎,负责调度和运行测试...
SOCKET通信作为一种常见的网络通信技术,扮演着至关重要的角色。本篇将深入探讨SOCKET通信在MMORPG网页游戏开发中的应用及其经验。 首先,我们需要理解什么是SOCKET。SOCKET是操作系统提供的一个接口,允许程序通过...
总的来说,"嵌入式与物联网开发Shenzhen"是关于利用先进技术改进传统行业的尝试,通过嵌入式系统和物联网的集成,提高房地产行业的效率和用户体验。而"ShenzhenRealestate-master.zip"则是一个实践案例,对于学习和...
SOAP(简单对象访问协议)是一种消息传递协议,用于在网络上交换结构化信息。 同时,文档也提到了一些关于C#语言的基本概念,例如simplicity(简单性)、modernity(现代性)、object-orientation(面向对象)、...
在现代软件开发,尤其是JavaWeb领域,XML(可扩展标记语言)扮演着至关重要的角色,它不仅是一种通用的数据交换格式,更是配置文件标准化的基石。对于任何希望深入理解和掌握JavaWeb开发技术的人来说,具备扎实的XML...