程序员的自我修养

程序员的自我修养 pdf epub mobi txt 电子书 下载 2025

陈逸鹤 著
图书标签:
  • 程序员
  • 软件工程
  • 编程规范
  • 代码质量
  • 技术文档
  • 软件设计
  • 职业发展
  • 技术素养
  • 最佳实践
  • 进阶
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 清华大学出版社
ISBN:9787302468080
版次:1
商品编码:12176448
包装:平装
开本:16开
出版时间:2017-04-01
用纸:胶版纸
页数:200
字数:200000
正文语种:中文

具体描述

编辑推荐

  ★★本书以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知、乃至自学设计等方面的经验方法与思考感悟。
  ★★对于程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活等,这些比技术更加难的问题均在本书为读者解答。

内容简介

  程序员作为一个职业、也作为一个群体,正逐渐从幕后走向前台,并以他们自己的能力加速改变着世界,也改变着人们生活的方方面面。然而,对于程序员,特别是年轻程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活,这些问题往往比那些摆在面前的技术难题更让他们难以解答。
  这本书从一个成熟程序员、一名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对于那些没有明确设计目标的初学者来说是一种非常好的实践方式,你不仅能通过它提升自己的设计能力,而且在提交你的作品之后,还能获得很多其他设计师的点评和建议,从中你能了解自己设计中存在的问题,并快速获得提高。
  另外,我还想强调的一点是Redesign不应仅仅针对设计本身(比如,换一种颜色,加一些动效等),而更应从产品的功能、环境的匹配度、给使用者的感受等更深层次的方面进行思考。其实,Redesign体现的是一种深入反思的过程,相信当你能够将所有这些问题都想清楚时,也就已经完成了设计的一大半工作了。
  4. 遵循设计的*佳实践
  我没有上过任何设计学校,使用Photoshop等工具的水平更是糟糕,但这并不妨碍我做出一个还算不错的设计,因为我会在设计中尽可能地参照那些设计中的*佳实践。在你的能力还没达到打破那些设计准则去进行创新并形成自己鲜明的风格之前,不妨也像我一样遵循那些设计的*佳实践,因为它们往往是有效的。
  (1)神奇的数字3
  你可能已经发现了,在你所看到的许多事物中都包含一个神奇的数字3,比如,大量使用3种颜色配色的网站,斯蒂夫·乔布斯在介绍Apple产品时*多描述产品的3个主要特性(比如 iPhone)。其实,这背后是有原因的:人的大脑一次同时*容易记住3件事情。就像我们记电话号码时,总是将它分为3个数字一组进行记忆。另外,3所构成的形状也*稳定,*容易让人产生美感。因此,在你对一些设计中的数字无法确定时,就使用3这个数吧。
  (2)使用网格来确立秩序
  人们在浏览或阅读一个页面时,都会下意识地去寻找它的规律,以便更好地识别内容。优秀的设计往往能够帮助人们建立这种秩序,方便人们获取想要的内容,而那些不佳的设计则往往会加重人们阅读的负担,*终让你的用户早早地离你而去。
  使用网格进行设计是建立秩序的*有效途径。设计初学者们都可以从使用网格开始,因为它能帮助你做出统一且和谐的设计来。我读过的一本不错的关于网格应用的小册子《秩序之美》,它是由网格的发明者,纽约时报网站的资深设计师Knoi Vinh编写的,对于学习和使用网格进行设计很有帮助。
  (3)用肉眼来判断平衡
  平衡是另一个非常重要的设计原则,对于相同的设计元素,我们很容易使用对称的方法来处理平衡。但是,对于那些在形状、大小、颜色方面都存在差异的元素,我们又应该如何处理这种平衡呢?很多人会使用标尺来确保元素间的大小和位置一致,但你还必须用你的肉眼去验证并进行必要的调整。因为平衡不仅取决于物体的大小,更与它们的形状、颜色、背景等因素有关,相信自己的眼睛和感觉去调整你的设计,使它*终达到整体的平衡。
  (4)应用黄金比例
  使用网格可以帮助我们将元素对齐,但我们又应该如何确认布局中栏位划分的比例,或者在我们确认了一些设计元素的宽度之后如何去决定它们的高度呢?这时,往往可以用到黄金比例——1.618。
  如果你使用的是960Grid这种960px宽的网格系统,并且你希望分出两栏布局时,就可以使用960/1.618=593,593px的位置就是黄金分割点。因此,对两栏的网页布局,将左边栏宽度设为593px,将右边栏宽度设为367px(960-593)就可以了。同样当你确定了一张图片的宽度为600px时,采用黄金比例,它的高度就可以设为370px左右。
  当然黄金分割比例只是在设计上的一个指导,如果你可以打破这个规则又能保证整个设计自然平衡也是可以的。作为一个通常的规则,经常把黄金比例用5∶3来代替,虽然不是非常精确,但是能更直观和方便地在设计中使用。
  (5)恰到好处的强调与对比
  通过强调可以引导用户去使用产品的某些功能,比如:用户注册按钮、产品的购买按钮,等等。但初学者往往会在运用强调这种方法时,出现一些常见的问题:
  在同一个页面中过多地运用强调。
  不分主次的强调。
  ……

