《软件工艺师:专业、务实、自豪》一1.2 新的挑战

1.2 新的挑战

良好的编程实践与技巧可以运用在各种环境和各类系统中,然而对目前的开发者来说,只会写代码是不够的。要想成为开发高手,不仅要写代码、熟悉编程语言及框架,还要学会其他技能。如今的开发者要学会与客户沟通、自动测试并部署、选择可能影响整个业务的技术、与分布式团队协作、帮客户决定需求并排定优先级、汇报工作进度、应对需求的变更与新提出的需求、向潜在客户或合作方展示产品、协助售前活动、评估时间与成本、招纳新的团队成员、设计并更新软件架构、处理非功能性的需求及服务级别协议(Service Level Agreement,SLA)、理解业务目标、做出权衡、关注新技术并寻找更好的工作方式、思考所交付产品对客户的价值,以及其他很多事项。
有人可能会说,优秀的开发者不是一直都在做着上面这些事情吗?也许某些开发者是这样的,但大多数肯定不是。过去,各种工作人员在软件项目中的角色和责任要比今天更具体。开发者不会涉及应用程序的设计与架构,也很少和最终用户打交道,更不会有人放心地叫开发者去做业务分析。
软件开发者只需专注一种工作的好日子很快就要结束了。软件开发者原来的态度是:与编码无关的事情和我无关。现在这种想法已经不受欢迎了。公司变得更加精简,组织结构变得更为扁平,原来那些只有一项专长的人,已经为同时具备多项特长的人所取代。公司想要招募那种不只能把代码写好,而且还能在很多业务领域里帮上忙的开发者。
过去二十年间,随着因特网、移动设备、云端服务及常规技术的发展,很多事情都发生了变化。客户现在需要公司更快地提供产品,而公司在发布软件产品上也变得比原来更加积极。又快又好地修改软件并提升客户所购产品的价值,可以大幅提升公司竞争力。那些极度依赖软件来构建其核心业务的公司,如亚马逊(Amazon)、谷歌(Google)、推特(Twitter)、脸谱网(Facebook)等,很快成为市场主导者。客户不再喜欢开发流程僵化且架构庞大的服务公司,而是偏好小巧而灵活的服务公司。与传统管理风格相结合的瀑布式开发流程已经跟不上市场步伐了。以“快速生产-取得回馈-持续迭代”为特征的精益创业模型(Lean startup model)彻底改变了局面。
项目的规模也有变化。现在很少有不与其他应用程序相结合的程序。你通常不会看见哪个新项目采用客户端-服务器架构(client-server architecture),在每台电脑上部署胖客户端(fat client),并把单一的巨型数据库用作集成点(integration point)。当前的应用程序使用多项技术来构建,有多个集成点,而且以迭代方式开发。原来经常会有仅限内部员工使用的程序制作出来,而现在,更多可供全球成百上千万用户使用的程序制作出来。对许多公司来说,软件产品里出现bug的代价十分高昂,可能会令公司业务崩溃,导致公司声誉大幅受损。
软件业出现的这种新情况,使得软件开发这项职业迫切需要进化。公司想要专业的软件开发者,而不是只会按命令照做的廉价码农。
工业革命过后,产业界形成了一种传统,那就是:强调命令与管控,崇尚深层架构,明确划分管理者与流水线工人。所幸软件业已经不再固守这种传统,而是朝着更灵活、更强调协作的方向发展。软件开发者的角色和责任变得更多元也更重要了,这使得他们能够以开发者这个职业为荣,而不用再像原来那样,必须做一些本职工作以外的事情,才能获得职业生涯的进步。原来的项目计划都是固定而僵化的,都会以严格定义好的开发流程来制作,而现在不是这样了,所以项目开发中可能出现的问题需要重新考虑。扁平架构已经成为常态,而开发者的技能水平和参与范围,也比原来有所提升。于是,现在比原来更加需要灵活且精良的软件产品。
2001年,敏捷软件开发出现,它极大地改变了软件行业。世界各地的公司都开始采用敏捷软件开发,接受这套方式及理念,并改变他们的开发流程与内部结构。然而,即便开发流程有了巨大改观,有些公司依然对交付软件产品的能力不够满意。他们无法足够迅速地响应变化,无法开发出质量高、缺陷少且维护成本低的软件产品,无法使客户满意,也无法招到优秀的开发者。而开发者也苦于维护软件、测试软件,并向软件中添加新功能,对刚刚参与项目的开发者来说,这些问题尤为突出:为什么要强调软件工艺?它究竟是什么意思?足够专业的软件开发者是什么样的?为什么说只采用敏捷开发是不够的?
接下来的几章就要回答上述问题,详细解释软件工艺的含义,以及专业软件开发者所应具备的素质。在谈这些问题之前,先来看看什么叫作敏捷软件开发。

时间: 2024-08-22 14:18:11

《软件工艺师:专业、务实、自豪》一1.2 新的挑战的相关文章

《软件工艺师:专业、务实、自豪》一导读

前 言 那是20世纪90年代中期,我的职业生涯刚刚开始两年,巴西圣保罗有家大型国际公司宣布要一次招纳60名开发者.选拔过程分四个阶段,共需数周时间.第一阶段是三小时技术测试:第二阶段是两周的公司专有技术培训,培训结束后考试:第三阶段是一整天团队互动:第四阶段是最终一轮面试.该公司在一家大报纸上刊登了这一消息,大约有900名开发者应聘.那时我正在一家小软件公司上班,工作非常开心,但我觉得自己已经准备好干一番大事.因为第一阶段安排在周六,所以我决定去试试.不到300名开发者进入第二阶段,我也在其中.

