美文网首页软件项目管理心得工具癖程序员
那些拯救程序员的「神器」| 自动化敏捷开发

那些拯救程序员的「神器」| 自动化敏捷开发

作者: 是小岸 | 来源:发表于2017-07-17 17:02 被阅读465次

    程序猿们,如果你感觉到总是在做反复的、机械的工作,你或许可以考虑找些工具帮帮你了。如果你所在的团队号称在做「敏捷开发」,但还是有做不完的重复劳动,也许你们还不够敏捷。

    敏捷开发所谓的快指的是「反应快」。敏捷的优势在于用更短的迭代周期去应对不断变更的需求,持续地交付可用的软件。而要在短短的两周或者一个月内交付可用的软件,同样意味着在这个周期内要完成集成、部署、测试等一系列的工作。如果把这些工作都交给开发人员去做,那还有什么时间好好地开发呢?

    本文将从沟通、开发、质量这几个方面来介绍一些常用和可靠的工具和它们的使用场景,它们不仅仅适用于敏捷开发。一起看看到底有哪些「重复劳动」可以被工具干掉。


    自动化「沟通」

    生命周期管理

    Lifecycle Management

    如果你的项目的需求、任务都还放在长长的Word、Excel文档里,那么是时候找一个项目管理工具了。项目管理工具帮助跟踪和控制项目的整个生命周期:

    • 实时监控项目的进程
      不管是项目成员或是客户,都渴望了解项目的实时进展情况。燃尽图、缺陷数量、项目成员变动、风险值、当前迭代交付的内容,项目管理工具可以实时统计和跟踪这些数据。

    • 了解每个项目成员的工作
      项目管理工具上可以记录任务、用户故事、缺陷,并指派给相应的成员。成员可以记录每项工作所花费的时间、更改工作的状态。开发人员可以了解需求及变更,及时和管理人员甚至直接与客户沟通。

    • 定制开发流程
      多数的项目管理工具提供了定制流程的功能,保证任何团队都能根据自己的计划和流程完成工作。

    • 随时随地的办公
      你会不会在下班时间手痒去查收一下工作邮件呢?或是说你频繁出差、跟外国友人合作,多数的项目管理工具现在都提供移动端App,保证你随时随地的透明化办公。

    常用的项目管理工具有:Jira, Redmine, Trello, Teambition, Visual Studio Team Foundation Server

    消灭重复劳动:手工分析和跟踪项目进度、从长长的文档中找两行关于自己工作的需求
    预计每周节省时间: 5小时

    聊天工具

    Communication Tool

    很多人可能都会用QQ、微信、Skype for Business来交流工作,他们也许是够用了,可是就是有这么一个软件异军突起,专注于企业级的聊天工具——Slack,连微软都不得不做了一个仿制品。Slack这类的聊天工具的特别之处在于:

    • 分组通讯
      不管是全公司的公用频道、项目频道、某项技术交流的频道还是临时成立的讨论组、私信聊天,Slack都清楚地区分开来。这些频道和分组都是永久保留的,不用担心聊天记录的丢失。Slack也提供@的功能,可以让同事不会错过你的发言,他也可以随时查看所有@他的聊天记录。

    • 出色的搜索和文件管理
      Slack提供强大的聊天记录的功能,可以快速定位到之前的某条记录。你也可以对某条记录做星标,保证你不会漏掉BOSS给你布置的任务。Slack也会保存聊天中所有的文件,提供实时的预览功能,你也可以很轻松地查看某个分组下所有的文件。

    • 集成管理工具
      Slack可以接收来自项目管理工具、云存储平台、版本控制平台的各类消息通知。让你专注于工作。

    • 跨平台同步
      跟项目管理工具一样,现代的聊天工具必然是跨各个终端的,保证你随时随地的加班(误)。

    不管是Slack还是Microsoft Teams,都让沟通更加的透明、高效,「边聊天边工作」吧。

    消灭重复劳动:打开各个工具平台查看通知、发送一句话邮件
    预计每周节省时间: 4小时


    自动化「开发」

    版本控制

    Version Control

    版本控制系统是自动化开发的基础。这里不赘述版本控制的重要性了。

    常用的版本控制工具有:SVN, Bitbucket, Gitlab, GitHub, Perforce

    消灭重复劳动:集成代码、版本回溯
    预计每周节省时间: 8小时

    依赖管理

    Dependency Management

    开发中很常见的外部依赖,你还在手动下载和导入吗?如果你不是一个人在开发呢,如果版本更新了呢,这种传统的方式会变成一种噩梦吧。相信还在这样做的团队已经非常少了。

    这里介绍一些常用的工具:

    编程语言 工具
    Java Maven, Ant
    Node.js NPM (Node Package Manager)
    JavaScript Grunt
    iOS SPM (Swift Package Manager), CocoaPods, Carthage

    拿Maven来说,把各类依赖集中地放在「仓库」,只需要简单的配置文件,就可以帮助开发人员自动管理和下载依赖。如果你的工程需要一个集成一些重复利用率很高的依赖的基础模板,Maven也可以做到。

    通常来说,依赖管理工具同时也是构建工具,Maven可以进行编译、单元测试、部署,一个按钮加一条预设的命令脚本,搞定!

    消灭重复劳动:下载和导入依赖、保持最新依赖版本
    预计每周节省时间: 2小时

    持续集成

    Continuous Integration

    由于软件通常是由多个模块组成的,集成它们是生成交付软件的必经过程。怎么持续集成?简单来讲就是把刚刚提到的版本控制和依赖管理结合起来,放到一个平台上,持续地对代码进行合并、审查、测试、编译、部署,可视化的平台还可以有效的减少项目人员的沟通成本。

    持续集成并不是一个工具的名字,更重要的是使用者的思维。如果你所谓的「持续」是每天登录平台手动点一下「构建」的话,那恐怕就南辕北辙了。两点建议:

    • 如果你的工程的编译时间不长,建议配置一个触发器:在每一次主分支代码提交之后,都自动做一次集成,以保证代码提交的正确性,最快速度做出反应。

    • 如果你的工程的编译时间相对较长,或是服务器环境需要相对稳定的版本部署计划,建议配置一个定时器进行集成部署。

    常用的CI工具有:Jenkins, GoCD, Travis CI, Bamboo

    消灭重复劳动:枯燥的集成和审查流程、服务器部署
    预计每周节省时间: 8小时


    自动化「质量」

    静态分析

    Static Analysis

    自动化质量很容让人联想到「自动化测试」,实际上代码审查也可以自动化。静态分析(也叫静态检查、静态扫描)不直接执行程序本身,而是对现有的代码结构进行分析、预测,最终生成一个报告,包含可能出现的缺陷以及对代码规范、质量等的各项评定。

    常用的静态分析工具有:Coverity, CheckStyle, FindBugs, PMD, JSLint, ESLint

    除此以外,很多IDE本身也集成了相关的功能。

    消灭重复劳动:代码规范检查、基本代码审查
    预计每周节省时间: 4小时

    自动化测试

    Automation Testing

    由于敏捷的迭代的特性,每次迭代的交付都必须经过重复性很强的测试,不论是集成测试、回归测试以及基本的性能测试,如果能自动完成,就是再好不过了。

    常用的自动化测试工具有:Selenium, Mocha, QTP, AutoRunner, RFT

    消灭重复劳动:复用率高的手工测试
    预计每周节省时间: 5小时

    静态分析工具和自动化测试工具还可以和持续集成环境配合使用,从而达到真正高校的自动化。


    结语

    减少枯燥乏味的重复劳动,项目成员才能真正的享受在工作之中。当然,别让使用工具成为另一种负担。

    本文提到的工具很有限,欢迎大家留言指正和交流

    想了解敏捷开发,你还可以参考
    《敏捷开发从信任团队开始》
    《「便利贴」里的项目管理 | 利用看板提升沟通效率》

    相关文章

      网友评论

      • kingrein_bj:补充一款常用的项目管理工具,统御项目管理系统,统御项目管理系统是一款真正意义上的项目管理系统,能够从流程、缺陷、问题、需求、计划、任务、配置管理、测试用例、代码文档、知识、报告、质量、产品、项目、团队和个人等维度提供全面的项目管理支持。

      本文标题:那些拯救程序员的「神器」| 自动化敏捷开发

      本文链接:https://www.haomeiwen.com/subject/oyqqkxtx.html