前言/序言

  我从来没有想过自己会写一本关于程序员的书,正如你后面将会读到的,这本书中的大部分文章都来自于我平时的杂记(我以“技匠”为笔名在自己的博客和一些专栏中写文章)。虽然也包含一些实用的技术类文章,但大部分是我作为一名程序员,或跳出自己的职业去看待程序员这个群体时,所记录下的心得、感悟。
  在我们所处的这个互联网时代,软件技术正快速地渗透到每一个行业和几乎所有的专业领域,并加速推动着社会的变革与发展。而这一切的背后正是千千万万像你我这样的普通程序员不断努力的成果。然而,我们是否已经做好准备去应对那些挑战,或者说我们是否清楚应该成为一个怎样的自己呢?这些问题曾不断困扰着我,但也正是通过对这些问题的深入思考及不断解答,才使自身获得了进步和提升。回想这十几年来的成长经历,给我*大帮助的莫过于自己对职业生涯、对个人发展、对编程本身,以及对美的本质的追求。
  还是来谈谈这本书吧。由于都是闲时所记,本不成什么体系,但由于出版的需要,*终将全书归纳为五个章节,但我却从心底里建议读者朋友们按照自己的喜好与兴趣挑选阅读,因为它们之间并无关联,也不存在学习某一技术时所必须遵循的顺序,况且相似题材的文章堆在一起阅读反而不那么易于消化。
  *章谈职业生涯:从程序员职业生涯的角度,阐述了我的一些观点和意见。其中,大部分内容是我的亲身经历,还有一些则是从他人身上获得的经验教训。经过多年积累,深深觉得,如果能让更多年轻程序员或是那些即将走上这条道路的在校大学生早些了解这些经验教训,或许能让他们在将来少走些弯路吧。
  第二章谈编程中的实践与认知:讲的则是自己多年的编程实践,以及从中获得的感悟。既有《全栈工程师如何快速构建一个Web应用》《一名全栈设计师的Mac工具箱(设计、开发、效率)》这样的实践类文章,又包含了《突破程序员思维》《我似乎理解了编程的意义》这样看上去很“湿”,却是我真正希望能够启发年轻程序员们去思考编程本身,以及体会编程意义的文章。
  第三章谈程序员的个人发展:以程序员如何变得优秀为话题,从当下有关程序员的各个热点(包括创业、自由职业、建立个人品牌等)入手,为你分析那些优秀程序员身上的共同特质,未来的发展方向,以及值得每一名程序员去做的有益尝试。
  第四章谈编程中的教与学:鼓励大家在通过大量技术干货获取技能的同时,也关注那些优秀湿货对于自己成长的重要性。同时,我也对编程教学提出了一些自己的意见和观点。
  第五章谈自学设计:在我看来,自学设计是对“美”的意识的重新唤醒,而这一章正是我在自学设计过程中写下的心得及学习笔记。在本章中,我与读者朋友们分享的不是那些设计中的应用技巧,而是如何尝试去理解设计的本质,希望读者朋友们也能以这种态度去学习设计,你会逐渐获得感知并创造美的能力,而这反过来也会促进你编程能力的提升。
  除了以上章节内容之外,我还为此书构建了一个主题网站,取名“技匠社”(jijiangshe.com),读者们(程序员或设计师朋友们)可以在此分享和推荐他们认为有价值的工具、资源和教程。目前,网站已收录了会员们分享的将近500个各类资源,涵盖了从前端、移动、后端、数据库、大数据开发到设计中的色彩、字体、图标、模板等各个方面。希望这个网站也能像它的名字所表达的那样,能够成为技术匠们汇聚的地方,并帮助更多的程序员或设计师获得成长。
  写文章对于我来说是一件轻松愉快的事情,我从未感受到写作本身带来的压力,反而是在完成之后,发现会有一些不足之处,而无法给读者带来真正帮助的时候,感到颇为沮丧。但我仍将这些文章收入到这本书里,因为这就是我当前所能达到的思考深度,也是一个匠人经过十几年成长后所形成的完整思想框架。这本书中的一些文章可能让你产生共鸣,一些可能对你有所帮助,而另一些你可能并不喜欢甚至感到厌恶,但这恰恰说明你在阅读的过程中进行了思考,我的想法蹦到了你的脑子里,衍生出你的新想法,这个连锁反应在你脑中反复激荡,*终让你看得更加透彻,思考得更深入,而这才应该是本书的真正目的和意义所在。
  这本书能够完成,需要感谢很多人,他们在我写作的过程中给予了我极大的帮助和鼓励。首先,要感谢指导我完成这本书的清华大学出版社编辑,她在目录的修订,封面与排版的设计等方面给了我很多意见。其次,要感谢我的妻子,她时常鼓励我进行写作,也总是我文章的*个读者。还要感谢我的儿子,由于利用业余时间写作,陪伴他的时间少了很多,但他很懂事,从不在我写作时打扰。此外,我还要特别感谢我的母亲,是她给予了我写作的力量,激励我去做一些更有意义的事情。*后,我想感谢所有我文章的读者,是你们的喜爱促使我不断思考并写出更好的文章,你们的反馈更是我不断修正思想获得提升的来源。
  编者

