为什么设计师应该学习编写代码

通常,在完成了一件网页设计后,设计师的无知都会显露无遗而备受指责。他们把创建网页代码的繁重工作都留给了程序员们。这种现象不只出现在网络开发行业,在软件及游戏开发业也是如此(完整图文版)。残酷的事实就是:开发进度可能会因设计师而停滞不前。为了追求最佳效率,设计师不仅需要描描画画,还需要能把它做出来!本文中,我想与读者分享一些为什么设计师需要学习编写代码的理由。

做现实可行的设计

有了一个最终产品将如何实现的明确印象,设计师将拿出更多实际可行的概念。作为开发进程中不可或缺的一份子,设计师肩负着确保他们的设计能够顺利转移到网络介质上,同时还要考虑其可用性,网页易读性和可实现性。一个对用户友好的网站不仅有简洁清晰的浏览顺序逻辑,还向用户提供一切所需的信息而不会显得咄咄逼人或是杂乱无章。想要知道一种 Web 布局是否可行的唯一途径就是亲自去了解如何建立一个网页。

使沟通更轻松

在几乎所有的设计与实现各自独立的产品中,设计组和实现组从没有满足过对方的期望,尤其是那些无形的产品,比如网站,软件和游戏。这通常归结于产品的期望和产品可行性的相互妥协,目前看来,这是难以完美统一的。解决之道是:设计师应该亲身尝试设计作品的实现,以避免沟通中的混淆,误解和误传。

方便的迭代开发过程

一个实践中的设计不应是绝对的。我的意思是,设计应该是灵活友好的,能够在修改以迎合系统技术限制的同时不扭曲其原有内涵。这些重复但必要的改动只能由原设计师来实现。一个设计师/开发者能够比开发人员把设计重提到设计师手里进行改动更加高效。而且设计师和开发者之间事实上经常如此会产生摩擦。

更好更和谐的结果

我常常喜欢把软件,网络或是游戏开发想成是管弦乐,而设计师是作曲家,开发者是乐团的指挥家。想象一下二者是同一个人将会怎样?交响曲将会是令人惊叹的,迷人的,纯正的!不仅是大师的神作,而且还是其本人亲自指挥的!

缩短开发时间

设计师同时充当程序员的角色意味着设计和编码的进度即使不是同时的也是连续的。结果就是开发周期的缩短谁会不关心效率呢?

设计师更加市场化

现代的设计师需要提升自身的能力以保持个人价值,有一套技能是远远不够的,我们往往需要戴着不同的头衔:设计师,前端开发者,文章作者和项目经理。

通过学习实现你自己的设计,而不是让设计成为开发者手中的孤儿你提升了自身价值。毕竟,在简历中提到设计和编码技能不会有坏处。相反,在这个金融危机时代的企业重组(参见:大规模裁员)和缩减开支的环境下,还能够强调一个人的重要性而免遭解雇。

然而,即使有这么多的理由支持设计师学习编写代码,这里还是有反对的声音。

引用 Lukas Mathis 的一篇有争议性的文章设计师不是程序员(注1)

如果设计师实现自己的设计,他会受制于两个不同的目标:代码的整洁和良好的用户体验。这两 个目标是相互矛盾的。如果你要实现你自己的设计,你必然会为了代码的质量而妥协,这是不利于交互设计的。

实现自己设计的设计师面临着两个问题:他们知道一个很棒的新思路会建立混乱的代码,他们也知道如果改进用户体验,现有的代码会被打乱。这两者相互矛盾,因为用户体验都在于小的细节,而这些小细节最终毁于他们的不忍心使代码变得混乱。

这恰如其分的总结了Web开发纯化者们所采取的强硬立场。他们是守旧派,倡导在设计和开发之间划清界限。显然,设计师为人类创作,开发者为机器创作。因此,用户体验设计师们应该设计出最可行的用户界面并让开发者做出最可行的编程决策。虽然这有一定的道理,但当我研究一个用户界面的时候,我从代码中寻找灵感的努力却以失败而告终。总之,在头脑中有一个技术及可用性限制的正确观念还是更有好处。

写在最后

归根结底,所开发项目的规模可能最终决定着设计师和开发者的角色。一个小型的应用可以由一个项目经理(注2)一手掌控,而一个大型的系统必然需要不同的专业人才!

注1 Mathis-LukasDesigners are not Programmersignore the code
注2 Spolsky-Joel描述了一个叫做设计师兼程序员的职位How to be a program managerJoel on Software

作者 John Urban 是加州大学的大二学生,主修计算机科学。


英文原文 http://sixrevisions.com/web_design/why-designers-should-learn-how-to-code/


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unittest核心要素

