34

WPF 和 Silverlight 丰富的演示功能意味着像我这样的开发人员现在将更频繁地与图形设计师密切合作,就像我的下一个项目一样。

有没有人有任何提示和经验(从两个角度来看)让这件事变得更顺利?

例如,当我最近向设计师提到源代码控制时,我很快就被告知你不能对图形、图像等进行源代码控制,所以这是浪费时间。所以我回答:好的,但是 WPF/Silverlight 中的 XAML 文件呢?

Scott Hanselman 在播客中谈到了这个话题,但他更关注工具,而我对沟通问题/方面更感兴趣。

4

12 回答 12

23

我发现的一件事是,作为开发人员,您如何设计代码会极大地影响设计人员可以用它做什么。通常,您从 Web 下载 Silverlight 或 WPF 示例应用程序并在 Blend 中打开它,只是让 Blend 崩溃,因为代码在设计器中运行不佳。如果它没有崩溃,它就很少看起来像正在运行的应用程序。

我最近在澳大利亚和新西兰的 Tech Ed 发表了关于可以应用于“可设计性设计”的技术的演讲。包括一个简短的列表:

  1. 编写可以利用数据绑定的代码。Model-View-ViewModel 或演示模式非常适合这种情况。

  2. 为您的服务依赖项提供“设计时”存根。如果您要绑定的类进行 Web 服务调用,请确保将 Web 服务客户端替换为一个存根类,该存根类返回设计器在 blend 中使用的“虚拟数据”。这可以通过 IoC 和依赖注入轻松完成,如果 HtmlPage.IsEnabled == false 则注入一个实现。

  3. 通过使用数据绑定,您可以限制 XAML 文件中的“命名元素”数量。如果您在后面编写大量代码,最终会将您的 C# 代码与命名元素(例如 txtName 或 txtAddress)耦合,从而使设计人员很容易“搞砸”。

  4. 使用命令模式而不是单击事件处理程序后面的代码。通过将事件的调用者与处理程序松散耦合,您可以拥有较少命名的元素,并且您可以让设计人员自由选择按钮或菜单项来调用特定命令。

  5. 在 Blend 中测试您的代码!即使您认为自己是一个纯粹的开发人员,您也应该测试您的代码是否可以被工具使用,并努力在设计时获得最佳体验。有些人会争辩说,一个工具不应该影响你的软件设计,就像有些人抱怨“为可测试性而设计”,并且做出软件设计决策只是为了让代码更可测试。我认为这是一件很聪明的事情,也是让真正的设计师-开发人员工作流程顺利进行的唯一方法。

其他提示是从小处着手。如果您的设计师是 XAML、WPF 和 Silverlight 的新手,请先将他们介绍给项目团队,并让他们使用他们熟悉的工具进行一些基本设计。让他们在 Adob​​e Illustrator 中制作一些按钮和插图,然后将其导出到 XAML,并向他们展示如何直接利用他们的设计资源。继续介绍越来越多的产品,希望他们对此感兴趣并希望改用 Blend。这是一个学习曲线,但它肯定是值得的!

祝你好运!

PS:我已经在我的博客http://jonas.follesoe.no上写了关于模式和设计友好代码的分配。您还可以找到指向我的 Tech Ed 演讲视频记录的链接,以及许多进一步阅读该主题的链接。

于 2008-09-09T21:47:23.463 回答
14

我花了 4 个月时间在一个与设计师密切合作的项目上,但他仍然没有掌握 CVS 的基本概念(这不是我选择的源代码控制系统)。我在这里说的是模板文件、JavaScript 和 CSS。他并不愚蠢,这只是其中一件让他的工作变得更加困难的事情,所以他拒绝完全投入其中。

就我而言,我必须真正强调几乎所有的 JavaScript 都依赖于标记,当他将他的纯 CSS、基于 DIV 的布局更改为基于表格的布局时,我没有告诉我我所有的 JS 都在运行打破。

在项目过程中,我自己和设计师经常在工作之余和我相处得很好,并在工作之余踢足球,就我们各自的职责进行了非常激烈的交流。如果我对他不够了解,无法通过这些交流,那么我认为这将创造一个难以忍受的工作环境。因此,我认为在你们双方以及与某种类型的经理或项目主管之间确定项目期间双方的期望是很重要的。