《代码之上:程序员的哲学与人生》 序言:技术浪潮中的锚点 我们身处一个被代码重塑的世界。从掌中的智能手机到驱动整个社会的庞大基础设施,编程语言编织出的逻辑如同看不见的血管,为现代文明输送着血液。程序员,这个曾经被认为是少数人才能掌握的技艺的实践者,如今已成为推动社会进步的核心力量。然而,在这股席卷一切的技术浪潮中,我们是否常常迷失了方向?当一次次的代码迭代、框架升级、算法优化填满了我们的日程,我们是否停下来思考过,作为一名程序员,我们是谁?我们要去向何方?《代码之上》并非一本教你如何编写更高效算法的书,也不是一本让你掌握最新编程语言的速成指南。它是一次深入内心的探索,旨在为您在纷繁复杂的代码世界中,寻找到属于自己的锚点,抵达更广阔的人生与思维疆域。 第一章:代码的本质——逻辑之外的情感与创造 编程,常常被简化为纯粹的逻辑和数学。但如果我们剥开冰冷的二进制外衣,会发现代码背后跳动的是人类的智慧、创造力和解决问题的热情。本章将带领读者重新审视代码的本质,它不仅仅是指令的堆砌,更是思想的具象化,是逻辑的艺术化表达。 从“机器语言”到“自然语言”的演进: 回顾编程语言的发展历程,从底层的机器码到高级的面向对象语言,每一次飞跃都标志着程序员与计算机沟通的效率和表达能力的提升。这种演进本身就蕴含着人类对抽象思维和表达方式的不断追求。 代码中的“美”与“优雅”: 好的代码,如同精妙的诗歌,有着清晰的结构、和谐的节奏和出人意料的韵律。我们将探讨何为“优雅的代码”,它不仅仅是简洁高效,更是一种对问题本质的深刻理解和对人类可读性的尊重。代码的美学,体现在其逻辑的严谨、设计的巧妙以及可维护性上。 创造力的火花: 编程是解决问题的过程,更是创造的过程。从开发一款全新的应用,到优化一个复杂的系统,每一个项目都承载着程序员的创造力。本章将激发读者对编程作为一种创造性活动的思考,鼓励他们跳出“完成任务”的思维定势,拥抱编程带来的无限可能性。 “Bug”的哲学: Bug,是编程过程中无法回避的挑战。然而,每一次与Bug的搏斗,都是一次深入理解系统、锻炼逻辑思维和提升解决问题能力的绝佳机会。我们将从哲学的角度解读Bug,将其视为改进和学习的催化剂,而非单纯的技术失败。 第二章:程序员的思维模式——解决问题的艺术与批判性思考 程序员的训练,无形中塑造了一种独特的思维模式。这种模式不仅适用于编码,更能在生活的方方面面发挥巨大的作用。本章将深入剖析程序员的思维特质,并探讨如何将其内化为更具普遍性的解决问题能力和批判性思考习惯。 分解与抽象: 面对复杂的问题,程序员的第一反应是将之分解为更小、更易于管理的部分。这种“分而治之”的思想,在项目管理、生活规划乃至人际关系中都至关重要。同时,我们也将探讨抽象的重要性,如何从具体事物中提炼出普遍规律,构建模型。 逻辑推理与因果分析: 编程要求严谨的逻辑推理,从输入到输出,每一步都必须有清晰的因果关系。我们将学习如何培养这种严密的逻辑思维,识别和分析事物之间的因果链条,避免主观臆断和非理性判断。 假设验证与迭代优化: 在软件开发中,我们不断提出假设,通过测试来验证,并根据结果进行迭代优化。这种“试错—反馈—改进”的循环,是科学方法的核心,也是高效学习和成长的关键。本章将引导读者将这种思维模式应用于生活的各个领域。 拥抱不确定性与“灰度”思维: 真实世界并非非黑即白,许多问题存在模糊地带和不确定性。程序员在处理复杂系统时,往往需要接受这种“灰度”的存在,并在不确定的环境中做出决策。我们将探讨如何培养“灰度”思维,在权衡利弊、接受不完美中找到最佳解决方案。 批判性审视: 面对信息爆炸的时代,辨别真伪、独立思考的能力尤为重要。程序员习惯于质疑、验证,而非盲从。本章将强调批判性思考的重要性,鼓励读者不轻易接受既定观点,而是通过逻辑分析和事实依据来形成自己的判断。 第三章:职业生涯的攀登——技术深度、广度与个人成长 技术是程序员的立身之本,但单纯的技术钻研并不能保证长远的职业发展。本章将探讨如何在技术深度和广度之间找到平衡,并围绕个人成长,勾勒出一条可持续的职业发展路径。 “T”型人才的构建: 深入某个技术领域的“深”与触及多个技术领域的“广”,如同“T”的上下两横。我们将探讨如何规划自己的技术学习路径,在夯实核心技术的同时,拓展知识边界,成为一名“T”型人才。 终身学习的姿态: 技术日新月异,停滞不前意味着被淘汰。本章将强调终身学习的重要性,分享有效的学习方法,以及如何保持对新技术的好奇心和学习的热情。 从“码农”到“架构师”的蜕变: 职业生涯的进阶,不仅仅是代码写得更多,更是思维方式和视野的转变。我们将探讨如何从执行者转变为设计者,从解决局部问题到设计全局系统,如何培养技术领导力和决策能力。 软技能的加持: 沟通、协作、表达、项目管理……这些看似与代码无关的软技能,在现代软件开发团队中扮演着至关重要的角色。本章将强调软技能的重要性,以及如何将其与技术能力相结合,提升个人价值。 职业倦怠的应对与心理韧性: 高强度的工作、持续的压力、快速迭代的技术……程序员很容易面临职业倦怠。我们将探讨如何识别和应对职业倦怠,培养强大的心理韧性,保持对工作和生活的热情。 第四章:程序员的生活哲学——平衡、意义与自我实现 编程不仅仅是一份工作,更可能成为一种生活方式。然而,如何在代码的逻辑世界与真实的生活之间找到平衡,如何赋予工作以更深远的意义,如何最终实现自我价值,是每个程序员都需要面对的课题。 “工作与生活”的平衡艺术: 并非简单的“996”或“007”,而是如何在有限的时间里,高效地完成工作,并留出足够的时间给自己、家人和爱好。本章将探讨构建健康工作生活平衡的策略。 代码的意义与社会责任: 我们的代码,在为用户创造价值的同时,也在潜移默化地影响着社会。本章将引发读者对代码背后社会责任的思考,如何编写负责任的代码,如何利用技术为社会做出积极贡献。 技术之外的情感与连接: 程序员也拥有丰富的情感世界,需要与他人建立深厚的情感连接。本章将鼓励读者在代码之外,积极拓展人际关系,培养兴趣爱好,丰富精神世界。 “极简主义”与“正念”的启示: 从简化代码到简化生活,从专注于当下到活在当下,极简主义和正念的理念,可以帮助程序员摆脱物质和精神的束缚,找到内心的平静和满足。 定义自己的“成功”: 成功并非只有一种标准。本章将鼓励读者跳出外界的定义,结合自己的价值观和人生目标,去定义属于自己的“成功”,并为之不懈努力。 结语:代码之外的人生,更精彩 《代码之上:程序员的哲学与人生》是一次邀请,邀请您在敲击键盘的间隙,抬起头,看看代码之外更广阔的天地。它不是一本“解决问题”的工具书,而是一本“开启思考”的引路人。愿这本书能帮助您在编程的世界里,找到前行的方向,在人生的道路上,活出更精彩的自我。您的代码,是您思想的延伸;而您的生活,则是您智慧的升华。让我们一起,超越代码,抵达更辽阔的生命之海。

