HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

打造企业 Flex 团队

  • 2011-08-25
  • 本文字数:5193 字

    阅读完需:约 17 分钟

目录

如果时间和资源充足,打造一个一流的 Flex 团队看起来不是什么难事。然而,Flash 平台是一头不寻常的怪兽——吸引着来自非常不同的背景的开发人员,从旧 Flash Pro 能手到头发斑白的 Java 老兵。集中一致的技能来形成高效且井然有序的团队可能是一项艰巨的任务。

本文既适用于希望在企业范围内组建一个团队的经理,也适用于渴望提升他们的技能以适合大型、复杂项目的开发人员。我将介绍 Flex 社区内一些通用的技能,展示如何结合使用这些能力来为您的新项目打造牢固的基础。在这之后,我将介绍您的团队在运作期间必须做出的一些与工具、自动化和最佳实践相关的关键决策。

注意:此规模的项目一定会受到许多外部因素的影响。这些因素包括组织内现有的基础设施、品牌 / 样式指南、支持的工具和框架、当前的流程,以及上游系统等等。尽管所组建的开发团队会为工作建议最佳工具,许多决策仍需要得到在政治上会满足团队构建最佳产品之所需的经理的支持。诚然,甚至在团队内,也需要不断访问产品负责人,他们可从业务角度明确地判断团队是否和何时发现自身进入僵局。没有这些流程,团队的生产力和项目本身将受到影响。

选择角色

尽管每个可能的团队成员拥有独特的专长和兴趣,但也都存在固有的知识缺陷。出色的团队应该突出所有这些优点,而改进缺点。集中正确的元素来最充分利用该平台,涉及到在整个团队协调这些优势,确保拥有富有挑战、相互尊重且充满刺激的气氛——进而不仅创建了有效的产品,还改进了团队的个人和集体能力。

以下是在打造团队时要重点关注的一些关键技能区域:

注意:这些技能绝不应相互排斥,事实上,很可能您有团队成员表现出了其中的许多特征。

  • 可视化人员
    任何业务线应用程序都会需要非常多的数据表格、自定义 itemRenderer 和图表组件。尽管任何有能力的 Flex 开发人员可能使用过表格和 itemRenderer,但如果团队中至少有一位专家,将会获得长期的回报。您的数据可视化专家的眼光将超越普通的表格和图表。结合优秀的用户体验(UX)团队(我稍后将介绍),可视化人员可以创建一些真正独特的体验,使您的应用程序迅速从竞争者中脱颖而出。这种增值很容易被您的最终用户量化,并在不久之后产生效益。

  • 管理人
    管理人员专门负责自定义控件(比如数据驱动的容器和布局)的细粒度管理,组件生命周期属于管理人员的职责范围。管理人员通常知道所有主要控件的内部工作原理——它们可以轻松地绑定数据——他们可能也会兼任可视化人员的某些职责。如果仔细地审视新功能区域,组件专家(尤其是拥有数据驱动设计经验的专家)将会创造奇迹。

  • 播放人员
    播放人员是您常任的 Flash Player 专家,广泛参与过所有支持平台上的 Flash 工作。因此,您的播放人员通常会理解 Flash Player 自身内的特征,以及如何最佳地利用该指示来为团队服务。同样属于这一职责范畴(但常常贯穿整个团队)的是应用程序配置和性能测试,预防内存泄漏,以及改进 CPU 使用。

  • 科学家
    您团队中的每个人应该熟悉面向对象编程(OOP)且理解抽象、多态性和松散耦合的价值。尽管很重要,但设计模式没有像对 OOP 的牢固理解和从给定问题领域映射对象模型那么重要。也就是说,在最低限度上,每个成员应该牢固理解模型 - 视图 - 控制器(MVC)架构和依赖注入(DI)。科学家将通过重构低效的代码,以及通常找到困难问题的“干净”解决方案,“减掉您应用程序的赘肉”,从而带来增值。科学家常常可以轻松地可视化问题区域,创建图表来描述复杂的交互性——在培训新成员时也很有用。科学家可能无需拥有扎实的 Flex 背景,但应该能够将软件工程最佳实践应用到应用程序中。

  • 协调人员
    协调人员是您的服务专家。协调人员专门负责 Flex 与服务层(整合服务集合,客户端通常通过它通信,它通常会抽象下游应用程序)之间的通信。这涵盖从简单的 HTTP 和 XML 请求到更有效的二进制传输协议,比如 AMF(用于 Flash Remoting)和 RTMP(实时消息传送协议)。如果由于存在大量的并发用户,应用程序必须处理大量实时数据并处理并发性问题,对消息以及 Adobe LiveCycle Data Services (LCDS) 的熟悉将大有帮助。如果协调人员拥有服务层基础架构的第一手经验将很有帮助,他或她也将从理解实现的特征也很有帮助。确实,Negotiator 很可能具有面向服务的背景。

  • 创作者
    您的创作者是团队的框架讨论和最佳实践的执行者。创作者熟知所选的一个(或多个)框架的所有功能,了解自定义和扩展它来适合大型模块化应用程序的方式。通过使用他们的专家经验,您可以最充分地利用微型架构,在整个项目中同时实现明确性和一致性。良好的框架使用也将减少冗余的代码,改进应用程序对新开发人员的可访问性。

  • 构建者
    构建者将管理您 Flex 应用程序的自动编译。随着项目规模的增大,构建脚本的复杂性也会增加。依赖关系管理、资源配置、代码优化、自动化单元测试和代码覆盖率报告都属于构建者的职责范畴。一些团队选择将此职责转交给服务器团队,因为他们常常更加熟悉自动化的构建管理。

  • 架构师
    架构师通常在所有区域都拥有扎实的技能,但框架、OOP 和服务专家将有所帮助。架构师将审视整个团队(或多个团队),并建立整个项目的核心模块 / 包结构对应关系。与框架专家合作,架构师将提供一种可靠且一致的方法来在各种模块之间通信。他们将创建一个强大且可靠的开发环境,其中每个开发人员可轻松构造、重新处理和重新构建各种模块,而不会影响其他团队中的工作。他们也将与服务团队紧密合作来创建一个一致且可靠的 API,爷爷可使用它进行交互。