就我而言,最近几乎没有问题,因为 CVS 的情况已经解决,而且他不能随心所欲地改变加价的想法。设计师不是尝试创建模板文件并直接处理它们,而是只处理静态文件,我有责任将它们插入我的模板文件中。

这都是关于沟通和双方的一点妥协。

于 2008-09-09T11:36:51.013 回答
10

这可能有点离题(我专门回答您关于源代码控制和图形的问题),但您可以将二进制数据(图像等)放入源代码控制(我认为在很多情况下应该) - - 它们只是占用更多磁盘空间,您不能使用差异视图以任何有意义的方式分析发生了什么变化,但您获得的是记录每个修订、回滚能力和轻松归档能力的提交消息历史记录(用 SVN 术语标记修订)一起属于特定版本/版本的所有文件(无论是视觉资产、文档、源代码等)。您的构建系统也更容易从源代码管理中获取构建特定版本软件所需的所有内容。

于 2008-09-09T11:27:22.080 回答
6

让平面设计师参与早期的设计和建筑课程。

你想让他们参与进来,以揭示错位的假设,并建立一种合作模式,而不是在墙上来回扔东西。

于 2008-09-09T11:33:09.803 回答
6

最初,设想专业设计师将在 Expression Blend 中工作,而开发人员将在 Visual Studio 中工作,对一组共享的源文件进行更改。虽然这样做当然是可能的(只要您定期仔细检查您没有破坏其他开发人员或设计工具所期望的内容),开发人员社区的许多成员,包括微软内部的一些成员,已经发现保持 Blend 和 Visual Studio 项目活动分开的好处——甚至到手动剪切和粘贴经过仔细重构的 Blend 生成的 Xaml 版本到“官方”VStudio 项目源中,而不是让设计人员和开发人员直接在单个项目上进行操作共享代码库。微软'

Real_World_WPF_DesignersAndDevelopersWorkingTogether

吸取的主要教训之一是,您不能为项目配备完全不了解彼此领域的设计师和开发人员。开发人员需要对 Blend 足够熟悉,以便他们可以为设计人员提供有用的 UI 外壳供设计人员进行装饰,以及设计人员可以设计交互性的有用数据“存根”,并且设计人员需要对他们不了解的开发问题有足够的了解不要做诸如删除控件并用自定义视觉元素替换它们之类的事情——没有意识到它们破坏了与原始控件相关的所有功能。

于 2008-09-16T06:54:48.790 回答
4

微软对设计师/开发人员工作流程结合的愿景在现实生活中似乎肯定会失败。我在一个相当大的 WPF 项目上工作了大约 4 个月,其中涉及 2 个专门的设计资源。以下是微软似乎经常忘记的一些事实。

  • 设计师通常更喜欢使用 Mac(我公司的设计师是 100% Mac - 0% Windows)
  • Blend 不能在 Mac 上运行(就 VM 解决方案而言——设计师通常不喜欢在外国操作系统中运行奇怪的应用程序等令人讨厌的解决方案)。
  • 设计师使用他们的行业工具 - Photoshop 和 Illustrator。时期。
  • 今天日程安排的激进通常不会为设计师提供足够的时间来学习全新的应用程序/设计环境(如 Blend)。

因此,鉴于上述情况,我注意到这创造了一种新的工作类型——要么是一个技术含量很高的设计师,要么是一个图形开明的程序员。基本上,可以采用原始形式的设计资产(通常是 .psd 或插画格式)并根据需要将这些应用到申请流程的人。

我原来就是那个人(图形开明的程序员)。我花了很多时间从 Illustrator 文件中导出 XAML,在必要时手动清理它们,并使这些资产在 Blend 或 VS 中易于使用显示对象。有时我会采用设计元素并使用混合重新绘制它(通常当原始资产是基于位图的并且将其转换为矢量更有意义时)。

我的应用程序可能并不典型——因为它的图形非常丰富,分辨率独立性是主要目标之一,因为它需要在多种分辨率和纵横比上看起来不错(想想在当今的环境中为电视设计的困难——事情有在低分辨率标清中看起来不错,并且可以很好地扩展到高分辨率高清)。