用户评价

评分

我最近一口气读完了这本书,感觉自己像是经历了一场关于编程的“心灵洗礼”。我之前一直陷在写代码、改 bug 的循环里,很少停下来思考“我为什么在这里”、“我想要成为什么样的程序员”。这本书就像一盏明灯,照亮了我前行的方向,也让我看到了编程世界更广阔的可能性。 书里关于“技术选型”的章节,让我印象特别深刻。我过去总是习惯性地使用自己熟悉的技术栈,或者盲目跟风流行框架。但这本书让我明白,技术选择并非儿 মস্তি。它强调了理解项目需求、评估技术成熟度、考虑团队熟悉度等多个维度,从而做出最合适的决策。这种“权衡利弊”、“理性分析”的态度,是我在实际工作中常常忽略的。 而且,这本书对于“代码质量”的探讨,也让我大开眼界。我一直以为只要代码能正常运行,就是好代码。但作者用非常精炼的语言,解释了“可读性”、“可维护性”、“可测试性”的重要性,并且提供了很多实用的建议。读完这一章,我感觉自己写出的代码,不仅仅是完成任务的工具,更是一件值得精心打磨的艺术品。 最令我欣喜的是,这本书没有止步于技术层面,而是将目光投向了程序员的“软技能”和“职业素养”。它谈到了如何有效地与产品经理、测试人员沟通,如何处理团队中的冲突,甚至是如何进行有效的自我管理和时间规划。这些内容在我看来,比许多纯粹的技术书籍更加宝贵,因为它们直接关系到我在团队中的价值和个人的成长。 我非常喜欢作者的写作风格,他没有用那种枯燥乏味的理论,而是通过大量的案例和故事,将深奥的道理讲得通俗易懂。读这本书,就像在听一位经验丰富的前辈分享他的经验,让你感觉既亲切又受启发。它不是那种“看完就忘”的书,而是会让你在未来的工作中,不断回想起其中的金句和道理,并从中受益。 总而言之,这本书不仅仅是一本关于编程的书,它更是一本关于“如何成为一名优秀的程序员”的指南。它让我看到了编程的深度和广度,也让我对自己的职业道路有了更清晰的认识。如果你也和我一样,渴望在编程的世界里不断成长,这本书绝对不容错过。

