设计师/产品经理:“他会在万众瞩目中出现,设计 身披金甲圣衣,中那 脚踏七彩祥云,共同咔咔咔把我的设计设计全部实现!” 引子 偶然跟设计师同事聊天,谈到他们眼中的中那程序员应该是什么样的。 大叔:“好的共同程序员不应该三心二意,上来就学很多不同的设计语言,应该精通一门语言!” 小九:“那设计师会在Photoshop,中那Pixelmater,共同Sketch,设计balsamiq等等这些工具中,中那只精通一样,共同而不去学习别的设计吗?” 大叔:“这不一样,编程语言怎么能跟这些工具相提并论,中那比如Sketch比较适合快速实现一些Hi-Fi的共同高保真原型,Photoshop善于处理位图,balsamiq用于画一些Low-Fi的线框图,这些工具都是在不同情境和需求下使用的。” 小九:“我倒觉得这跟编程语言一样一样的。当需要写后台服务端的时候,我们用Java;要快速写工具脚本的亿华云时候用Ruby;要写页面交互的时候用Javascript;要写底层高性能代码的时候,用C或者C++。每个语言都有自己的特点,也有自己的使用场景。设计师应该不会说只要精通Photoshop或Sketch,其它工具就不用学了吧。怎么能为了一滴水,而放弃整片海洋!每一种设计工具都有自己独特的魅力,在学习中都会体会到不一样的乐趣 ” 语言/工具 vs 特性 熟悉PS的都知道,Photoshop中有滤镜、蒙版、图层等一系列特性,我们也往往是先学习工具,顺便就学会了这些特性。然而,其实这些特性比工具本身具有更高的复用性。现在几乎任何一款绘图软件,都会带有图层功能。 程序员也一样,往往是从语言开始,来认识语言的特性的。源码库比如我们学习了C++,顺便知道了Template;从Java中知道了Exception的处理方法,从Javascript中知道了闭包,从Scala中知道了Monad等等。这些特性、思想在程序设计中的应用往往要比语言本身更重要。 除了语言,其实还有一些别的,也是程序员和设计师可以类比的。 思维方式 在程序世界里,有3种比较经典的编程范式:面向过程,面向对象和函数式。 这是程序员的三种不同的思维方式,而映射到设计师,可以理解成平面设计师习惯的平面思维和工业设计师习惯的立体思维。 模式 程序世界中的设计模式,是前人大量经验的总结,是在实战中形成的一些在面对具有一定共性的问题时所采用的***实践。 在产品设计中,也同样有一些模式可以遵守,比如现在的提醒功能,往往会使用内含数字的小红点模式。 再比如说消息通知功能,往往是采用消息中心的模式 。 再比如说一些常用的组件,如输入的文本框,在交互上共有诸如auto suggestion之类的模式。 有了这些模式之后,不管是在做程序设计还是界面设计,都可以有效的降低设计的复杂度。 Clean Code -|- Human Interface Guidelines 大部分情况下,我们不是一个人工作,而是一个团队工作。 作为一个程序员,我可能会阅读、修改团队内任何一个人的代码,这时候一套统一的规范就很重要,而《Clean Code》就是这么一套规范,让我们写出的代码可读性大大提高,便于团队彼此共享编辑代码。 而作为一个设计师,也有这么一套规范,比如iOS中的《Human Interface Guidelines》,或者Android的Material Design,这些规范用于指导我们在做界面设计的时候该如何选择合适的控件,应该有何种样式,如何在界面中合理的布局,并在团队中形成共识,好让大家可以在同一个工程中协调工作。 *** 综合上面说的:看起来程序员和设计师的工作好像差得很远,但其实大家做的事情是有很多相通之处的。细细体味其中的不同,可以填补之前一些unknow unknow的空白,说不定还可以给你现在的工作带来一些新的灵感。 【本文是专栏作者“ThoughtWorks”的原创稿件,微信公众号:思特沃克,转载请联系原作者】 戳这里,看该作者更多好文