总之,我认为 WPF 是一项了不起的技术,并且绝对是微软朝着正确方向迈出的一步。然而,它并不是将设计师集成到开发过程中的最终解决方案——除非您重新定义设计师的角色。

于 2009-02-10T18:42:19.097 回答
3

我是 Felix Corke,你提到的 hanselman 播客的设计师,所以这里有几点来自真正的创意而不是开发人员。

我花了很长时间才习惯了开发人员工具——几年前我第一次开始做 xaml 工作时,我从未听说过 Visual Studio、C# 或任何类型的源代码控制。它们对我来说就像 Illustrator 或 3DsMax 对你一样陌生。

我最大的一点是不能指望设计师知道开发人员的做法——请准备好做大量的手把手。您不必学习任何新东西,而设计师将进入应用程序开发的一个全新的可怕方面。我把一些解决方案和签到弄得一团糟(现在仍然如此)。

令人高兴的是,我学会了成为一个专注于设计的集成者,而不是一个单纯的创意者,也许这是你需要在项目中包含的角色。这是我为我们的美丽和极客制作的插图 - Mix 的设计师/开发人员会议 - 如果你们中的任何一个在光谱的任何一端都太过分了,那么可能很难理解另一个是如何工作的以及他们应该扮演什么角色。

替代文字

很高兴回答任何具体问题!

ps 你不想在源代码管理中使用 100Mb+ .psd 文件;)

于 2010-02-17T16:44:50.323 回答
2

我非常相信 Integrator 方法,这确实是我必须执行的角色,以使我们的 WPF 工作取得成功。

Laurent Bugnion 对此有一篇文章,描述了我在说什么。Robby Ingebretsen也是这种方法的忠实拥护者。

但基本上,必须有人填补开发人员世界和设计师世界之间存在的“差距”。通常发生的情况是,此人来自开发人员世界或设计师世界。如果他们来自开发人员世界,那么他们可能是具有设计师倾向的开发人员(他们负责外观、应用程序中的视觉效果、屏幕布局等)。如果他们来自设计师世界,那么他们就不会害怕代码,并且喜欢时不时地潜入代码以获得动画或任何闪闪发光的东西。

然而,无论他们来自哪个世界,他们通常都必须培养他们以前从未有过的技能。就我而言,我是喜欢用户界面层的开发人员,因此我会说我是一名具有设计师倾向的开发人员。为了弥补这一差距并与我们的图形设计师进行富有成效的对话,我不得不学习一大堆设计师类型的技能,比如:学习使用 Expression Design、XAM 3D 等。

Shannon Braun 最近在当地的开发者大会上就开发者/设计师的关系以及社区为他们发现的工作流程做了一个演讲。我没有参加会议,但我认为他的幻灯片对此事进行了很好的讨论。

于 2008-10-02T15:04:51.783 回答
2

设计师在多大程度上认为有权远离构建软件产品所涉及的整个工作,这是一个更大的问题,需要解决。不要迎合任何设计师表达的不必知道他们的工作如何融入整体的权利。

在设计师社区中成长起来的那种明显的专业化是软件开发行业面临的最大工业成熟度问题之一。这是一种专业化程度,可以预见地创造更多的返工和更长的周期时间。

这也是开发人员幸福地不知道交互设计和实现的权利感。

极端专业化始终是生产力问题的指数乘数。通过采用促进学习文化的流程从组织上解决它。这是大多数其他生产行业已经实现的成熟度,而软件却严重落后。

在过度专业化、工作队列和缓冲区之间发生切换的开发工作流程中的每个地方。软件仍然是少数几个没有认识到这是我们面临的最大问题之一的行业之一。这在 Microsoft 社区中更加严重,因为由于 Microsoft 通过其工具和指导长期存在过度专业化,过度专业化似乎变得越来越正常。除非您有能力像微软那样在开发工作上浪费那么多钱,否则您应该寻找更了解流程和生产力问题的方法。

因此,不会测试的开发人员和不会编码的测试人员是同一种工业不成熟的表现。

您不会从 TFS 的 Scrum 模板中学到任何这些。微软在让敏捷思维发挥作用方面落后了很多年,即使是在最基本的形式中,现在我们正在进入精益思维,微软距离尝试将精益思维融入其产品线还有三到五年的时间. 不要等待微软告诉你如何塑造团队和工作流程。你现在可以向微软几年后最终关注的人学习。