评分

这本书给我带来的最大震撼,在于它打破了我过去对“程序员”这个职业的刻板印象。我一直以为,程序员就是埋头苦干,写代码的机器。但这本书让我看到了,程序员其实是一个需要高度智慧、创造力、以及良好沟通和协作能力的职业。它不仅仅是关于“写代码”,更是关于“如何思考”、“如何解决问题”、“如何与人合作”。 书中关于“如何构建健壮的系统”的论述,让我受益匪浅。我之前总是在某个功能点上纠结,而这本书则引导我去思考整个系统的架构和设计。它强调了“模块化”、“解耦”、“抽象”等概念,让我明白,一个好的系统,就像一个精密的机械,各个部件之间配合默契,易于维护和扩展。这种宏观的视角,让我开始重新审视自己的编码习惯。 我特别喜欢书中关于“拥抱失败”的章节。我过去总是害怕犯错,因为害怕被批评,害怕影响项目进度。但这本书告诉我,失败并不可怕,可怕的是不从失败中学习。它鼓励我去勇敢尝试,去犯错,然后从错误中吸取教训,不断进步。这种积极的态度,让我感觉自己的压力小了很多,也更有勇气去挑战新的事物。 而且,这本书对于“持续学习”的重视程度,也让我深感认同。它没有给出具体的学习路径,而是强调了一种“学习的姿态”。它让我明白,技术是不断发展的,唯一不变的就是学习。它鼓励我去保持好奇心,去探索新的领域,去不断更新自己的知识体系。这种“活到老,学到老”的精神,让我对自己的未来充满了信心。 我还会反复阅读书中的一些片段,尤其是关于“程序员的职业道德”和“如何应对职业倦怠”的部分。作者用非常人性化的语言,道出了许多我们可能遇到的困境,并提供了切实可行的建议。它让我感受到,我不是一个人在战斗,而是有很多人和我一样,在努力成为更好的自己。 总的来说,这本书为我打开了一扇通往更深层次编程世界的窗户。它让我明白,成为一名优秀的程序员,需要的不仅仅是技术,更是一种思维方式、一种人生态度。它让我更加热爱我的职业,也让我对未来充满了期待。

