"Everybody in this country should learn how to program a computer,should learn a computer language,because it teaches you how to think."
--Steve Jobs.
就像小学写作文一样,一篇文章的开头如果用“一位伟大的哲人曾经说过”这样的开头会得到不错的分数,再加上一些惨痛的背景“一位身患绝症在生命最后一刻还在为梦想奋斗的哲人曾经说过”会更有煽动性,90分妥妥的。
教主的这句话[1]已经过去多年,随着技术的普及工具的进化越来越多优秀人才开始身兼数职设计开发一肩挑,但现实情况并没有想象中那么乐观,从我接触到的设计师和新人简历来看,仍然有8成以上的设计师在闷着头做设计,不懂怎么code自己的设计稿也不知道背后的实现原理。
平时工作中有很多的合(cheng)作(xu)伙(yuan)伴(men)会建议设计师学习编程,不要求会python,至少会html+css,不要求会ObjC,至少了解Xcode下的项目结构,这也是我所期望见到的结果。学习编程可以让设计师理解一个工程是如何运作的,设计应该怎么进行。就像平面设计师了解印刷技术和纸张重量一样,了解编程是互联网产品设计不可缺失的一个重要环节,只有攻克了这个环节,才能像本专栏第三篇中说的那样成为一个更优秀的人。
学会coding对设计师来说意味着什么?
更好的沟通,设计师和产品经理的沟通过程从一开始单方面执行产品文档到紧密协作一起讨论产品需求,已经在努力将沟通成本降低,熟悉产品目标的设计师更能做到无缝衔接,不仅可以从产品用户市场规划上做到和产品经理一样全能,还会把想法变成设计稿。可顺畅的沟通到了工程师这边基本上就卡住了,沟通只能靠图,每个功能点的表现,每个细节的标注都有可能导致不必要的反复沟通和说明,这也就是为什么我们的合作伙伴那么迫切希望设计师懂开发,这样既能省解释时间,也能影响设计师给出更可行的设计方案。
更好的交付物,图标该怎么切,栅格怎么计算会更具适配性,标注是以盒模型为基础还是以文字边缘为界限……这些设计师想当然的东西害苦了开发小伙伴,同一个位置不同状态的图标因为不是同一个psd切出来的用了不同大小的留白,H1和P之间的间距不统一完全不考虑其他位置相似属性的通用性等等问题在日常工作中比比皆是,即便像kejun这样的前端大神也无法准确的教会所有设计师该怎么标注设计稿,更好的方式仍然是让设计师学会css,统一规划,适度标注。甚至是在类似github这样的协作环境中用pull request的方式由设计师来提交优化方案。
更高效的协作,当你学会html+css,你就知道为什么前端工程师那么注重组件化,为什么尽量少私有定制,如何从设计入手优化页面加载速度,圆角矩形的实现成本有多高,电脑上的网页能不能直接压缩到手机上看,动画效果口述永远讲不清楚等等这样的问题都不会在你身上发生,因为这些问题而修改设计的可能性也会大大降低。
更值钱,从创业团队到大公司,从自由职业者到专业设计公司,那些最优秀的设计师和工程师之间的联系都是很紧密的,无论是项目经验丰富还是个人能力,技术从来都不是阻碍设计师优秀的障碍,同样,不懂技术也不妨碍老牌设计师的水平,但随着科技的进步,前浪被后浪拍死的会比想象中快,不过学习了编程并不意味着就会成为更好的设计师,技术因素的介入,设计师参与的项目类型会更多,也能让设计稿有更多的表现形式,将设计自身的价值放大,设计师的身价也自然水涨船高。
更开阔的视野,学习编程开启了设计师探索未知领域学习跨界知识的第一步,在html+css的基础上我认识了wordpress,自建模板的过程中又学了一点php的皮毛,通过强大的bootstrap我已经可以自己快速搭建网站,而以半个开发者身份参与到公司code项目中让我体验到github的协作之美,在QuartzComposer已经不能满足特定需求的情况下,我又开始了Xcode之旅,这一切的变化并不是为了学习某门语言,而是在选择更好的方式来完善我的设计,感受这个世界上最先进的技术给设计带来的活力。
当然,学习编程并不代表要替代开发人员,也不用对着O'Reilly的动物园一本一本看,从最熟悉的html+css开始学会基础的标记语言,打破设计师对满屏字符的心理魔障,再根据需要一点一点的了解项目中每个功能背后的实现原理,找到最适合自己的“语言”去学习才是更适合的方式。
那么,说这么好听,零基础设计师该怎么开始呢?
如果你身边有愿意手把手教你的好朋友,果断厚着脸皮丢肥皂,让他给你制订学习计划主动要求布置作业按时完成。如果没有,去买一本评分高的入门书籍,就像背GRE一样每个例子都动手写一遍,网上的教程每一个都跟着做一边,像学画画一样从临摹开始。
我在上一家公司时曾给几个设计师朋友开课教html+css,安排了14天的课程,仅供参考。
基础课程,必须完成
1.记住HTML基本结构及基本元素,熟悉id和class选择器,会用chrome查看元素和修改属性
2.了解文本相关css属性
3.了解图片相关css属性,包括页面内图片及背景图片定位
4.盒模型,知道内边距外边距及display属性
5.制作表单
6.制作列表
7.运用之前学过的所有东西,自己写一个简单的页面出来
进阶课程,选择性完成
8.浮动布局
9.Image Sprites,学会如何制作hover时图片切换,并将整个页面的图片做到一张上
10.栅格系统
11.浏览器兼容性及主流问题
12.自适应网页设计
13.CSS动画
14.html5的各种变化
为什么是设计师教而不是前端GG来教,主要考虑的是设计师的沟通语言会比较朴实,能从自身需求出发,会选择教一些实用的方式方法而不是全盘学习,也不太会涉及到一些背后原理的解释,出现bug时也不要非得教会学生怎么修bug而是会让他们不要在意这些细节有空自己再去研究来节省大家时间。
在过去的几年中,我接触过太多优秀但不会编程的年轻设计师遇到职业发展瓶颈,我都会建议他去花时间学习一些额外的知识,除了编程之外,社会心理学、销售技巧、新的平台新的软件都在建议列表之中,跨界已是大势所趋,只有不停的学习才不会在机会到来时不知所措。
广告时间:我所在的团队在招聘交互视觉,地点深圳,看过我之前写的专栏文章应该会知道什么样的人才会比较符合要求,如果你觉得自己想成为这样的人或者已经是这样的人了,请不假思索的联系我,人生巅峰在向你招手哟~
注释
[1]http://www.youtube.com/watch?v=mCDkxUbalCw