前言
本书是一本为程序员提供成长指导的图书,涵盖程序员在职业生涯中需要面对的多种问题,并给出实用的解决方案。本书不仅为初学者提供了基础知识,还为经验丰富的程序员提供了新的思考方向。通过阅读本书,读者能够更好地掌握程序员的技能,并在职业生涯中取得更大的成功。
本书共分为8章,分别介绍如下。
第1章 先导:重新认识程序员这个职业
第1章是先导篇。很多人想做程序员,首要原因是其高额的薪资。然而,在高薪的背后,也有许多鲜为人知的压力。程序员岗位是一个高竞争、高压力、高淘汰的岗位,有着鲜明的岗位特点。外界对程序员有不少刻板的印象,比如“不修边幅”“少言木讷”之类。而实际上,程序员的生活也是丰富多彩的。你是否真正走进过他们的日常生活?是否了解他们的关注点?本章带领读者打破固有认知,重新开始建立对程序员的印象,重新认识程序员这个职业。
第2章 入门:技术是成长的根基
第2章是技术入门篇。如果想在未来从事程序员职业,那么应该从基础技术入手,学习一门基础的编程语言和计算机通用技术。构建知识体系也非常重要,读者可以不用一次构建完成,但绝不能不做这项工作。
第3章 经验:树立项目全局观
第3章是经验篇,旨在帮助程序员快速融入规范的软件开发项目中。在工作中,程序员时刻面对的就是软件开发项目。程序员是项目中非常重要的角色,一定要有全局意识,能推进流程、突破关键问题。本章将深入探讨程序员的代码开发工作,深入学习代码管理、文档管理、IDE等。本章最后将探讨敏捷开发,它是热门的、科学的软件开发方法。
第4章 职业:本色做人、角色做事
第4章是职业篇。作为一个专业领域的职场角色,程序员有自己准确的定位和职责范围。专业程序员,应有专业的工作态度;在处理人际关系方面,应有高情商的表现;对于空闲时间的处理,也应充实和有意义。
第5章 进阶:程序员的可持续发展
第5章是进阶篇,从软技能角度探讨程序员如何可持续发展,具体内容包括:如何实现代码规范、可以参考的优秀编程原则、如何通过自动化来实践规范、如何提高代码的可读性、怎样理解“源码即设计”、如何做代码的审查工作,以及如何落地代码的单元测试等。
第6章 升职:程序员的职业发展
第6章是升职篇。在职场中,成长的一个重要标志是升职和加薪,这是客观上对个人能力的肯定。程序员的职业发展同样遵循这个规律。是在技术层面持续发力,成为技术专家,还是同时学习管理知识,向着技术管理岗位努力?程序员需要懂产品吗?本章将探讨这些问题。本章还会重点讨论如何提升程序员素养、开源、学习时间管理与授权等。对升职、加薪感兴趣的初、中级程序员,可重点阅读本章。
第7章 思维:多听多想、打开格局
第7章是思维篇。作者有一句牢记在心的格言:“信念产生行动、行动养成习惯、习惯生成性格、性格决定命运。”可见思想、信念的重要性。首先改变思维,思维会引领行动,意志坚强的人,往往执行力也不会差;有了行动之后,需要持之以恒,坚持行动能形成习惯;习惯则会塑造大脑,培养独特的气质、性格;而性格往往决定命运,这是大家熟知的。究其根源,必须重视思维的提升,这是一个优秀程序员与普通程序员之间最关键的差异之一。
第8章 自驱:路遥知马力
自驱力是个人成长中非常重要的能力,甚至可以称它为“第一能力”。拥有自驱力的人,不需要别人的督促,就会主动去做自己该做的事情。他们往往有着明确的目标和强劲的动力,懂得化被动为主动,通过努力获取自己追求的东西。“主动意味着一切”,这是本章想要强调的。在本章最后,还会介绍“熵增理论”,探讨如何通过成长来抵御生命的负熵。
三大模块
本书8章又可以进一步划分为三大模块。每个模块的侧重点不同。
其中,第一模块(第1、2章)侧重于打破认知、新手入门,带领读者重新认识程序员这个职业角色,介绍程序员基础技术要素。
第二模块(第3~5章)侧重于职场融入、技术进阶,带领读者融入程序员职场,帮助读者树立项目全局观,以便与各角色的协作如鱼得水、在各类问题的处理上游刃有余。
第三模块(第6~8章)侧重于思维提升、自驱成长,带领读者突破成长瓶颈,建立方法论,打开认知格局,持续精进。
三个模块层级是递进关系。
定位
首先,本书的定位是一本手记。
既然是手记,那么本书按照排检法把有关知识、资料、事实等加以汇编,供读者随手查考。所以,作者建议读者先认真阅读本书目录,了解大致脉络,再进一步阅读。这样能让读者做到心中有数,在需要查阅的时候,快速、准确定位内容,收获想要的答案。
其次,本书还定位为一本关于程序员软技能的书。
何谓软技能?软技能与硬技能相对应。硬技能是指程序开发必须掌握的专业知识。它的内容往往是明确的、可说的、易传播的,比如计算机操作系统、数据库、计算机网络、编程语言等知识。硬技能水平的高低是可以量化的。
关于程序员硬技能,比较有名的图书有《算法导论》《深入理解Java虚拟机》《JavaScript高级程序设计》等。
软技能则是可定性感受的一种能力,很难量化,比如表达能力、管理能力、组织能力、理解能力、架构设计能力、编程思想水平、代码编写习惯、文档写作水平等专业相关能力。关于软技能,无法直截了当地给出确切、客观的评价,只能根据感觉在一个相对范围内给出观点,比如我们会说“用这样的设计模式重构代码会让代码更可读”,而不会说“用这样的设计模式重构代码会让代码90%可读”。
关于软技能,比较有名的书有《人月神话》《代码整洁之道》《软技能:代码之外的生存指南》《纳瓦尔宝典:财富与幸福指南》《非暴力沟通》等。
软技能与硬技能,孰更重要?
作者认为:同等重要。
猿小兔和猿山羊
为了增加阅读的趣味性,本书还带来了两位漫画朋友:猿小兔和猿山羊。
猿小兔是一名程序员“小白”,像很多新手一样,她对学习编程技术怀有极大的热情,但由于缺乏经验、知识储备较少,因此仍处于技术学习的初期。在本书中,她主要扮演提问者,提出一些阅读本书时可能遇到的问题与困惑。同时,她也是一位勤奋的阅读者,在适当的时候,还会总结心得,以便与其他读者分享。有了她的陪伴,读者在程序员成长道路上应该不会感到孤单。
猿山羊是一名资深程序员,拥有多年编程工作经验。他深谙程序员成长之道,对程序员各个时期遇到的成长问题有很透彻的理解。在本书中,他主要负责解答猿小兔的提问,并且在适当的时候给出学习重点,以及提出一些引发读者深度思考的问题。猿山羊丰富的经验一定能帮助读者少走弯路。
本书的目标读者
作者将本书目标读者大致分为以下五类。
第一类:想要未来从事程序员职业的学生。
第二类:想要转岗做程序员的其他职场人士。
第三类:程序员新手。
第四类:职业发展遭遇瓶颈的程序员。
第五类:关注程序员成长话题的人。
交流与反馈
由于水平有限,书中错漏之处在所难免,恳请广大读者批评指正。作者也非常愿意在书本之外,和读者进行更多的沟通、交流。
这里提供以下五个交流、反馈方式。
①作者微信:anthony1453
②QQ群:905500072
③GitHub issues留言:https://github.com/TUARAN/Programmer-s-Growth-Manual/issues
④作者个人博客留言:https://tuaran.github.io/
⑤作者掘金社区主页留言:https://juejin.cn/user/1521379823340792
作者郑重承诺:你留下的每一句话都会被看到、被认真思考和被回复。读者的点滴建议是作者巨大的财富。
“雄关漫道真如铁,而今迈步从头越”,你我共勉。
编者