评分

这本书简直太出乎我的意料了!我原本以为它会是一本枯燥的技术手册,充斥着各种晦涩难懂的代码和算法,结果却让我爱不释手。它更像是一本关于编程哲学的散文集,作者用一种非常人性化、接地气的方式,探讨了程序员在职业生涯中会遇到的各种困惑和挑战。我特别喜欢它在分析具体问题时,不仅仅停留在技术层面,还会深入到思维模式、工作习惯、甚至个人成长等更广阔的领域。 比如,书中有一章讲到“如何与非技术人员沟通”,我简直是醍醐灌顶!我常常因为解释不清技术概念而感到沮丧,也常常因为同事不理解而产生误会。这本书并没有直接教我“说什么”,而是从理解对方的视角出发,去思考如何用更易懂的比喻、更贴切的例子来传达信息,甚至还强调了同理心的重要性。读完这一章,我感觉自己像打开了新世界的大门,不再害怕与人交流,反而开始享受这种跨界沟通的乐趣。 而且,这本书的叙事方式也非常吸引人。它不像那种一本正经的教材,而是像一个经验丰富的长辈,娓娓道来他的故事和感悟。他会分享自己曾经犯过的错误,如何从中学习,如何调整心态。这些真实的经历让我觉得非常有共鸣,也让我更加相信,成为一名优秀的程序员,需要的不仅仅是硬核技术,更重要的是一种不断学习、不断反思、不断成长的态度。 我还对书中关于“代码的艺术性”的讨论印象深刻。我一直觉得代码只是工具,是实现功能的指令,但作者却把它提升到了一个“艺术”的高度。他用优雅的措辞,描述了清晰、简洁、可维护的代码的美感,就像欣赏一幅精美的画作或聆听一段动人的乐章。这让我开始重新审视自己的代码,不再满足于“能运行”,而是开始追求“写得好”。这种对代码的敬畏之心,让我觉得自己的编程生涯也增添了一份神圣感。 总而言之,这本书给我带来的不仅仅是知识的增进,更是一种精神上的洗礼。它让我对“程序员”这个身份有了更深刻的理解,也让我对自己的职业发展有了更清晰的方向。如果你是一个正在编程路上探索的年轻人,或者是一位在技术领域打拼多年的老兵,我强烈推荐你读一读这本书,它一定会让你受益匪浅,并且重新点燃你对编程的热情。

评分