《软件工艺师:专业、务实、自豪》一3.7.6 《软件工艺宣言》及讲解

3.7.6 <软件工艺宣言>及讲解 我们是有理想的软件工艺师,立志践行软件工艺并帮助他人学习软件工艺,以提升软件开发的专业水准.在此过程中,我们形成如下理念:不仅要开发出可行的软件,还要做工精良.不仅要应对变化,还要持续提升软件价值.不仅要注重个体与交互,还要打造专业的社团.不仅要注重客户协作,还要培养高效的伙伴关系.也就是说,在追求左侧价值的同时,我们也认为右侧那些价值是不容忽视的.软件工艺的实质就体现在宣言里"提升专业水准"这一表述之中.有一群经验丰富且才华卓越的开发者

《软件工艺师:专业、务实、自豪》一3.6 软件开发是手艺、生意、工程、科学,还是艺术

3.6 软件开发是手艺.生意.工程.科学,还是艺术 刚参与软件工艺活动时,笔者记得自己总在讨论什么是软件开发.一开始笔者觉得它是门艺术,过了好些年,又感觉它像是一门手艺.但笔者认识的许多人,包括自己所崇敬的一些人在内,却根本不赞同这种看法.有人觉得软件开发是生意,也有人认为它是工程.但很少有人把软件开发当成科学.无论是把软件开发看作艺术.手艺.生意.工程,还是把它看成科学,主张不同的开发者都觉得自己的理由非常充分.只要去听一听这些支持各自论点的理由,你就会发现,其中许多理由都能说得通,虽然某些理

《软件工艺师:专业、务实、自豪》一3.7.2 软件工艺概念走向全球

3.7.2 软件工艺概念走向全球 2009年2月26日,首次国际性的软件工艺大会在伦敦举办.2009年5月,也是在伦敦,Adewale Oshineye为渴望成为软件工艺师的开发者举办了一场研讨会,而Enrique Comba Riepenhausen则开始编写并传阅一本名叫<The Wandering Book>的书,这本书会由一位软件工艺师传给另一位,收集当时大家对软件工艺活动的整体看法和构想.世界各地的软件工艺师把自己对该职业的理解写到书中,并把书寄给另一位软件工艺师.在写下自己的想法时

《软件工艺师:专业、务实、自豪》一3.7 软件工艺的历史

3.7 软件工艺的历史 早在1992年,Jack W.Reeves就提出,软件开发更像手艺而非工程.虽说如此,但笔者依然认为软件工艺的真正发端是Andy Hunt与Dave Thomas在1999年写的<The Pragmatic Programmer:From Journeyman to Master>.2001年,Pete McBreen出版了<Software Craftsmanship:The New Imperative>,这本书中的大部分理念后来都体现在了软件工艺活动之

《软件工艺师:专业、务实、自豪》一3.5 不要拘泥于定义

3.5 不要拘泥于定义 笔者更喜欢把软件工艺当成一种理念或思路,可以用来概括笔者所推崇的每一种具体做法.其实,包括笔者在内的许多开发者都可以说自己正在做着软件工艺所提倡的很多事情,例如认真对待自己的工作,力求上进,保持专业水准,通过帮助客户达成目标使客户满意,向其他开发者学习,分享自己的心得,以及帮助经验较少的开发者等. 只要你也看重上面这些事就好,即便不使用这个称谓,笔者也依然觉得你是软件工艺师.有些人不喜欢贴上这样的标签,甚至并不赞同软件工艺所采用的这套比喻.但是没关系,重要之处在于,我们身

《软件工艺师:专业、务实、自豪》一3.2 维基百科对软件工艺的定义

3.2 维基百科对软件工艺的定义 (软件工艺)"是一种强调软件开发者自身编码技能的软件开发方式.软件开发者发现主流软件业有诸多弊病,如过于关注经济事务而疏于培养开发者的责任心等,于是,他们通过软件工艺来扭转这种局面."笔者不喜欢这个定义.它非常呆板,而且没有抓住软件工艺师(software craftsman)这一身份对于软件开发者的真正意义.

《软件工艺师:专业、务实、自豪》一3.7.5 《软件工艺宣言》的制定过程

3.7.5 <软件工艺宣言>的制定过程 为了使软件工艺峰会不像2002年的软件学徒峰会那样虎头蛇尾,Micah Martin觉得这次应该有一些成果才对.他想要得到一些可以落在纸面上的东西,也就是说,他在这次峰会上的主要目标是编订某种形式的文档.与会者讨论了很多问题,其中包括软件工艺师和软件学徒的含义.他们也讨论了这份决议文是否尚无先例,到底应不应该产生这样一份决议文,若是应该,那这份文件又是针对谁而写,其中需要写哪些内容.大家都把各自的想法画在了白板上面,虽然收集到不少好点子,但白板上面的内容

《软件工艺师:专业、务实、自豪》一3.7.3 软件工艺师交换计划

3.7.3 软件工艺师交换计划 2009年4月,8th Light公司和Obtiva公司在芝加哥试着交换了一批软件工艺师.<芝加哥论坛报>在2009年6月15日报道了这一消息,提到了这次交换行动的许多重要细节.这可以说是两家公司相互致敬的行为,它们都可以借此从对方身上学到很多技术能力.在听到这个行动之后,有些人觉得很不可思议,实际上这恰恰说明,这两家公司看问题的角度和许多人不同.交换计划是由Corey Haines构想出来的,他也为这次计划的组织出了力,他说:"我并不觉得这是两家公司