`
txf2004
  • 浏览: 7041065 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

另一个CodeJam

阅读更多

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://dreamhead.blogbus.com/logs/24310683.html

关于CodeJAM的那篇blog中,我写道,希望将来有机会把这个面扩大一些,让其他公司的人来和我们一起来做。

周末没有休息,和几个同事参与了一个类似于CodeJam的活动,两天做一个小系统,开发工具还是ROR。不同的是,这次是和客户的开发人员一起工作。

客户的开发人员之前没有接触过ROR开发,所以,这次活动开发的需求,可以说是小得不能再小了。与其说这个活动是为了开发这个系统,倒不如说是给他们进行一个展示,一方面,展示我们的工作方式,另一方面,展示ROR开发的威力。

最初,我并不了解和我们一起工作的这些开发人员的水平,所以,我以为主要的精力要放在开发上。等我真正开始工作,写上几行代码的时候,我才发现,对于这些从来没有了解过Ruby和Rails的人来说,就是简简单单的几行代码,也需要我用大量的口舌去解释。这时,我突然意识到,对这个项目而言,写多少代码其实已经变得不那么重要了,同他们的沟通,远要比写几行代码重要得多。

虽然和我们一起开发的这些人都有一些开发经验,但他们之前的工作经验并没有给他们提供像我们这样开发的机会,所以,需要解释的,不只是ROR的技术,更多的是一种工作方式。比如,第一天下午的时候,我几乎大多数时间是在和人解释测试,不是如何TDD,而是讨论为什么要做测试,以及测试和业务代码的关系。他们会问,我写完一个功能,刷一下页面,看看结果不就可以了,为什么要写测试,他们会问,测试代码在运行时起到怎样的作用,他们会问,如果测试不影响业务代码,我为什么要写它,等等。这个时候,我不得不把思路拉回到我刚刚接触这些概念的时候,给他们提供一个合理的解释。

总结的时候,这些开发人员普遍的感觉是大开眼界,这时,有一种自豪感在心底升起,正如gigix所说,这种一出手就能给人带来震动的感觉,很好。

这是一个非常好学的团队,在开发过程中,他们会不断提出各种各样的问题,因为我们所做的几乎一切都与他们原有的工作方式有着巨大的差异。两天时间,不仅仅是我,所有参与这次活动的ThoughtWorker都解释了大量的东西,以致于每天结束时,都会有一种口干舌燥的感觉。

不过,他们也有一些担心,如果我们离开,失去了我们的支持,他们该如何走下去。这是一个非常好,而且也非常现实的话题。这种开发方式在ThoughtWorks是一种理所当然,而在他们的开发团队,因为原有开发习惯在作祟,会让他们遇到很多问题。我们能够给出的,只是一部分建议,可能要他们更多的探索和坚持,以及也许日后与我们的进一步合作。

对于他们而言,这是改变的开始。

分享到:
评论

相关推荐

    Google_code_jam.rar_Google jam_google code jam_google code jam j

    总的来说,这个压缩包提供了对Google Code Jam比赛的一种个人参与和学习的视角,对于想要提升算法技能和参加类似竞赛的人来说,是一个宝贵的资源。通过研究其中的代码和解题思路,可以深入了解如何有效地解决实际...

    CodeJam:一组方便使用的可重用.NET组件,可以简化您的日常工作并节省从一个项目复制和粘贴自己喜欢的帮助程序方法和类的时间。

    CodeJam库CodeJam CodeJam是一组便捷的可重用.NET组件,当您将自己喜欢的帮助程序方法和类从一个项目复制并粘贴到另一个项目时,它们可以简化日常工作并节省时间。 CodeJam项目包括三个部分: Main-稳定且功能完整的...

    Algorithm-CodeJam.zip

    Algorithm-CodeJam.zip,一组方便的可重用.NET组件,当您将喜爱的帮助程序方法和类从一个项目复制粘贴到另一个项目时,它们可以简化您的日常工作并节省您的时间,算法是为计算机程序高效、彻底地完成任务而创建的一组...

    Codejam-2021

    "第二测试装置上的WA 11/31点"进一步揭示了在另一个测试集上,我的代码在11个测试用例中出现了错误,而在总共31个测试用例中只正确解决了20个。这可能是因为对于某些特殊情况或特定输入,我的代码没有给出正确的结果...

    cut-page:Codejam 活动项目 - 剪纸大作战

    总结起来,“剪纸大作战”是一个结合了JavaScript技术、npm、Bower和Gulp的Codejam活动项目。它不仅提供了实践JavaScript编程的平台,还引入了现代Web开发的工具链,帮助开发者掌握前沿的开发技术和工作流程。通过...

    Misc:创建具有用于测试学习目的的简单项目的存储库

    二进制分析框架进行二进制分析的框架列表: 流程重新父母创建一个新流程,作为另一个流程的子流程。 CheckDebuggerCrossArchitecture通过从x86进程调用x64代码来检测调试器。单词生成器创建了所有可能的单词,这些...

    leetcode552-competitive-programming:竞争性编程

    另一个是被判断为正确的实际提交。 解决方案是在2019年参加实际比赛的时候写的。 解决方案是在阅读问题分析后编写的,因此主要是一种实施实践。 2019 年第 1B 轮 一小时内解决问题,如同在实际比赛中较量。 2020 年...

    Algorithm-algorithm-implementations.zip

    例如,快速排序是一种高效的排序算法,其核心是“分区”操作,通过选取一个基准值,将数组分为两部分,一部分的所有元素都小于基准,另一部分的所有元素都大于基准,然后递归地对这两部分进行排序。这样的过程可以...

    [转帖]世界编程大赛第一名写的程序

    标题和描述中的“世界编程大赛第一名写的程序”这一知识点,实际上指向了计算机科学与编程竞赛领域的一个重要概念:即在高水平的编程比赛中,优胜者所编写的代码往往蕴含着高级算法、数据结构以及编程技巧。...

    emoji表情转换

    例如,一个论坛可能只接受bbcode作为输入,这时就需要将输入的emoji转换成对应的bbcode代码。转换过程通常涉及到查找对应表,将每个emoji字符映射到其bbcode等价物。例如,微笑的emoji `` 可能会被转换为 `[笑脸]` ...

    一个C#版单例模式的xml解析类

    其中,单例模式是一种非常常见的设计模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在C#中,我们可以创建一个单例类来处理XML解析任务,以确保在整个应用程序中只有一个解析器实例。 单例...

    CompetitiveProgramming:来自众多培训资源的各种解决方案,用于竞争性编程

    在竞争性编程的世界里,程序员们通过解决一系列复杂的算法问题来提升自己的技能,这不仅可以锻炼逻辑思维能力,也有助于准备各类编程竞赛,比如ACM国际大学生程序设计竞赛、Google Code Jam以及Codeforces等在线平台...

    竞争编程:我的CP东西

    标签 "hacktoberfest C++" 提供了另一个线索。Hacktoberfest 是一个全球性的开源活动,鼓励开发者参与GitHub上的开源项目,特别是对初学者友好。C++ 是一种常用的编程语言,尤其在竞争编程中非常流行,因为它的效率...

    CSES问题集解决方案:CSES问题集的解决方案

    5. **指针与引用**:指针存储变量的地址,引用是另一个名字的已存在变量,两者常用于实现动态数据结构和复杂算法。 6. **排序与搜索**:C++标准库提供了快速排序、归并排序、二分查找等高效算法。 7. **动态规划**...

    algoritms

    最后,参加编程竞赛也是一个极好的实践方式,如ACM/ICPC、Google Code Jam等,这些比赛不仅能够锻炼我们的算法思维,还能提升在高压环境下解决问题的能力。 总的来说,算法是Java编程的基石,理解和熟练运用各种...

    EPM1270PDF文件9A81E45C27473AF4628DDCE5C7E1D57682DEBD8A12B498E765A11A8E51159440.pdf

    - **Jam Byte-Code Files (.jbc)**:这是另一种编程文件格式,也可以用于在系统编程。 ### 结论 综上所述,EPM1270PD CPLD器件提供了丰富的JTAG边界扫描功能和支持多种编程方式的在系统编程(ISP)能力。这些特性使得EPM...

    nexus-3.13.0-01-unix.tar.gz 低价真货

    另一个文件“readme.txt”通常是包含安装指南、使用说明或者注意事项的文本文件。在安装或运行Nexus之前,用户应仔细阅读这个文件,以确保遵循正确的步骤并了解任何特定的要求或限制。这可能包括系统需求、环境变量...

    Spring源码解读.pptx

    另一个关键概念是Aspect,它是Spring AOP的核心。Aspect允许我们定义关注点(例如日志、事务管理),并将其与业务逻辑分离。Aspect可以作为切面,通过切入点表达式定义何时、何地应用这些关注点。在源码中,理解AOP...

    jquery.tmpl.js

    3. **模板继承**:允许一个模板继承另一个模板,重用已有的模板结构。 4. **事件绑定**:可以在模板中直接绑定jQuery事件。 五、案例分析 一个简单的例子是动态生成用户列表: ```html {{each users}} ${...

    vncviewer.rar

    在本案例中,"vncviewer.rar" 是一个包含VNC客户端的压缩包,主要用于Windows操作系统。VNC客户端是VNC系统的重要组成部分,它允许用户连接到运行VNC服务器的设备,进行远程操作。 VNC技术基于TightVNC或RealVNC等...

Global site tag (gtag.js) - Google Analytics