这本书的出现,简直是解决了我长期以来在编程生涯中遇到的一个核心痛点。很多技术书籍都在讲“怎么做”,而这本书则更多地探讨“为什么这样做”以及“如何成为一个更全面、更成熟的开发者”。它没有堆砌大量的代码示例,也不是那种速成的“秘籍”,而是深入浅出地剖析了许多隐藏在技术背后的思维方式和工作流程。 其中,关于“技术债务”和“遗留代码”的章节,让我有种豁然开朗的感觉。我之前总是觉得,只要代码能跑,能实现功能,就已经足够了。但这本书让我意识到,那些为了赶进度、为了满足需求而仓促写下的代码,就像埋下的定时炸弹,迟早会给未来的维护和迭代带来巨大的麻烦。作者用生动的比喻,将这些“债务”的积累过程和后果描绘得淋漓尽致,让我开始真正重视代码的可读性、可维护性和扩展性。 而且,书中关于“学习曲线”和“技术更新”的讨论,也给我带来了很大的启发。我常常感到焦虑,觉得技术更新太快,自己永远学不完。这本书提醒我,与其被动地追赶潮流,不如建立一套系统性的学习方法,理解技术背后的原理,这样才能在快速变化的环境中保持竞争力。它鼓励我去拥抱变化,而不是害怕变化,这种积极的态度让我感觉轻松了很多。 我尤其欣赏作者在处理“项目管理”和“团队协作”方面的观点。他并没有把这些内容当作程序员的“附加项”,而是将其提升到了与技术同等重要的地位。理解项目目标、与团队成员有效沟通、以及如何贡献自己的力量,这些能力同样是衡量一个优秀程序员的重要标准。他分享了一些非常实用的技巧,比如如何进行有效的代码评审,如何清晰地表达自己的想法,这些都对我日常的工作有很大的帮助。 总的来说,这本书就像一位良师益友,它没有给我直接的答案,而是引导我去思考,去探索。它让我明白,成为一名优秀的程序员,不仅仅是掌握多少门编程语言,写出多少行代码,更重要的是拥有一种持续学习、不断进步、积极主动的态度,以及与他人协作、共同创造的精神。这本书让我对自己的职业生涯有了更长远的规划,也让我对“程序员”这个身份有了更深的敬畏。

评分

读完这本书,我感觉自己像是完成了一次“程序员的进阶”。它不像市面上那些教你“如何快速学会某某语言”的书,而是更侧重于“如何成为一名真正优秀的、有思想的程序员”。它探讨了很多我过去从未认真思考过的问题,让我对编程这个职业有了更深刻的理解。 书中关于“代码可维护性”的论述,真的让我眼前一亮。我之前总觉得,只要能实现功能就行,代码写得再“乱”也没关系,反正只有自己看。但这本书让我明白,写出“易于他人理解和维护”的代码,才是对项目和团队负责任的表现。它提供了一些非常实用的原则和技巧,比如命名规范、函数长度、注释风格等等,这些都将是我未来编码的重点。 我特别欣赏作者在谈到“技术债务”时所用的比喻。他将技术债务比作“雪球”,越滚越大,最终会压垮整个项目。这个比喻让我非常直观地理解了,为什么我们在开发过程中,需要时刻警惕那些“权宜之计”。它让我开始重新审视那些曾经被我忽略的“小瑕疵”,并意识到它们潜在的巨大危害。 而且,这本书对于“沟通与协作”的重视程度,也让我倍感意外。我一直以为,程序员就是孤独的码农,埋头写代码就好。但作者却强调了,优秀的程序员必须具备良好的沟通能力,能够清晰地表达自己的想法,能够有效地与团队成员协作。他甚至提供了一些关于如何进行技术分享、如何参与技术讨论的建议,这些都极大地拓宽了我的视野。 我还对书中关于“如何保持技术热情”的部分深有感触。我有时候会感到疲惫,觉得编程是一件枯燥的事情。但这本书让我看到了编程的无限可能性,它鼓励我去探索新的技术,去解决有挑战性的问题,去享受创造的乐趣。这种积极的心态,让我重新找回了对编程的热爱。 总而言之,这本书是一本非常值得反复阅读的书。它不仅仅提供了技术上的指导,更重要的是,它塑造了一种成为优秀程序员的思维模式和人生态度。它让我对自己的职业生涯有了更清晰的规划,也让我更加期待未来的每一次挑战。

评分

非常不错,很喜欢这本书

评分

双十一抢购,活动力度很大

评分

很不错的书,主要用于学习调整自己的心态,以及认识自身的不足

评分

一般吧,可以读一下,都不是很深入

评分

双十一抢购,活动力度很大

评分

不错,正在看

评分

一本好书

评分

包装很好,新书,仔细阅读吧

评分

这本书不是讲的技术,但是其中的一些观点还是很不错的

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有