设计师拥有像素眼,重视外观和易用性,思维比较感性;而程序员写代码的时候更重视功能的实现和性能的提升,思维比较理性。如果程序员懂一些设计的基本原则,比如如何对齐、字体排印、配色和装饰元素,就能理解设计师提高产品观感的设计心理,和朝夕相处的设计师获得同理心。
如果一个团队的开发人员和设计人员视彼此为竞争对手,结果可想而知。如果程序员只盯着自己的一亩三分地看,遇到实现困难的时候就很容易对队友产生敌对心理。他认为设计师不懂自己,只会提出奇奇怪怪的需求。如果有设计的知识,便不会轻易产生这种想法,而会理解其实大家都是在为了共同的目标努力,设计师不是敌人。
小漫画:程序员和设计师-圆角引发的惨案
没有同理心,团队是无法高效合作的。如果开发人员懂得设计师的语言,理解设计师的想法和思路,才可以降低沟通成本,在一起无缝衔接工作。只有工程师和设计师可以理解彼此的出发点和难处,才能有更密切的团队合作。
2、为了做出更棒的产品,影响到更多人
每一年,都有各种形状、尺寸和功能的设备推出,程序员不得不去适应它们。要讨论各种新的交付,包括设计系统、风格指南和模式库的挑战。还要改组工作流程,以响应式网页设计。这是一个自然的和积极的进程。
在这个快速发展的世界里,程序员越来越需要一双懂设计的眼睛:有审美,懂设计的基本组成,还会重新诠释它们。这一组设计作品的外观和行为大概是怎样?如何将为桌面设计的标签集用于移动端?设计人员和开发人员可以共同合作来解决这些问题,才能得出一个优雅、有效、合理的解决方案。
同时,如果你了解了一个设计系统是如何建立和运行的,你就可以写出更简洁、连贯和DRY的代码。你还可以识别设计模式,写出更加模块化、面向对象的CSS。这两点对开发网站至关重要,你才可以开发出更棒的网站/产品,从而改变世界。
Facebook拥有数百名设计师,Google有千余名设计师,而Apple的设计师只有100名左右。因为苹果公司的每一个员工,从工程师到市场,都在某种程度上保持设计师的思维模式。HR也用这样的要求来招人,能够把设计考虑进工作中的人会被优先考虑。苹果的工程师能够以设计为中心出发,所以设计团队可以依靠工程师直接开始造新的App接口,而不用自己先开始画模型。
所以,苹果的出色设计不是由于苹果拥有最伟大的设计师,而是因为那里的工程师文化和组织架构都非常欣赏和支持设计师。那里的每个人都在考虑UX和设计。这才是苹果的产品拥有完美设计的深层次原因。
3、理解设计等于理解用户
小漫画:程序员和用户眼中的彼此...无知的恐龙
总是埋头码代码很容易忘了,我们在做的工作是为真实的用户服务的。程序员的工作是为了解决实际问题,而不是把过多的精力放在技术挑战上面。学习和理解设计有助于提醒自己,理解这样设计要解决什么问题,从而更贴近用户。
事实上,程序员才是一个产品最后的「设计师」,因为当他们开始参与一个项目的时候,将不得不用代码做出影响和修改设计的决定。在产品的前期规划阶段,单靠产品经理和设计师几乎没有时间可以考虑一个网站的所有细节,这些未被考虑到的细节就丢给了工程师。如果工程师懂一些设计知识,可以参与设计师团队最初的讨论,就会考虑地更加全面,及时指出和调整需要折衷设计方案,最大程度地实现用户需求。
在硅谷,在Facebook 和 Quora 这样的公司,程序员不是对代码之外的事情视而不见,设计师更不会提出荒谬的方案而对开发一窍不通。只有整个团队在产品设计和开发过程中的每一个步骤对用户负责,了解其他人在干什么,才能真正的保证产品的质量。
4、增加工作的乐趣
也许,学习设计的最好的理由其实很简单:提升工作的乐趣。换一换脑子,了解设计,能为开发工作带来一些不同的乐趣。如果一位程序员对一个项目的贡献超出了技术方面,是不是更能获得成就感和满足感呢?
所以,程序员们,无聊时逛逛Dribbble学学产品细节吧!和办公桌旁的设计师聊聊天,混一混设计圈子,理解他们的语言和思路,给平凡的生活增加一点新鲜感和好奇心吧!
最后,给有心学习一点设计知识的程序员推荐一些资源,其中有书,也有在线的教程,感谢@豆瓣zhouqun的分享:
1、《写给大家看的设计书》这本书简单易懂,介绍的也都是可以遵循的规则,很适合业余爱好者阅读,非常推荐。
2、 Type is Beautiful 很好的字体博客,里面的基础文章非常值得一看。
3、Thinking with type 关于字体设计的好书,可以在线阅读。
4、《色彩设计的原理》最近出的书,浅显易懂。
5、《版面设计的原理》和 《色彩设计的原理》 是同一个系列,能学到很多关于布局的知识。
6、Designing for the web 包含了字体排印、配色和版式设计等多方面内容,值得一看,可以在线阅读。
7、Twitter &Twitter Bootstrap. 如果你可以把 Twitter 整个网站自己写一遍,一定会受益匪浅。
1、阅读代码这个技能需要程序员能够具备读懂已经存在的代码的能力,这样的能力可以让程序员分析程序的行为,了解程序,这样才能和开发团队一起工作,继承维护或是改进现有的程序。
2、编写程序
编写程序并不包括程序设计。不要以为编程是一件很简单的事情,很多程序员都认为编程只需要懂得程序语言的语法,并把设计实现就可以了。但是这离编写程序还远远不够,使用什么样的编码风格成为编写程序员最需要具备的基本技能。能否使用非常良好的编程风格直接决写了程序员的级别。
3、软件设计
这一能力直接决定了需要吏用什么样的代码技术达到怎么样的功能,而系统架构设计直接决定了软件的质量、性能和可维护性。并不是所有的程序在这一方面都非常优秀,但每个程序员都需要或多或少的明白和掌握这一基本技能。
4、熟悉软件工程
每个程序员都应该明白软件工程是什么东西,都应该知道,需求分析 设计,编码测试,Release和维护这几个阶段。
5、使用程序库或框架
一个程序员需要学会使用已有的代码,无论是标论的程序库,或是第三方的,还是自己公司内部的,都需要学会做。比如:C++中,需要学会使用STL,MFC,ATL,BOOST,ACE,CPPUNIT等等。使用这些东西,可以让你的工作事半功倍。
6、程序调试
程序调试是分析BUG和解决问题最直接的能力。没有人能够保证程序写出来不用调试就可以运行正常 也没有人可以保证程序永远不会出BUG。所以,熟练使用调试器是一个程序员需要具备的基本技能
7、使用IDE
学会使用IDE工具也会让你的工作事半功倍。比如,VC++,Emacs Eclipse等等,并要知道这些IDE的长处和短处。
8、使用版本控制
一定要学会使用版本控制工具,什么叫mainline/trunk,什么叫tag,什么叫branch,怎么做patch,怎么merge代码,怎么reverse,怎么利用版本控制工具维护不同版本的软件。这是程序员需要明的的软件配置管理中最重要的一块。
9、单元测试
单元测试是每个程序都需要做的。很多单元测试也是需要编码的。
10、重构代码
这是每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。
11、自动化编译
程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样整个开发团队可以不停地集成代码 自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。
如果对您有所帮助,望采纳!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)