Jan 29, 2008

自我们分析-产品的原则和方向

    开发人员经常不理解产品需求。“××功能有用吗?”

    开发人员经常在争论某个功能的具体设置。“××要显示吗?还是不显示吧。还是显示吧。”

    开发人员经常怀疑自己所做产品的价值。“这东西做出来有人买吗?”

    开发人员经常羡慕人家做的东西。“哇,××做的真强~”

    设计人员经常对设计方案左右不定。“这样比较好,那样也有道理。”

    。。。。。。

    上面这些情况仅仅针对我所在的环境,其他公司我不清楚。这些问题看起来似乎很好笑,开发者似乎都在为产品经理着想,似乎都在为设计师着想,设计师似乎搞不清自己到底该设计什么样的东西出来。自己都不认可自己的产品和设计,怎么能做出让用户认可的产品和设计呢?

    “怎样能做出成功的产品呢?”我常绕着这个问题胡思乱想。我们没有完整的团队,只是一个开发组,我也没做过××经理,“没有调查,就没有发言权”,所以从个人理解来说说。

    先说说我觉得一个产品应该怎么去做。

    第一,定出产品的原则和方向。由谁去定?产品经理嘛。定义一个产品的信息来源是啥?从市场, 从他对产品所在行业的理解,从他对用户的理解,最好还有他对产品创新的理解。看千鸟的《产品经理的责任》中有句话,“合格的产品经理才是产品合格的根源”,十分赞同。

    第二,产品的原则和方向出来了,那就开工吧,交给项目组。项目经理要做的,是依据产品的原则和方向去实施,去全力的带动整个项目团队来做好产品。这里边包括N多东西,要考虑时间、流程、成本、人力、质量等等一堆要考虑的东西。

    第三,下面就是项目组成员。简单的分就是设计师、工程师。设计又分,体验设计、交互设计、视觉设计;工程又分,前端开发、后台开发、测试。如果涉及到硬件,还要有硬件工程师和工业设计,这个我暂时还不了解。项目组成员在项目经理的协调下,各司其职,融合的协作来做出产品。

    这么多职能划分,至少差不多这么多人。人不是机器,不会机械的去按照任务做事,去写代码,去测试,去设计。每个人对产品都有自己的想法。大多数人都有一种心理,要证明自己的观点是正确的,希望自己的观点能够影响别人或者某样事情。也许自己并没有察觉,这是一种潜意识。这样的心理带来的是辩论,在形式上可能就是开会。就如《Don't make me think》里说的,web设计团队讨论可用性是在浪费时间,项目组成员讨论产品的方向也是在浪费时间。“没有调查,就没有发言权”,这句话用在这里挺恰当,因为每个人都是从自己的个体角度去谈产品的方向。

    大家有想法,很好。一时间,大家似乎都有市场眼光,都有为用户考虑的心。但想法要有个约束,有个方向。没有方向,那就成了发散式的个人观点。这个方向就是产品的原则和方向。如果项目组成员对产品的原则和方向不清楚,不认可,不理解,那问题就大了,带来的是项目进行过程中的混乱,最终产品可能失败。

    产品的原则和方向是产品经理来敲定,敲定就结束了吗?不,原则和方向的传达更重要。我们不能只得到一句“以家庭和SOHO用户为目标的××”和一张功能列表,我们要知道为什么是这个原则和方向,为什么是这些功能。不仅仅是告诉我们“要怎样”,还要告诉我们“为什么这样”。让所有成员认可、理解产品的方向,打消大家的疑虑。从项目经理到项目组成员,都要对产品有一致的认识。这样带来的好处有这么些:

    对产品,在传达产品原则和方向的过程中,团队成员一样会从技术的角度、从设计的角度提出自己的观点。产品经理也许出身技术、设计或者市场,他们的观点也是有不完善的。这样,产品经理与工程师、设计师的观点相互碰撞、融合,可能会弥补这种缺陷,对产品的完善是很有帮助的。

    对个人,“噢~,我是要做这么一个产品,它会带来××样的价值,会××的影响使用者的工作和生活,我的辛苦和努力是有意义的”。

    对团队,心往一处想,劲往一处使,把上面那句话里的“我”改为“我们”,“噢~,我们要做这么一个产品”。这对于团队的融洽协作十分的好。

    对设计师,在解释什么是这个原则和方向,为什么是这些功能的时候,将给设计师提供十分重要的信息,这些都是重要的设计依据。

    “合格的产品经理才是产品合格的根源”,产品原则和方向的准确传达是产品顺利开发的前提要素。

    PS:想起上上次UCD书友会的时候,我说出我们团队的困惑,振之分析出我们的问题出在交流和沟通上,当时一下子清晰了很多,现在越想越是这个问题。我们貌似没有产品经理,好像项目经理就是在做产品经理的事,问题是,一年也只有一次和项目经理短暂的面对面会议交谈,因为他在台湾。项目的实质进程管理都是由开发组组长在管。这是一个大问题,下次再探讨。

Read more...

Jan 16, 2008

学习从HTML过渡到XHTML

XHTML使用XML的特性来定义和HTML 4.01标准几乎完全相同的标记语言。XHTML比HTML使用起来框框要多很多。

大多数情况下,创建XHTML文档和创建HTML文档没有什么区别。要创建XHTML文档,需要做和知道下面几件事情。

