51Testing独家连载:整洁代码的艺术

发表于:2023-6-07 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:克里斯蒂安·迈尔    来源:51Testing软件测试网原创

分享:
  前 言
  很久以前,比尔·盖茨(Bill Gates)的父母曾邀请投资界传奇人物沃伦·巴菲特(Warren Buffett)到家里做客。后来,在接受CNBC采访时,巴菲特谈到那次拜访,当时盖茨的父亲请巴菲特和盖茨各自写下他们成功的秘诀。他们写了些什么,我稍后告诉您。
  当时,科技奇才盖茨和著名投资家巴菲特都是价值10 亿美元的成功企业的领导者,虽然只见面一两次,但他们很快就成了朋友。年轻的盖茨即将达成他的使命,即通过快速增长的软件巨头微软公司(Microsoft)让计算机走进千家万户。巴菲特以世界上最成功的商业天才之一而闻名。他曾将自己控股的伯克希尔·哈撒韦公司(Berkshire Hathaway)从破产的纺织品制造商发展成为业务遍及保险、运输和能源等领域的国际性重量级公司,从此赢得盛名。
  那么,这两位传奇商业人物认为自己成功的秘诀是什么呢?盖茨和巴菲特不约而同地写下了一个词:专注。
  这个“成功秘诀”听起来够简单,但您可能会问:它是否也适用于我的编码生涯?专注在实践中是什么样子的?是借助提神饮料和比萨饼熬夜编码,还是吃好一日三餐,日出而作日落而息?专注会给生活带来哪些潜移默化的影响?而且,重要的是,对于像我这样的程序员,如何从这条抽象原则中获益并提高生产力?是否有可操作的提示?
  本书旨在回答这些问题,帮助您过上更专注的程序员生活,让日常工作变得更高效。我将告诉您如何通过编写整洁、精练、专注、更易阅读和编写、更易与其他程序员协作的代码来提高生产力。正如我将在接下来的章节中展示的那样,专注原则在软件开发的每个阶段都适用,您将学习如何编写整洁的代码、创建专注于做好一件事的函数、打造快速和响应式的应用程序、设计专注于易用性和美学的用户界面、利用最小可行产品来规划产品路线图。我甚至会告诉您,实现纯粹的专注状态可以极大地提高您的注意力,帮助您从任务中体验到更多的兴奋和快乐。正如您将看到的,本书的主旨是以各种方式做到专注——我将在接下来的章节中向您展示如何做到这一点。
  对严肃的编码者来说,不断提高专注力和生产力至关重要。做更有价值的工作,往往会获得更大的回报。然而,简单地增加产出不是办法。坑在这里:如果写更多代码,创建更多测试,读更多书,学习更多,思考更多,沟通更多,认识更多人,我就能完成更多工作。但是,如果您不能少做事,就不能多做事。时间有限,您每天有24 小时,每周有7 天,就像我和其他人一样。有个躲不掉的数学限制:在有限空间里,一样东西增加,其他东西必然缩减,才能腾出地方。读更多书,可能就会遇到更少人。遇到更多人,可能会写更少代码。写更多代码,可能只会有更少时间与您爱的人在一起。鱼与熊掌不可兼得:在有限的空间里,不减一物则不能增一物。
  本书不关注做更多事的明显后果,而是从另一角度来讨论:减少复杂度,从而减少工作量,同时从结果中获得更多价值。深思熟虑、追求极简是个人生产力的“圣杯”。而且,正如您将在后面的章节中看到的,它很有效。您可以通过正确的计算机编程方式和使用本书提出的恒久原则,用更少资源创造更多价值。
  通过创造更多价值,您也可以获得更高报酬。比尔·盖茨有句名言:“车床操作顶尖高手的工资是普通车床操作员的几倍,但顶尖软件开发者的价值是普通软件开发者的1 万倍。”
  其中一个原因是,软件开发高手执行的是一种高度杠杆化的活动:以正确的方式对计算机进行编程,可以取代成千上万的工种和数百万小时的有偿工作。例如,运行自动驾驶汽车的代码可以取代数百万人类司机的劳动,同时更便宜、更可靠、(也许)更安全。
  本书为谁而写
  您是个希望以运行速度更快的代码和更少痛苦创造更多价值的程序员吗?您是否曾发现自己深陷于找缺陷的泥潭里?代码的复杂性是否经常令您不知所措?您是否对决定下一步学什么无所适从,不得不从数百种编程语言——Python、Java、C++、HTML、CSS、JavaScript 以及成千上万的框架和技术——Android 应用、Bootstrap、TensorFlow、NumPy 中选择学习对象?如果以上问题的答案为“是”,那么您就选对书了!
  这本书是为每一位有意提高生产力、做到事半功倍的程序员准备的。如果您崇尚简洁,并且相信奥卡姆剃刀原则——“能少费劲就别多费劲”,那么这本书就适合您。
  您将学到什么
  本书将告诉您,如何通过应用九大原则,将您作为程序员的能力提高几个数量级。这些原则将简化您的生活,减少复杂度、无谓的挣扎和工作时间。我并不是说这些原则都是新概念,它们都是众所周知的既定原则——被最成功的程序员、工程师、哲学家和创造者证明有效。这就是它们成为原则的首要原因!然而,在本书中,我将把这些原则放到程序员身上,给出真实示例,并尽可能给出代码范例。
  第1 章讨论提高生产力价值的主要挑战:复杂性。您将学会找出生活和代码中的复杂性来源,理解复杂性会损害生产力和产出。复杂性无处不在,您需要持续警惕,保持简单!
  在第2 章中,您将了解80/20 原则对程序员的深远影响。大多数效果(80%)来自少数起因(20%)。这一原则在编程工作中无处不在。您会了解到80/20 原则具备分形特征:20%的程序员中的20%将获得80%的工资。换句话说,世界上4%的程序员赚走了64%的钱。对持续杠杆和优化的追求永不过时。
  在第3 章中,您将学习打造最小可行产品,尽早测试您的设想,尽量减少浪费,并提高“构建、测量和学习”周期的速度。中心思想是通过尽早获得反馈来了解在何处投入精力和注意力。
  在第4 章中,您将了解到编写整洁和简单代码的好处。与大多数人的直觉相反,编写代码首先应当最大限度地提高可读性,而不是最大限度地减少中央处理器(CPU)周期使用率。全体程序员的时间和精力比CPU 周期要稀缺得多,而编写难以掌握的代码会降低组织的效率,以及我们人类集体智慧的效率。
  在第5 章中,您将了解性能优化的概念基础和过早优化陷阱。计算机科学之父高德纳(Donald Knuth)曾经说过:“过早优化是万恶之源!”当您确实需要优化代码时,利用80/20 原则:优化占用80%运行时间的那20%函数。消除瓶颈,忽略其余部分,然后再来一遍。
  在第6 章中,您将和我一起进入米哈里·契克森米哈(Mihaly Csikszentmihalyi)激动人心的心流世界。心流是一种纯粹的精神集中状态,它能成倍提高生产力。而且,据计算机科学教授卡尔·纽波特(Cal Newport)所言,心流有助于围绕深度工作建立一种文化。本章中将引用纽波特教授的一些观点。
  在第7 章中,您将了解Unix 哲学,即只做一件事并把它做好。Unix 的开发者没有采用拥有大量功能的单体(而且可能更有效的)内核,而是实现了一个具有许多可选辅助功能的小内核。这有助于Unix 生态系统的扩展,同时保持整洁和(相对)简单。我们将看到如何将这些原则应用于工作中。
  在第8 章中,您将进入计算机科学中另一个得益于极简主义思维的重要领域:设计和用户体验(UX)。想想雅虎搜索(Yahoo Search)和谷歌搜索(Google Search)、黑莓(Blackberry)和iPhone,以及OkCupid 和Tinder①之间的差异。最成功的技术产品往往有着极其简单的用户界面。原因是,在设计中,少即是多。
  在第9 章中,您将重新审视专注的威力,并学习如何将其应用于不同领域,从而极大地提高您(和您的项目)的产出。
  最后,我们将做一个总结,提供可操作的下一步措施,并让您带着一套可靠的工具去简化这个复杂的世界。
  致  谢
  从许多人那里得到贡献和启发,才能写出一本编程书。与其尽列人名,不如践行我自己的建议:少即是多。
  首先,也是最重要的,我想感谢您。我写这本书是为了帮助您提高编码技能,解决现实世界中的实际问题。您愿意花宝贵时间阅读,我很感激。我写这本书的主要目的是,通过分享种种技巧和策略,让您在编码生涯中节省时间和减轻压力,使您学有所得。
  我最大的动力来自Finxter 社区的活跃学员们。每天,我都会收到来自Finxter学员的鼓励,促使我继续笔耕。当您阅读本书时,我想全心全意地邀请您加入Finxter 社区。很高兴您能来!
  诚挚感谢No Starch 出版社团队,他们令我在写作过程中灵感迸发。感谢我的编辑利兹·查德威克(Liz Chadwick),正是她的出色指引,才使这本书达到了我自己无法做到的条理清晰程度。在本书从草稿到出版的过程中,卡特里娜·泰勒(Katrina Taylor)展现了罕见的人员管理和文本理解才能。卡特里娜,感谢您让这本书成为现实。技术审校诺厄·斯潘(Noah Spahn)投入了出色的技术能力来“调试”我的作品。特别感谢No Starch 出版社的创始人比尔·波洛克(Bill Pollock),他允许我把本书与Python One-Liners: Write Concise, Eloquent Python Like a Professional 和The Book of Dash: Build Dashboards with Python and Plotly 作为系列书为他教育和取悦程序员的使命贡献绵薄之力。比尔是编码行业中鼓舞人心和广受欢迎的领导者,但他仍然会抽出时间做一些小事,比如在节假日、周末和晚上回复我的消息和问题!
  永远感激我美丽的妻子安娜(Anna),她不遗余力地支持我;还有我可爱的女儿阿马莉,她拥有许多奇思妙想;以及我充满好奇心的儿子加布里埃尔,他永远是我们的开心果。
  那么,咱们就此开始如何?
32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号