于 2010-08-05T23:56:06.997 回答
1

根据我的经验,除非(小)团队中的每个人都能够执行此角色,否则集成者或“设计者”角色确实需要参与此过程。这是一种非常罕见的情况。通常你会发现开发人员非常擅长开发,但在设计/可用性方面不是很好,而设计师在美学/可用性方面很出色,但不想或没有受过足够的编码来编码。拥有一个可以跨越两个世界并“说这种语言”的人非常重要。

集成商需要将正在开发的控件与设计师正在创建的设计资产进行协调。在我们当前的项目中,我们有 6 名活跃的开发人员和 2 名来自外部商店的设计师。我是这个项目的集成商,我大部分时间都在 Expression Blend 中度过。开发人员主要在 VS 中工作,创建符合我们产品规范的控件,而设计车间正在设计最终产品的外观。设计师在 Illustrator 中工作。我的工作是获取 Illustrator 文件并从中创建控件样式,然后将它们应用于我们开发团队开发的控件。随着我们转向对 PSD 和 AI 文件提供原生支持的 Blend 3,这项任务变得更加容易。

在应用程序主干的单独解决方案中为您的应用程序创建“外观”非常有帮助,然后稍后将您的 ResourceDictionaries 合并到主应用程序中。您可以获得正确的外观和感觉,而不会太陷入可能仍然不完整的控件中。

于 2009-04-08T16:58:15.577 回答
1

自从您提到 SL 以来,我将假设您指的是 RIA 项目。

我曾与 Adob​​e 一起设计和开发应用程序和服务的许多 RIA 项目。

基于我作为 UX 和视觉设计师 14 年的经验和一些编程经验,我能给你的最好的建议虽然与你们相比可悲。

接受你们不会互相理解。

程序员思考应该完成什么功能,设计师思考功能应该如何表现。

对于开发人员来说,按钮大多是通用的,但对于设计人员来说并非如此。设计师在组合中思考,开发者在框架中思考。

所以要学会理解你的责任是不同的。

您的开发人员确实需要考虑您的代码的通用性,并且不能将所有内容都视为唯一且硬编码的组合。那是除非你能以某种方式自动化这种独特性。

设计者确实需要将应用程序或服务视为某种独特的。这可能意味着按钮不是按钮。可能有不同的尺寸或颜色或其他烦恼。

因此,通过承认您了解设计师的责任并确保他了解您的责任,确保您与设计师建立良好的关系。

这并不是说您对制作世界上最好的应用程序不感兴趣。只是其中一些设计决策需要花费大量时间。

确保你非常清楚设计师应该如何为你提供服务,这样你就不会浪费他或你自己的时间。什么格式,资产?命名?

从一个范式传递到另一个范式所涉及的所有事物。

最重要的是沟通和尊重他们不知道如何做 JavaScript 或如何理解 CVS 的基本思想。

大多数开发人员你不知道如何调整字距以挽救他们的生命,寡妇是什么,如何最好地分层 FireWorks 或创建照片般逼真的图标,想出一个好的标语或让乔用 4 个字平均理解的东西。您不知道什么是网格或对齐方式,并且您倾向于在黑色上使事物变成绿色和紫色。

设计师应该明白,仅仅因为你处理编程并不意味着你是一个机器人,你不能有创造性的想法和解决方案。他还应该尝试至少学习如何编写伪程序,以便他了解制作项目所涉及的内容。

最重要的是。不要开始争论 Mac 与 PC :) 项目因此被取消。

于 2010-01-21T12:43:57.827 回答
0

坦率地说,您应该告诉设计师图像可以、应该并且“将被放入源代码控制中!” :)

这可能有点不合常规,您将无法进行合并或任何类似性质的事情,但会有修订和历史记录等。图像也可以嵌入到资源文件中,该文件也可以进入源代码控制.

XAML 可以(并且应该)置于源代码管理中,并且作为其标记文件,它将受益于所有功能。

至于与设计师合作的技巧,仅凭那条评论就吓坏了我,所以这一切都归结为你正在与谁合作。我会以一种很好的方式解释基本的最佳实践,然后从那里开始。

于 2008-09-09T11:43:58.483 回答