此外,您的全明星开发团队中还将有一个强大的用户体验(UX)组件。这里不会介绍 UX 的细节,因为仅仅全面的概述就需要一篇文章的篇幅,不过有两个主要角色需要着重说明一下:

  • 设计/UI:创意设计师
    创意设计师的工作是开发应用程序所依靠的详细的插图。创意设计师常常会在 Photoshop 或 Illustrator 中完成此作品,并将它传递给集成者。
  • 设计/UI:集成者
    集成者是创意设计师与团队剩余成员之间的桥梁。在过去,这是通过 Flash 创作工具(包含在 Creative Suite 中)来实现的,可视地构造随后会编译并提供给团队的资产和皮肤。然而,,随着 Spark 和 Flex 4 中新的皮肤模型的出现,该流程现在围绕 Flash Catalyst 进行了改进。在本质上,该工作流包括导入插图、调整它,以及将它转换为然后会到处到一个封装的 XML 格式的组件,开发人员可轻松将该格式集成到他们的环境中。顺便说一下,这个迅速成长的角色也通过 Expression Blend 广泛应用到了 Silverlight 中,是两种平台相对于 HTML5 的一项巨大优势。

注意:Web 模式的 UI 团队可能无法直接适应富 Internet 应用程序(RIA)。而网站通常是静态的(除了高度动态的启用了 Ajax 的 Web 应用程序),Flex 应用程序是多状态的,并且无需重新加载页面即可处理操作。可以需要一定的培训指导来将现有的 Web 团队过渡到 RIA 设计。

行动号召

组建团队只是第一步。新组建的团队将面临着许多关键决策,尽管每个人都将拥有自己的偏好和观点,但为解决一些问题做好准备也没有坏处。

以下是团队面临的一些比较重大的决策:

  • 标准
    您的团队将需要在编码标准上达成一致,而且可以想象,一致性至关重要。尽管这在处理新团队时很容易做到,但在不断添加新成员时很容易被忽略。这些决策不仅仅在于类和包命名约定。它们包含标准方法,从模块加载和通信战略、框架使用、单元测试覆盖率——一直到您团队使用的 IDE 选择和用于归档的 Wiki。可以采用一些工具来确保新代码符合您的自定义标准——Flex PMD 就是最常用的工具。

除了编码,标准可以采用客户端 / 服务器 API、XML 模式、构建管理、用户体验和文档的形式。这些标准应该具有良好的定义并在所有实践和交付结果上良好地执行,以确保整个项目上的一致性。

  • 源控制
    每个开发人员都拥有自己最喜爱的源控制风格——从 CVS 一直到 Git。但是,您很可能会整合一个拥有自己的动机的服务器团队,而且最优秀的解决方案可同时涵盖客户端和服务器。在选择提供商时请留意分支和合并:项目越大,这些因素就会越重要。