1、声明文档类型

为了能让XHTML浏览器可以正确地解析和显示XHTML文档,XHTML文档首先要声明文档类型,告诉浏览器创建文档所使用的XML版本。然后说明在文档中定义元素的XHTML DTD的版本。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
这里使用的是过渡版的DTD。可以声明为严格版的DTD和过度版的DTD。

2、理解名称空间

XML DTD定义了任意数量的元素和属性名称。这些元素和属性名称都存储在DTD唯一的名称空间(namespace)中。浏览器在读取和解释文档时,会在名称空间中寻找这些元素和属性的使用方法,这样才能正确解释。

XML可以使用多个DTD,因此需要多个名称空间。在创建过渡版本的HTML文档时,如果要同时包含其他符合XML的元素,就要声明其他的名称空间。使用 xmlns(XML namespace的缩写)属性来定义一个或多个可供选择的名称空间。

XHTML文档中至少应该包含一个xmlns属性,以指定整个文档所使用的主要名称空间。
<html xmlns="http://www.w3.org/1999/xhtml">
如果要定义其他名称空间,比如需要使用数学标记,可以再次使用xmlns来定义。
<html xmlns="http://www.w3.org/1998/Math/MathML>x2/X</div">
这种情况下,与XML兼容的浏览器会使用http://www.w3.org/1998/Math/MathML名称空间来判断

标签是依据MATH版本来显示成除法等式,还一句XHTML版本来解释为层。

如果在每次都要显示为除法等式,那这样的xmlns定义效率就低了。更好的方法是在文档的开始处确定和标注名称空间,然后在需要改变的元素前标注一个前缀来调用。如:
<html xmlns:math="http://www.w3.org/1998/Math/MathML">
现在math命名空间可以在随后的文档中简写成“math”,如:
<math: div>x2/X</div>
绝大多数XHTML文档都不需要定义多个名称空间,但应该知道和理解存在着多个名称空间。

3、XHTML比HTML严格之处

XHTML和HTML的最大区别是,XHTML格式良好。

3.1 正确地嵌套元素

就是必须按照打开标记元素的顺序关闭他们。这个很容易理解,不多解释。

XHTML有一个嵌套限制,如下:

<a>标签不能包含其他<a>标签。

<pre> 标签不能包含<img>、<object>、<big>、<small>、<sub> 或<sup>标签。

<button> 标签不能包含<input>、<select>、<textarea>、< label>、<button>、<form>、<fieldset>、<iframe> 或 <isindex>标签。

<label>标签不能包含其他<label>标签。

<form>标签不能包含其他<form>标签。

3.2 结束标签

就是每个宝航其他标签或内容的标签都必须有对景的结束标签。这个也很容易理解,不多解释。

3.3 处理空元素

对于空白标签使用空格加斜杠的格式来表示,如<br />。这个也很容易理解,不多解释。

3.4 区分大小写

XHTML严格区分大小写,使用小写字母定义所有的HTML标签和属性。其他大写或混写标签和属性都不符合规范。

3.5 引用的属性值

所有属性值必须加上双引号。

3.6 明确的属性值

在XHTML中,每个属性都必须有一个值。没有只的属性必须使用自己的名称作为值。例如checked=”checked”。

3.7 处理特殊字符

对于在文章的Javascript和CSS声明中使用的< 和&字符,XHTML要严格的多。因为XML浏览器会简单地删除掉文档中所有<!--和-->中的注释内容,所以隐藏的焦痕和样式表将被删除。虽然可以将脚本放在CDATA中,但旧的浏览器不认识,也会将脚本忽略。所以推荐将脚本和样式保留在外部文件中,然后在文档中使用适当的外部链接来调用他们。

此外,在XHTML中,属性值中的特殊字符一定要用对应的实体。例如&一定要写成&。大于号和小于号一定要写成<和>等。

3.8 id和name属性

id和name属性都用来允许为文档中的任何元素关联一个标识符,以便可以被超链接或脚本调用或使用。

XHTML给id属性非常高的优先权,所以建议使用id属性来绑定文档中的元素。弱国必须要在某个标签中使用name属性,最好在其中也加入相同的id属性。

4、XHTML 1.1

XHTML1.1是以XHTML 1.0的严格的DTD开始的,在这个基础上进行了修改。1.1版本消除了所有不赞成使用的元素,以及仍在web上得到广泛使用的说哦有浏览器扩展。

要注意两个地方:第一,lang属性已经从每个元素中去除,应该使用 xml:lang属性;第二,name属性已经从<a>和<map>中除去,应该使用id属性。最后1.1标准定义了一组新的元素,称为“ruby”文本的印刷功能。这个我没见过,也没怎么弄清楚怎么使用,以后再说明。

以上就是XHTML使用需要知道和注意的地方,其实和HTML区别不大。

至于是否需要和应该使用XHTML,这个已是大势所趋,显然。网上关于web 2.0的介绍和讨论中经常会说到,就不说了。

最后是一个最小化的XHTML文档的例子。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/TR/xhtml1" xml:lang="en" lang="en">
<head>
<title>Your document title</title>
</head>
<body>
...your content goes here...
</body>
</html>

参考:《HTML & XHTML权威指南》

Read more...