1 TestCase 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程, 包括测试环境的准备(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。单元 测试(unit …

iOS内存区域部分内容

目前参考这里: https://www.zhihu.com/question/263823072/answer/273452932 以后整理相关的代码问题。 更多参考资料: https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap 堆栈:https://baike.baidu.com/ite…

php 启动ffmpeg,安装php扩展 ffmpeg-php

首先先下载扩展包扩展下载地址: http://nchc.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2进入 ffmpeg-php目录 进行编译扩展/usr/local/php/bin/phpize./configure --with-php-config/usr/local/php/bin/php-configmake 出错报错情况make: …

armeabi和armeabi-v7a的区别

armeabi默认选项, 支持基于 ARM* v5TE 的设备 支持软浮点运算(不支持硬件辅助的浮点计算) 支持所有 ARM* 设备 armeabi-v7a 支持基于 ARM* v7 的设备 支持硬件 FPU 指令 支持硬件浮点运算 不同手机由于cpu的不同,使用不同的驱动…

浅析Numpy.genfromtxt及File I/O讲解

Python 并没有提供数组功能,虽然列表 (list) 可以完成基本的数组功能,但它并不是真正的数组,而且在数据量较大时,使用列表的速度就会慢的让人难受。为此,Numpy 提供了真正的数组功能,以及对数据快速处理的函…

麻雀虽小,五脏俱全:分析CVS活动情况的小工具(有源码供学习)

最近开发团队发布的版本质量很成问题,追究起来有很多原因,其中之一是CVS的使用不合理, 于是想做个一小工具,分析CVS上每天的活动,以便掌握团队成员对CVS的使用情况。 也许有现成的开源项目可以完成这项任务&#xff…

php如果实现日历的制作,教大家制作简单的php日历

最近的一个项目中,需要将数据用日历方式显示,网上有很多的JS插件,后面为了自己能有更大的控制权,决定自己制作一个日历显示。如下图所示:一、计算数据1、new一个Calendar类2、初始化两个下拉框中的数据,年份…

Spark之 使用SparkSql操作mysql和DataFrame的Scala实现

通过读取文件转换成DataFrame数据写入到mysql中 package com.zy.sparksqlimport java.util.Propertiesimport org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Row, SparkSession} import org.apache.spark.sql.types…

web服务器之iis,apache,tomcat三者之间的比较

IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器。主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现,是基于Apache许可证下开发的SJP语言环境容器,严格得说不能算是一个WEB服务器,而是Apache服务适配器。 …

iOS CAGradientLayer颜色渐变

Gradient:本身就是梯度的意思,所以在这里就是作为渐变色来理解 CAGradientLayer用于处理渐变色的层结构CAGradientLayer的渐变色可以做隐式动画大部分情况下,CAGradientLayer时和CAShapeLayer配合使用,CAShapeLayer这里就不介绍了CAGradientL…

编程要养成的好习惯

1.- DRY: Don’t repeat yourself. DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在…

flink整合java,Flink使用SideOutPut替换Split实现分流

基于apache flink的流处理实时模型44元包邮(需用券)去购买 >以前的数据分析项目(版本1.4.2),对从Kafka读取的原始数据流,调用split接口实现分流.新项目决定使用Flink 1.7.2,使用split接口进行分流的时候,发现接口被标记为depra…

虚机中访问外网;NAT中的POSTROUTING是怎么搞的?

看下docker中是怎么配置的网络 在虚机中访问外网:设定了qemu,在主机上添加路由:sudo iptables -t nat -I POSTROUTING -s 192.168.1.110 -j SNAT --to-source 192.168.0.108 设置了这句话就可以访问外网了。 设置了两个虚拟机: ta…

Fragment结合ViewPager之懒加载

什么是懒加载?为什么要用懒加载?### 1、什么是懒加载 懒加载就是当ViewPager和Fragment结合在一起使用时,Fragment呈现在用户面前时才加载数据,当其从未被呈现在用户面前时,不会执行加载数据的代码。这就是我所理解的懒…

WCF和webservice的区别

微软论坛的斑竹回答如下: 脑内:果然是高大上啊 1.WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。微 软的Web服务实现称为ASP.NET Web Ser…

职场不得不明白的十大定律

帕金森定律 美国著名历史学家诺斯古德•帕金森通过长期调查研究,写了一本名叫《帕金森定律》的书,他在书中阐述了机构人员膨胀的原因及后果:一个不称职的官员,可能有三条出路。第一是申请退职,把位子让给能干的人&am…

php控制器教程,laravel基础教程 -- 控制器

HTTP 控制器简介控制器允许你将相应的路由业务逻辑封装在控制器类中进行有效的管理,这样你不必将所有的路由逻辑集中到routes.php文件中,导致代码的臃肿与难以维护。所有的控制器类都被存储在app/Http/Controllers目录中.基本控制器一个基本的控制器应该…

org.apache.jasper.JasperException: Unable to compile class for JSP:

报错信息: org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class filesSt…

i++和++i

关于自增自减运算,很多书籍没有把问题讲清楚,在C语言里是这样的: 1.后置运算:k表示先运算,后自加。 意思是遇到k了,我先把当前的k的值拿来参加运算,后面再去管它的自加。 那么,“后面”后到什么…

什么样的项目经历会让面试官眼前一亮

很多同学都问过我类似的问题: 咱们《C语言也能干大事》中讲的自己动手写windows优化大师、自己动手写计算器等东西只是写着玩的小玩具而已,这些能用来以后找工作时写到简历中的作品吗?看别人的简历写的“图书管理系统”、“教务选课系统”多有…