可能影响决策的另一个因素是与集成源控制的丰富多样的工具。这些工具包括 IDE 集成(大部分主流提供商拥有 Eclipse 和 IntelliJ 插件)、代码评审软件和项目管理工具。具体来讲,后者有助于平复经常试图跟踪项目开发进度的 BA 的心情。

  • 自动化测试
    综合测试在现代软件开发中必不可少。自动化测试,结合优秀的质量保证(QA)团队,可确保新更改不会暗地里破坏过去的工作。尽管 FlexUnit(未与 Flash Builder 捆绑)良好地提供了单元测试(必不可少),但自动化的 UI 测试可转化为一项竞争优势。就像代码重构或 API 更新可能破坏单元测试一样,更新的设计也可能破坏明确定义的单击路径和交互。尽管如此,您也可以通过大量选项来管理 UI 测试,FlexMonkey 和 QTP 是其中最常见的两个

尽管 Flex 中的自动化单元测试得到了良好支持,但集成测试没有这么好的运气。事实仍然是,Flex 中的自动化集成测试是一片富饶之地,每个团队可以自行确定收益是否高于成本。常常,QA 部门和开发人员自身所执行的手动集成测试就足够了。

要考虑的最后一个方面是性能和负载测试——也就是分别测量应用程序的响应能力和容量。取决于业务需要,这可能是单个开发人员的工作范围,或者更确切地说是整个团队的职责。流行的工具包括 HP 的 LoadRunner 和 WebORB 的 CloudPuncher。

  • 构建自动化和依赖关系管理
    几乎每个项目(尤其是敏捷项目)都会从持续集成获益。要支持这样的工作,构建自动化必不可少——换言之,专门分配一个服务器来定义构建和部署最新的应用程序版本。此流程将必须知道项目具有何种结构,以及存在哪些依赖关系,才能从脚本进行构建。

您团队中在用于构建和依赖关系管理(DM)的系统上一定存在一些竞争产品。两种主要的竞争产品是 Ant(使用 lvy 进行依赖关系管理)和 Maven(使用 Flexmojos,构建 Flex 和 AIR 应用程序的事实 Maven 插件),二者都来自 Java 领域,都具有自己的优缺点。请记住,目标在于实现强健且灵活的解决方案,无论您采用何种方法,请确保每个人都在正常工作并知道所需的职责。

  • 框架
    尽管费时费力的框架辩论充斥着 Flex 世界,但一个(或多个)框架的选择无疑是一项重要决定。除了在应用程序内提供标准化的通信方法,框架的选择还会直接影响您团队的产出——同时包括容量和内容。Cairngorm 2(至少为 vanilla 版本)等旧有提供程序(尽管在社区中具有很高的知名度)在单元测试上已变得声名狼藉,而且随着您的应用程序开始扩展,它们会变得更难管理。另一方面,PureMVC(尽管非常便携)很容易使您的开发人员陷入花费过量开销来提供您应用程序从不需要的丰富功能的困境。

尽管如此,支持控制反转(IOC)的更现代的框架(比如 Robotlegs 和 Parsley)是成熟且经过战争考验的提供程序,可在管理客户端架构方面增添大量价值。无论您的决策是什么,团队都需要识别、列出并遵守一种一致的方法。

  • 服务
    您围绕客户端 / 服务器通信的许多决策都将基于组织内的现有标准、来自架构师的发现,或同时基于二者。不过,Flash Remoting(通过二进制 AMF 协议在客户端与服务器之间发送强类型对象)一定是您将采用的唯一产品,而且这可以通过许多工具(主要为 BlazeDS 或 WebORB)来实现。更加全面和强健的解决方案将利用 LCDS,后者使用 RTMP 协议(因此使用 Flash 消息功能)和一种发布者 / 订阅者模型来将数据推送回连接的客户端。

  • 集成
    对客户端团队和服务器团队的处理绝不简单。鼓励团队在项目早期就一个 API 达成一致,这是确保每个人在服务端将提供的功能和交换期限上达成一致。完成之后,一个全面的 API 可确保客户端团队依照规则执行,无论服务处于何种状态。Flex 中对服务层的快速模拟常常会避免服务器团队在同时处理他们自己的部分时的任何生产力损失。

  • SDK**** 选择
    如果启动一个新项目,您可以接受使用过时的 Flex 3 的唯一原因是您的团队缺乏 Flex 4 的经验。第四版 Flex 中改进的皮肤和布局机制的生产力提升使这一决策变得很简单。除非拥有针对 Flex 3 的成功的业务案例,否则您的团队应该使用 Flex 4 和 Spark。您也会从 Flash Catalyst 获益——它尽管很年轻,但仍然是一个富有前景的工具。Flex 4.5 最近刚发布,它不但改进了 RSL 加载和移动支持,还首次公开了可设置皮肤的 DataGrid。

