编辑推荐
★★本书以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知、乃至自学设计等方面的经验方法与思考感悟。
★★对于程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活等,这些比技术更加难的问题均在本书为读者解答。
内容简介
程序员作为一个职业、也作为一个群体,正逐渐从幕后走向前台,并以他们自己的能力加速改变着世界,也改变着人们生活的方方面面。然而,对于程序员,特别是年轻程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活,这些问题往往比那些摆在面前的技术难题更让他们难以解答。
这本书从一个成熟程序员、一名IT管理者的角度,以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知乃至自学设计等方面的经验方法与思考感悟。其中每一篇文章都涉及一个与程序员息息相关的话题,无论你是即将走上程序员岗位的在校大学生,是刚刚成为程序员的职场新人,还是有一定经验的程序员,这本书都会给你带来启发。
作者简介
陈逸鹤,拥有将近15年的软件开发及IT管理经验,曾先后在易保网络、平安保险、平安银行、AIG公司担任架构师、技术经理等工作。业余时间,他是一名全栈工程师,做着自己喜欢的开源项目,也是本书配套主题网站技匠社(jijiangshe.com)的发起人与创建者。此外,作者以“技匠”为笔名创建的个人博客更是深受年轻程序员们的喜爱,累计订阅读者达数万人。他也是稀土掘金的联合编辑、51CTO专栏作者、慕课签约作者、百度知道日报特邀作者、以及LinkedIn的专栏作者。
目录
*章?谈职业生涯 1
一、写给年轻程序员的10点启示 1
二、那些程序员们后知后觉的职涯经验 7
三、如何招到一名靠谱的程序员 12
四、每个程序员都应该了解的一件事 17
五、程序员的烦恼 22
六、提给年轻程序员的职涯建议 28
第二章?谈实践与认知 35
一、突破程序员思维 35
二、全栈工程师如何快速构建一个Web应用 40
三、如何成为一名优秀的全栈工程师 52
四、为什么每个程序员都应该学习使用命令行 59
五、重构——系统改善之道 63
六、程序员也该懂得“这样就好” 67
七、走出软件开发法则 69
八、我无法写出易读的代码 73
九、一名全栈工程师的Mac工具箱(设计、开发、效率) 78
十、我似乎理解了编程的意义 88
第三章?谈个人发展 91
一、那些优秀程序员身上的共同特质 91
二、成为一名自由程序员 99
三、专家与普通人的区别在于觉察力 105
四、程序员创业?你需要先避开这些坑 109
五、程序员之“美” 113
六、建立自己的个人品牌 117
七、你不应该成为一匹独狼 121
八、未来,有关程序员的10个预言 125
九、你也可以写出优秀的技术博客 130
第四章?谈编程中的教与学 135
一、自学编程之前,你需要知道这些 135
二、为什么我们不再购买技术类书籍 141
三、我眼中的技术干货与湿货 148
四、为什么你应该让你的孩子尽早学习编程 150
五、写作与写代码 155
六、如果要为孩子写一本编程书 158
七、学习编程从“玩”开始 163
第五章?谈自学设计 172
一、自学设计,你真的入门了吗? 172
二、那些永恒的设计原则 181
三、寻找设计灵感 187
四、因为“美”而学习设计 193
五、浅谈企业级产品设计 195
精彩书摘
第五章?谈自学设计
一、自学设计,你真的入门了吗?
1. 写给UI设计初学者们
几乎每隔几天我便能在各类设计网站看到关于自学UI设计的分享文章。这些文章有一个共同的特点,就是描述作者如何从一个零基础的设计小白,通过种种途径,成长为一个熟练掌握PS或AI的设计达人的,或者是分享了一堆有参考价值的设计类网站或工具等。这些文章的单击率很高,因为通过这些初学者眼中的“干货”,能够很容易地进行模仿,并得到技能上的快速提升。
但我想问的是,这真的是学习UI设计的正确方式吗,如果不是,那有没有一篇能够正确引领大家学习UI设计的文章呢?很可惜,我在网上搜了很久,却没有找到那篇我认为是正确的文章。
之所以导致这个问题,我觉得可能有以下两个原因:
这类文章的内容往往比较“湿”,理论性比较强,需要时间慢慢体会,不是拿来就能用的东西,因此文章的单击率往往较低,随着时间的推移,很快便淹没在了那些新鲜出炉的设计干货之中,而无法搜索到了。
那些真正优秀的设计师往往都早已过了初学者那个阶段,他们也更乐于分享自己的设计观点或杰出作品,却很难站在一个初学者的角度来写如何学习设计的文章了。
我也曾和很多设计初学者们一样在自学的过程中有过困惑,走过弯路。今天,我仍在不断地努力学习,去尝试理解设计的本质与内涵。我也希望通过这篇文章,能给那些还在设计门外打转,而不得其门而入的学习者们一些不同的启发。
2. 我为什么自学UI设计
我之所以自学UI设计,其实源于一次失败的创业实验。称它为实验,是因为那并不算是一次真正的创业,我和我的合伙人并没有放弃自己的工作,而是利用一些业余时间来做一个以实习生为主题的社区(那时还是“开心”“人人” 这样的SNS社交平台大行其道的年代)。我那时是一家500强金融集团的应用架构师,因此,便当仁不让地承担起了我们这个团队中程序员的角色,负责完成了整个平台的架构及开发工作。但始终困扰我们的是找不到一名优秀的UI设计师,能够把这个平台推到一个产品的高度。我们也曾经通过朋友介绍或在淘宝上寻找,合作过几位设计师,但由于种种原因(技能问题、理念问题、投入度问题等)都无法达到我们的要求,*后也都不欢而散了。当然,我们的这次创业也*终以失败而告终。现在回想起来,失败的原因有很多,但缺少一名优秀的UI设计师,导致我们的产品迟迟不能推向市场,是这次失败的一个非常重要的原因。
我始终觉得自己还是一个有着产品梦想的人(自我鼓励一下),因此,为了下一次重新启航行时,不再重蹈覆辙,我便决定开始自学UI设计。
3. 自学路上的困扰
我在自学UI设计的道路上,走得并不平坦,遇到过很多困扰和挫折。今天想来,其实*大的障碍正是源于自身对于UI设计本身的理解不够全面和深刻。
概括起来,主要包括以下几个方面:
对于学习UI设计的困难准备不足:由于在此之前,我一直从事企业级应用的研发,因此,那时在我们的圈子里,设计师(我们更多称为“美工”)属于非常边缘的辅助角色。我也想当然地觉得学习那些技能对于我来说是小菜一碟,几周就能搞定。但实践证明,我错了,真正的UI设计远没有想象中的那么容易掌握,直到今天,我都不敢说自己已经掌握了UI设计并能称得上是一名UI设计师。随着我对设计本身理解的加深,对设计师的看法也完全转变了,他们不再是我口中的美工,而是一个能够左右产品优劣,驱动产品研发的关键角色。
认为学习UI设计 = 学习 PS、AI等工具:当决定学习UI设计后,我便开始在网上搜索如何学习UI设计,而“度娘”(百度搜索)给我的答案便是大量的PS、AI等各种设计教程。我也是一路拼命下载,然后不分昼夜地学习。不久之后,我确实能够按照这些学习指南P出一些图,或是做出几个图标来了,但当我尝试独立去做一个完整的UI设计时,却发现自己做出来的东西与那些我所见过的优秀设计仍有着天壤之别,即使是我完全模仿那些优秀作品所做的设计,仍然感觉怪怪的,好像哪里出了问题,自己又说不清楚。这时,我才意识到我的学习方法可能错了,简单地说,就是捡了芝麻丢了西瓜,虽然掌握了一些设计工具技巧,但对真正的设计却一无所知。
审美能力不足:我遇到过的另一个困难便是自身审美能力不足。其实我想说,这不仅是我一个人的问题,可能也是我们这一代,甚至是几代人共同的问题。由于整个教育体系对于学生在美学教育上不够重视,导致我们从小就缺少艺术和美的熏陶,美术课常常会被语数外等主课霸占而成了摆设。由于缺乏对美的感知和判断能力,导致我们很难准确评判自己作品的优劣,更不会知道如何去改善它。放到更大的角度,我们很难像苹果那样设计出伟大的产品来。
4. 重新认识UI设计
在意识到学习方法的错误之后,我便再次寻求了“度娘”的帮助,但这一次我要找的是那些优秀设计师们自己对于设计的感悟、设计心得、推荐阅读的设计类书籍等。我也放下了手中的PS、AI,静下心来进行了大量的阅读。通过这些阅读,我也渐渐了解并重新认识了UI设计。
经过对设计知识的重新梳理,我将所需要掌握的基本设计技能归纳为以下10点。
色彩:需要理解色彩的基本原理及配色方法。色彩很难把控,因为它很容易被过度使用。如果你还是一个初学者,那么应尽可能地使用柔和的色彩,仅在需要强调的地方使用更醒目的色彩。
字体与排版:文字往往占据整个设计内容80%以上的区域,所以理解如何使用正确的字体和排版方式非常重要。请将内容的清晰易读作为你定义字体和做排版的首要目标。
动效:动效能够显著增强一个应用的用户体验。它们能使你的应用更有生气和迷人,前提是你所设计的动效快速、流畅,并且是符合用户预期的。
图标:优秀的图标往往与我们每天见到的事物紧密关联,比如,相机、垃圾桶、云等,能让人一眼就识别出它所代表的功能。因此,应使用那些具有良好辨识度的图标,避免让用户产生混淆。
声效:声效在设计中用得很少,但恰如其分的声效能够提升用户体验。用户不用看到你的应用,仅听到一个熟悉的声音便能识别出你的产品来。
获得设计灵感:设计灵感不是与生俱来的,你需要不断地寻找它。有很多获得设计灵感的方法,下文中我将分享我的一些经验。
设计原则:流行转瞬即逝,但设计中*本质的东西却能永恒。设计大师们很早就认识到了这些,并将它们提炼为设计原则。你要做的是理解这些设计原则,并将它们运用到你的设计之中。
用户体验设计:你需要了解你的用户,这样才能设计出符合用户需求的产品。学习设计心理学,将有利于你设计出更人性化的产品。
基于不同平台的设计:在不同平台设计产品存在很大的差异,你需要了解产品所在的平台(如 iOS、Android),并遵循它们各自的设计规范。
设计工具:设计工具有很多,对于UI设计,我建议使用Sketch 3,因为它是专为UI设计而生的,能给你带来更高的设计效率。
5. 改变设计工具
自从我改变学习UI的方法之后,一直到今天,我每天都会坚持阅读 Designer News(https://www.designernews.co/) 上的每日推荐文章,它能让我了解国外优秀的设计师门都在想些什么或做些什么。在这之中,给我带来的*大改变便是我放弃了原来使用的 Photoshop,而开始使用Sketch来进行UI设计。因为我惊讶地发现越来越多的国外设计师,特别是在初创公司的设计师们开始使用Sketch作为他们的设计工具。
下图为2015年 Substraction.com(http://tools.subtraction.com/interface-design. html)对4000名来自不同领域的UI设计师进行问卷调查后得到的UI设计工具使用情况,Sketch已经大幅超越Photoshop成为设计师们首选的UI设计工具。
实践证明,使用Sketch确实给我带来了极大的惊喜。
小巧快捷:Sketch只有41M,相较于1.6GB的Photoshop来说显得非常小巧。因此,无论是安装,还是启动、运行,Sketch都非常快捷。
专为UI设计而生:Photoshop是一个图片处理工具,它包含了大量的图片处理功能,但这些对于UI设计师来说是多余的,并会成为UI设计师们工作时的噪声,降低他们的设计效率。而Sketch则专注于UI设计,它的所有功能都只为UI设计服务。比如,统一的计量单位Pixel使你不必关注其他计量单位(cm、ml、Picas等),支持HSB、RGB颜色模型和色板功能,使用Symbol可以方便地复用你的设计元素,可针对任意设计元素或元素组导出不同分辨率的图片等等。另外,你不用再面对一个一半功能都不会去碰的工具栏,也完全不用去关心那些与UI设计无关的东西,这使你更容易学习和掌握这个设计工具。
强大的插件功能 :虽然Sketch的核心非常小,但它却提供了非常强大的插件功能。针对不同的设计场景,可以使用不同的插件。比如,你可以使用Sketch Palettes保存你的常用色板,并与朋友方便地分享;使用 Magic Mirror 可以将你的设计方便地展示到不同的实体模型(如iPhone、iPad、书的封面等);也可以使用 Sketch Content Generator 来批量地产生内容,这能为设计师节省大量的时间。此外,还有像Measure、Dynamic Button、Sketch Constraints 等许多非常优秀的插件都可以帮助你大大提升工作效率,从而使你更能够专注于设计本身。
以上只是Sketch所具有的众多优秀特性中的一小部分,网上已经有很多关于Sketch的设计教程和指南,你能通过这些资料,快速地学习并掌握Sketch。我正看到越来越多的如Sketch、Affinity Designer、Affinity Photo 等创新工具对设计工具领域带来的变革,它们不再追求大而全,而更注重于以*简洁、高效的方式服务于不同的设计目的。这也正是互联网思维在设计工具领域的一个体现。因此,如果你是一个UI设计初学者,或者已经是一名UI设计师并正在使用PS、AI等工具,那么我都建议你尝试使用Sketch,因为它是一个能给你带来巨大改变并代表着未来的优秀设计工具。
6. 寻找设计灵感
对于设计初学者来说,经常会为找不到设计灵感而苦恼。而我想说的是,灵感不是与生俱来的,它需要你去不断地寻找。如果没有灵感,你将永远不能开始,更别说去完成一个设计了。下面是我使用的一些方法。
(1)阅读
我没有上过任何设计学校或培训班,因此我的大部分设计知识都是从阅读中获得的。我几乎不读那些30天速成系列的书或关于设计趋势的文章,因为我知道技术的变化是非常快的,正如我现在完全使用Sketch来做设计,而不用PS一样。我更关注设计的本质,书是获得这方面知识的很好途径。
我阅读那些对设计有着深刻思想的人物传记,如《斯蒂夫·乔布斯传》,与设计相关的心理学书籍,如《设计心理学》,与色彩相关的书籍,如《色彩设计》,与字体相关的书籍,如《设计师的自我修养》等。也正是通过这些书籍,让我逐步理解了设计的内涵,从而让我彻底走出了之前学习设计时的误区。
另外,我也会读一些网上的优秀文章,Designer News(https://www.designernews.co/) 是一个使我获得高质量设计文章的优秀网站,在这里我可以看到*新的来自全球设计师的优秀分享。当然,我也在优设(http://www.uisdc.com/)、推酷(http://www.tuicool.com/)、Medium(https://medium.com/) 等网站上阅读那些具有思想性的设计文章,并且通过关注一些优秀的设计师,从他们身上学到了很多经验和启发,给我学习UI设计带来了极大的帮助。
(2)收集优秀设计
另一个获得灵感的方法是收集优秀的设计作品。Ember是我用过的用来收集设计素材的*佳工具。更棒的是它支持订阅功能,可以从Dribbble这样的网站自动下载设计作品,可让我非常方便地浏览和收集。(下图为我的Ember应用截图)
除了Ember之外,我也使用Pintrest(https://www.pinterest.com/)来收集手机上看到的优秀设计,并分类添加到我在Pintrest上创建的Board中。(下图为我的Pintrest主页(https://www.pinterest.com/techmask/))
(3)拥有工匠精神
你所做的每一件事情,它的背后都可以和艺术联系在一起。只要是付出了努力,精心制作,并能反映出作者情感与灵魂的东西都可以称为艺术品。想一想你平时喜欢做的事情,阅读、散步、享用美食或者看展览。这其中的每一件都与一种艺术形式相关联:写作、环球旅行、烹饪、摄影。你会发现当你不断完善某一项技能的同时,其他技能也会得到加强。对于设计来说,上面提到的写作、摄影、旅行等都是对设计能力的很好补充。
二、那些永恒的设计原则
很多人都在寻找那些能够帮助他们快速提升设计能力的方法,但你是否想过,哪些方面会对你的设计产生影响呢?是使用工具的技巧,对设计的理解和态度,还是你的生活习惯呢?我想说所有这些都是决定你的设计是否优秀的因素,而在这之中,对设计本身的理解显得尤为重要。在这篇文章里,我希望通过那些经典的设计原则和设计领域内的一些*佳实践,来尝试启发你对设计本质的理解与认识。
1. 什么是设计,什么才是优秀的设计
设计正在被不断地细分并渗透到各行各业,我所知道的设计师分类就包括:工业设计、图形设计、UI设计、UX设计,等等。那么到底什么是设计,我们又为什么要设计呢?其实,对于所有类别的设计,其*终目的都是相似的,那就是去解决一个特定的问题。设计应源于对问题本身的思考,并做出能够解决问题的相应设计。切忌为了设计而设计,在你动手画草图或原型前,先尝试问问自己对要解决的问题是否已经清楚了,你又打算用什么方式去解决它呢?
什么才是优秀的设计呢?这是一个更难回答的问题,可以说它既有标准又没有标准。我所见到的那些优秀设计绝不是那些包含了高超设计技巧的作品, 它们的优秀之处反而在于设计本身的成熟度上。想一想,就在几年之前,我们手机上还充满了那些拟物化的图标,而今天无论是苹果还是安卓,都在使用更简单、清晰、扁平的图标。虽然说是苹果引领了这样一种设计风格的改变,但这恰恰是设计成熟度提高的一种表现。
2. 尽可能少设计
说到设计的成熟度,就不得不提Dieter Rams,他是德国著名的工业设计师,为德国家电制造商博朗(Braun)设计出很多非常优秀的产品,而他的很多设计更是被苹果拿来模仿。
Dieter Rams所提出的 10条优秀设计原则 (https://www.vitsoe.com/rw/about/good-design)更是被推崇为设计领域的黄金法则。作为一代设计巨匠,他的成就如此杰出,而他所倡导的这些设计原则,即使在30年后的今天,仍然能在设计界产生强烈地共鸣。
在这10条设计原则中的*后一条“优秀的设计是尽可能少设计”更是发人深省。一些设计初学者们的设计作品就像是由很多设计元素堆砌而成的,整个设计作品违反了上面这些设计原则中的一条,甚至几条,*终成为一个失败的设计。你在做设计的过程中,不妨不断地对照Dieter Rams的这10条设计原则,去思考和修正自己的设计。另外,你也需要牢牢记住少即是多的道理。
3. “这样就好”与Redesign
我曾读过几本日本知名设计师的书,比如,《设计中的设计》《设计的觉醒》,《为什么设计》等,从中深深体会到日本这几代设计师在对日本的文化、环境、人文等各方面因素进行全面观察,以及对设计做出深刻反思后,得到的那些适合现代日本、亚洲甚至整个世界的优秀设计思想。其中,原研哉(日本平面造型设计大师)在很多场合都提到了“这样就好”的设计理念——去掉不必要的修饰,更加注重产品的功能、内容,以及给人带去的感受。他将这一理念体现在了他所主导的时尚生活品牌“无印良品”的产品设计之中,受到了年轻一代极大的欢迎。
设计初学者们也应仔细体会“这样就好”的设计理念,并通过不断地实践去达到它。而一种*为行之有效的方法便是Redesign——重新设计(无印良品的很多产品都是通过不断进行Redesign进化而来的,为此,无印良品还专门举办了以Redesign为主题的展览与设计比赛)。对原有(旧的)设计进行Redesign是产生设计变革的一种有效方式。
对于UI设计来说,我同样能在Dribbble上看到很多Redesign的作品(大多是针对那些知名网站或APP的)。Redesign对于那些没有明确设计目标的初学者来说是一种非常好的实践方
程序员的自我修养 电子书 下载 mobi epub pdf txt