Drupal开发体验
“新的”用户
CMS给开发人员带来了新的用户角色—编辑Editor。使得开发人员需要提供强大的编辑功能给他们来创建内容,比如一个公用博客程序,Editor需要的是简单快捷的方式能把他掌握的内容录入系统,并且让最终用户看到。Editor是CMS的使用最多的用户,用户体验对终端查看者和Editor都很重要,设计时必须同等对待。
有时候为了达到页面内容都是可配置的,那么就需要Editor懂得他创建的内容的每一个字段在页面上是怎么显示的,比如说,每个文章都有一个缩略图和一个放在页面最上方的大图片,一个主页面需要显示文章列表并且要求只显示出缩略图,标题和内容的前140个字,那么开发人员就必须考虑Editor是怎么编辑的。
面对上述要求,开发人员(如果BA没这么干的话)应该问:
- 缩略图是由主图片通过系统缩小处理还是由Editor上传,如果是上传,那么规格是什么?
- 显示的140个字是来自于存于另一个字段的简介,还是文章内容的头140字?
很多种方式都可以实现功能,但是我们应该以用户体验为主导,反复推敲追求最佳实践的方式进行开发。对细致的追求一个靠谱的前端工程师的基础。
更侧重页面视觉和信息结构设计
CMS的核心是内容的操作和显示,相比其他项目,我们更加重视起视觉设计和信息结构设计。
UX人员想往前端开发走,前端开发想往UX方向发展。在一个“UX”被神话,写过几篇文章就能称作“体验设计师”的年代,我觉得想要成为UX的人必须专注在一个重视视觉设计和信息结构的平台上,没有必要一定要向前端开发方向发展,因为我觉得UX更需要实践,需要分析,研究已有的内容,用数据来支持你的设计比天赋和品味更加重要。Drupal就是这么一个平台,可以让UX发挥特长,可以把信息结构设计发挥到极致的一个平台。
Drupal拥有强大的建站能力,能够快速的组织内容,而且通过Drupal方式创建出来的功能十分稳定,那么一个站点的成功之处就在于页面布局,视觉效果,页面加载速度,信息结构,阅读和编辑体验。
目前观察来看,客户公司已经开始重视起来UX的作用,并且还专门成立了一个UXTeam专门做所有站点的页面设计,这也是其中一个我们可以合作的地方,把我们公司的UX放到项目中来锻炼,通过实战累计经验,不做网络上各种浮夸的设计师。(PS:目前客户公司好像没有这种需求)
大量前端开发任务
成都Drupal Team目前是TW中国唯一一个几乎所有任务都是前端开发的,目前客户有很多前端工作,主要分成两种:BAU维护工作和功能开发。
客户公司有20多个品牌,所有品牌的网站都是Drupal做的,每个品牌有一些人维护,修复bug,解决IE兼容性问题什么的。也会有添加新的功能,比如创建一个新的内容类型,创建一个View之类的。这些都和HTML,CSS,JavaScript息息相关。Drupal开发和纯前端开发很类似,实现目标的方式非常多,难在对最佳实践的追求,在Drupal中选择最佳的module来实现就是一种最佳实践。
另外,还有一种任务是创建活动页面,在搞一个活动之前创建一些临时页面,做一些表单存储用户注册信息,每次都感觉业务人员到发布前才来关心这个事情,都要到最后赶出一个页面来,搞得大家都很累。我们在推敏捷,可是由于身份十分卑微,正在影响但是还不是很深。
由于有大量的前端任务,在Team里培养前端开发人员是可行的,也是一个难得的机会专注到前端领域,又可以和设计师一起工作,这不就是我一年前的向往么,所以管它php还是ruby了,都是浮云,现在都不惧。何况Drupal对我们来说是挑战和机会并存。
强调功能测试
刚开始使用Drupal的时候十分不习惯,没有人写测试的,大家都是在Drupal系统里面配置来配置去的,但是总体功能上没有我想象得那么糟糕。渐渐才发现,我们如果只是通过Drupal系统配置来开发,那么我们本身就是Drupal的使用者,没有必要花费大量经历去测试创建了一个新的文章类型之后,能不能创建相应的文章,这些点都不是我们的产出物。
而且,如果不编写module,作为Drupal的使用者来看,开发人员根本没有机会写单元测试。那么,首先我们要测试的是什么,有这么几个方面:
- 样式是否正确
- 内容(意义)显示是否正确
- 兼容性问题
- 性能问题,比如在Drupal里面推荐使用drupal_add_css添加css文件,它将会创建一个
@import
语句,如果你直接使用link进行修改,那会破坏了性能。 - 页面跳转是否正确
- 如果有自定义module,需要通过Simpletest编写单元测试
你会发现,很多东西都是功能性的,单元测试都只是集中到自定义的代码上,而且我觉得没有必要要求100%测试覆盖率,主要逻辑cover到就可以了。
关于样式的测试最好还是人工来测,眼见为实的道理谁都明白,当然我们也可以来做自动化测试,主要检测页面跳转,301、302跳转是否正确,form提交是否成功等等。有了测试我们才知道系统状态是什么,也是我们做持续集成的重要组成部分。
持续集成
我们目前也在推广Drupal的C·I,这个在Drupal业界都是一个比较困难的问题,通过4天的培训之后,有一个很重要的转变,就是遇到需求的时候,能从一个Drupal开发的角度来看解决方案。我们学了很多有用的Module,也和培训师聊了下C·I的问题,更加发现我们做的C·I Demo有很多地方可以改进。
如果要推广Drupal的C·I,那么最重要的还是提高开发人员的技能水平,而且问题不出在能力上,客户这边的开发人员总是在说着想改变,但是连Drush都不用,大部分人都关心自己的工作是否完成,而且还积极地在上司面前表现他完成了多么多么重要的工作,Fu…u…u…n…k,瞬间感到技术问题在人性面前都弱爆了。咨询工作最难的地方莫过于此。
-就乱写这么多,完-
Comments