Facebook是如何设计的[译]
作者:神采飞扬 来源:前端观察 发布时间:2009-09-17 13:10:00
最近,Facebook设计团队在其位于加州帕罗奥多市(Palo Alto)的总部,提到了他们为2.5亿用户设计的原理和方法。 他们特别强调了编写代码的重要性、较早并经常分享设计、从开始到结束都参与到一个项目中、以及不要爱上你的作品等,并多次提到要确保设计师有足够的技术来写代码。
Facebook设计团队致力于产品设计、市场、UI模式、品牌以及前端开发。团队由15名产品设计是、5个UI工程师、5个用户体验设计师、4个交互设计师、以及一个1个内容策划。在这家1000人的公司中,共有25位设计师。
通过写前端代码将设计融入到公司的工程文化中去。
一个团队是如何为2.5亿用户设计的?4个前提:贯穿始终、早分享勤分享、自己动手、不爱上自己的设计。
1) 设计师需要从开始就参与进来:从策划到发布。这与其它公司不同。
Facebook 花费很多时间以确保设计师能够自始至终参与到项目中。
比如:新版首页在3月份发布。需求简化和提高网站中信息传输方式的效率。同时涉及数据结构和视觉结构。
确定视觉效果后,开始写代码制作原型。边编码边设计允许你看到布局内的真实数据是如何工作的。
平衡权重——在主页设计中做一系列的探索,包括不断的在交互和视觉细节上。
让不同的团队在一起——使用了一个静态的模型以传达设计。通常并不提倡静态设计。
拥有一个能写代码的设计师能够了解细节并快速执行。
2) 早分享与勤分享。与团队和用户分享有助于让设计变得更好。
Facebook没有创意总监,而是使用一种从下到上的流程。这对团队分享他们的工作很关键。
开发一些工具以使分享更有效。其中一个工具叫Pixelcloud,充当一个使用评论的在线画廊。自从3月份发布以来,每天有15张图片被添加进来。
简单的来说,工作者包括视觉设计和前端编码以确保Facebook的设计保持一致。所有的工作者都有工作时间来向其它设计师提交反馈。
例如: 隐私向导设计。在开始时,带来12个用户并向他们展示30个原型以确定项目的方向。在开发阶段,带入少一些的用户,并只向他们展示7中原型。
反馈是很好的。尽可能多尽可能早的获取反馈,这有助于节省时间。
3) 自己动手。重要的是你能理解网页代码是如何工作的。所有的设计师都要写一些HTML、CSS,或许还有PHP。
改善设计和开发之间的关系。设计师也能尝试调试代码和创建快速原型。
设计师常常在简化方面做过了头,而工程师则往往提供过多的功能。
理解你工作者的方法,鼓舞你的设计。
快速行动很重要。Facebook 在很多领域有很多竞争者,用户对网络的使用也在不断变化。快速迭代真的很关键。
核心是,Facebook相信最重要的是尽早的发布产品,然后看用户是如何使用的。
原型会说谎。它们缺乏内容和上下文。需要使用真实的内容和页面设计来理解设计是如何工作的。
为了快速转移展开,我们需要尽早制作原型。例如:评论的UI先在内部测试,并在发布给用户前修改。在新闻流程里面,新的设计打破了现存的扫描线。
公司的设计师每周约需要提交40次代码。
4) 不要爱上你的设计。软件只是暂时的——它会一直改变而你需要适应它。
目标就是在持续的改变中保持下来。
不要满足于今天很棒的东西。否则你将落后。作为一个设计师,你需要能够预测并思考接下来的一年将会是什么样的。
在Facebook,最长时间的实际是从2004年开始的前台页面,历时18个月。
例子:全局导航改版。几个月内尝试了很多种想法。甚至在前一天网站头部又变了。
我们的工作从未完成。
对大多数功能做A/B测试。事前清楚的定义好规则,并对它们进行估量。但不要让规则驾驭设计。


猜你喜欢
- python标准库syssys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程
- quiver绘制表示梯度变化非常有用,下面是学习过程中给出的两个例子,可以很好理解quiver的用法from pylab import *c
- 本文实例讲述了C#连接Oracle数据库的方法。分享给大家供大家参考。具体实现方法如下://1、添加引用 System.data.oracl
- 为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,1.if进行处理,在错误发生之前进行预防如果错误发生的条
- 一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函
- 一、if语句if 语句让你能够检查程序的当前状态,并据此采取相应的措施。if语句可应用于列表,以另一种方式处理列表中的大多数元素,以及特定值
- 在Navicat中,时间戳(timestamp)格式的数据表现为:查询某一天的数据SELECT * FROM my_tableWHERE `
- 1、检测登录状态base.pydef checkLogin(func):""" 查看session
- 导语小伙伴们大家好~如今的游戏可谓是层出不穷,NBA 2K系列啊,FIFA系列啊更是经典中的经典,不过小编发现,赛车游戏也是深受大家欢迎啊,
- skimage的transform模块图像的形变与缩放,使用的是skimage的transform模块,函数比较多,功能齐全。1、改变图片尺
- 状态模式状态模式,当对象的内部状态发生了改变的时候,允许对象执行不同的流程。优点:封装了状态转换规则。枚举了可能的状态,在枚举状态之前需要确
- 例如:select (a+b) as c from 表 类型也一致都是varchar型的,可就是显示不正确。 直到concat() MySQ
- 用过jQuery的朋友一定对jQuery中方法的链式调用印象深刻,最近发布的YUI3也支持了方法的链式调用。这是一个非常不错的语法特性,能让
- 概述日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。
- 本文实例为大家分享了readAsDataUrl方法预览图片的具体代码,供大家参考,具体内容如下<html> <head&
- 这段时间在做项目的过程中,遇到一个模块,数据之间的联系很复杂,在建表的时候就很纠结,到底该怎么去处理这些复杂的数据呢,是单表查询,然后在业务
- 前言我们可以给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面等等。我们通过给几个特定视图函数加装饰器实现了这个需求
- 整数在Python中,整数(integer)是一种内置数据类型,用于表示整数值。Python中的整数类型可以表示任意大小的整数,而不需要考虑
- 导航设计是结构层面设计中的主要工作之一,在软件中,导航设计的好坏,直接关系到用户使用是否能够流畅。面对较复杂的导航,我们第一反应是将其简化。
- 首先介绍两种编码方式硬编码和onehot编码,在模型训练所需要数据中,特征要么为连续,要么为离散特征,对于那些值为非数字的离散特征,我们要么