InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Venkat Subramaniam谈论日常软件开发的事实和谬误

作者 Srini Penchikala 译者 郑柯 发布于 2009年1月20日

领域
过程 & 实践
主题
敏捷 ,
敏捷技术
标签
离岸 ,
模式与实践

软件开发充满挑战,而且乐趣无穷,然而总有一些因素阻止团队成功完成IT项目。这些因素通常与工具和技术无关,是人阻碍了项目的成功。Venkat Subramaniam日前谈到日常软件开发的事实和谬误。他在最近的CodeMash 2009大会上作了一个主题演讲,谈及开发人员和项目经理为了保证项目成功应该注意哪些因素。

Venkat在主题演讲中提到下面这些软件开发的谬误:

更多的资金和时间可以解决我们的问题:

Venkat说,在开发项目时,清晰的“业务目标”非常重要。他给出的统计数据中提到:在项目中有64%实现的功能很少使用或是从未使用过;项目持续时间越长,成功的可能性就越小。他认为:软件开发人员要开发“有能力、有意义的软件(capable and relevant software)”。

大厂商提供的东西就一定好:

他质疑是否真的有必要用EJB(在某些情况下)让开发工作变得复杂和过于“重量级”。对于这个问题,开发人员应该承担一定的责任(因为使用EJB实现几乎所有的用例)。EJB的大规模采纳,厂商之间的技术竞争(而不是需求)有一定的原因。需求应该决定技术,而不是由技术决定需求。而且在创新出现之前就急着标准化,这样的发展方式不怎么样。RailsSpring类似框架的出现告诉我们:先创新再标准化,由社区而不是厂商驱动,确实可以产生实用、有意义的开发框架。 

我们进行离岸外包是因为可以节省资金:

Venkat谈到目前的离岸外包模型,并对其是否有效提出了质疑。他对比了另一种模型:公司在美国本土完成所有的工作,可是仍然不能成功。所以他提出下面这个问题:为什么让设计人员和开发人员远隔重洋,你就期待能得到不同的结果?很多公司使用离岸外包模型,是因为即使项目失败了,成本的开销却可以比以前少,也就是所谓的“Fail-for-Less”策略。他建议:项目经理应该雇佣聪明能干的开发人员,这些人应该有很强的自学能力,再给他们配备最好的开发工具,这些工具要能把握软件开发工作的本质,而不可华而不实。由精干的开发人员组成的小型团队,其效率要胜过水平低下的开发人员构成的大型团队。他强调:既然离岸外包已经不可逆转,我们就应该充分利用全世界范围内的人才。 

动态语言不安全:

他提到:Java是强类型语言,可如果编码时不小心,还是有可能得到ClassCastException,RubyGroovy也是这样。单靠强类型并不能改进代码质量。编译器有用,但是经常被过于看重,因为没有哪个编译器可以完全验证程序员的意图。他也推荐开发人员应该利用像Scala这样的全新动态语言。 

静态类型是保证代码清晰的关键:

Venkat说:有了纪律,开发人员不管使用哪种语言,都可以编写出易于阅读、理解和维护的代码。为了保证代码清晰易懂、易于维护,他建议使用下列实践:

  • 让方法和类的名称具有可描述性。
  • 编写短小的类和方法。
  • 让团队互动和交流。
  • 编写自动化单元测试。单元测试可以覆盖各种正常和异常的状况,它会强迫你用正确的方式设计。

他也提及单元测试在软件开发生命周期中的重要性。单元测试等同于实际使用的软件,可即使它这么好,很多程序员也都不太愿意用它。单元测试有助于提升代码的质量,如果代码可以测试,它的设计就是好的。在演讲的总结阶段,Venkat强调:要表示出软件的“意图”,这非常重要。

查看英文原文:Venkat Subramaniam on Facts and Fallacies of Everyday Software Development

译者 郑柯 InfoQ中文站总编。做过开发,当过PM,干过销售,搞过市场,最终还是回到媒体。实用的理想主义者,相信:每天改变一点点,这个世界会更好。

Venkat Subramaniam是"Practices of an Agile Developer"一书的作者 发表人 刘江 图灵 发表于
  1. 返回顶部

    Venkat Subramaniam是"Practices of an Agile Developer"一书的作者

    发表人 刘江 图灵

    顺带广告一下,此书是Jolt获奖图书,即将由图灵公司出版。译者是Infoq的编辑。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。