延伸阅读

Flex 对现代和大胆的开发人员都富有吸引力。为这个迅速发展的平台组建一个井然有序的专业人员团队,可在社区中获得丰富多样的工作背景和经验。如果专注于涵盖平台的关键区域,您将创建一个可利用 Flex 提供的最佳功能的可靠产品。请在开发过程中尽早留意阻碍和困难,您将可以在可预见的未来安全地发布、支持和维护您的应用程序。

关于更多信息,请访问 Adobe 的 Flex 相关产品的完整列表

clip_image004

本作品依据 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授权。

查看原文: Forging an enterprise Flex team

2011-08-25 21:521246

评论

发布
暂无评论
发现更多内容

初识大热的ChatGPT的几点思考|社区征文

穿过生命散发芬芳

ChatGPT

前端学习

阡陌r

Orika JavaBean映射工具使用

京东科技开发者

JAVA开发 京东云 JavaBean 企业号 3 月 PK 榜

如何有效的进行用例评审

京东科技开发者

用例 京东云 代码评审 企业号 3 月 PK 榜

前端学习路径

阡陌r

极氪汽车 APP 系统云原生架构转型实践

阿里巴巴中间件

阿里云 云原生

从零打造你的前端开发脚手架

南城FE

前端 js 前端工程化 脚手架

阿里云消息队列 Kafka 生态集成的实践与探索

阿里巴巴中间件

kafka 阿里云 云原生 消息队列

这款 IDEA 插件太好用了,堪称日志管理神器!

程序知音

如何科学管理技术团队的研发交付速率?

LigaAI

DevOps 研发效能 技术管理 效能度量 企业号 3 月 PK 榜

FL Studio21中文语言版水果编曲工具

茶色酒

FL Studio21

巧用GenericObjectPool创建自定义对象池

京东科技开发者

京东云 API 编排 对象池 京东物流 企业号 3 月 PK 榜

架构师日记-软件高可用实践那些事儿

京东科技开发者

高可用 软件架构 京东云 企业号 3 月 PK 榜

爆款歌曲的养成背后,是哪些因素在推动?

HIFIVE音加加

娱乐 音乐 娱乐社交 热门 华语音乐

经验分享:高德地图如何短时间快速完成春节出行备战工作?

阿里巴巴中间件

阿里云 云原生 函数计算

Matlab常用图像处理命令108例(三)

timerring

图像处理

全面图像编辑:ON1 Photo RAW 2023激活版

真大的脸盆

Mac 图像处理 Mac 软件 图像编辑 raw

GreatSQL 8.0.25-17今日发布

GreatSQL

greatsql greatsql社区

火山引擎DataTester:一个A/B测试,将一款游戏的核心收益提升了8%

字节跳动数据平台

大数据 游戏 AB testing实战 企业号 3 月 PK 榜

订单超时怎么处理?我们用这种方案

阿里巴巴中间件

阿里云 云原生

工作一年,我重新理解了《重构》

阿里巴巴中间件

阿里云 云原生 重构

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?

阿里巴巴中间件

阿里云 云原生

浅谈kafka

京东科技开发者

数据库 中间件 京东云 kafka manager 企业号 3 月 PK 榜

详解AQS的7个同步组件

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

5个高并发导致数仓资源类报错分析

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

社交软件的月活利器:从UGC到互娱

HIFIVE音加加

互联网 软件 社交 科技 社交媒体

Portraiture2023人像免费磨皮插件

茶色酒

Portraiture2023

async 与 Thread 的错误结合

newbe36524

C#

Databend query result cache 设计与实现

Databend

基于 Flink 流计算实现的股票交易实时资产应用

Apache Flink

大数据 flink 实时计算

架构实战营模块八作业

程序员小张

「架构实战营」

打造企业Flex团队_Java_Justin J. Moses_InfoQ精选文章