坚实的代码和干净的代码从来没有让我觉得坚实或干净
我通过在线文档和项目学习编程。我也读了一些书,但我并不认为它们对我的编程或软件工程职业至关重要。我读过的一些书有:《设计数据密集型应用程序》:真的很不错的书。《神话的工程师月》:感觉过时但有助于理解行业的起源。《设计模式:可复用面向对象软件的基础元素》:我记不太清楚。我想我读这本书的时候太早了,无法完全掌握所有的模式,但至少让我对设计模式有了一个大致的了解。《代码大全》:这本书给我的感觉像是来自一位资深工程师的建议,但其中很多建议并不能被证明是好的。作为局外人,它至少让我意识到,我的代码会被他人阅读。有一天,面试官问我关于设计模式和SOLID原则的问题。我开始谈论我从《四人帮》书中学到的那些,但他打断了我,说他是指SOLID原则,而不太确定我在说什么。如今回想起来,我知道他只是按照规定读内容,而对这个主题了解不多,但我离开那次面试时感到困惑。于是我谷歌了SOLID原则,找到了一个视频,那个“叔叔鲍勃”的家伙在开场的很大一部分时间里讲述水分子的事,接着又花了超过10分钟的时间解释新程序员的增长速度不断加倍,仅此而已,只要这种增长速度持续,所有工程师的一半总是没有经验。然后在演讲开始20分钟后,他开始了真正的介绍,解释糟糕的代码会拖慢你(这可不是废话),代码的刚性和耦合是坏的,只有在30分钟时才真的进入主题。几乎半场演讲可以完全在5分钟内解释清楚。我的背景在那时,我正在学习历史的第三年。我每周要阅读和写作数千页。我了解到并不是每个人的写作方式都一样,不同的学科有不同的写作风格。如果你在写历史,隐含着你应该遵循一种结构和词汇,其他人文学科和社会科学也是如此,我认为硬科学也是如此。我把它们看作是文化规则,因为互相阅读对方的作品而产生了一种写作文化。因此,为了获得好成绩,我会试图模仿我的教授和他们偏爱的作者的写作和研究风格。渐渐地,我开始感觉到自己正在读哪类作者,他们的写作有多紧凑,节奏如何,以及他们如何将叙述与论证结合在一起。而且出于这里不便解释的原因,到那时我大约见过4或5个成功的诈骗案例,就像亲眼目睹着骗子与受害者的互动,持续了几个月。所有这些都是为了说明我已经培养出了一种理解人们如何写作和说话的感觉。为什么这听起来像是在诈骗?并不是为了不尊重“叔叔鲍勃”,但他的一切言论和写作都让我感觉我在浪费时间,同时试图说服我这是一个天才程序员的演讲/写作。首先,有那个“叔叔鲍勃”的昵称,有这样一个背景:为了澄清,1989年我的一位同事给我起了这个名字。多年来它出现在我的电子邮件和uunet签名中。(现在有些孩子不知道uunet是什么)。这个名字坚持了下来,我最后把它作为品牌采用了。 - Robert C. Martin, https://news.ycombinator.com/item?id=7713646 这是一个不错的解释,但这并不改变事实,即这个名字对于一个试图建立作为可信赖资深工程师品牌的人来说仍然感觉具有操控性。而且顺便提一下,当然有些孩子不知道uunet是什么。我们知道。你是一个“资深”的程序员。工程师倾向于假设自己是客观真理的公正机器,但如果我在学习历史时学到的就是,能够努力追求客观真理的唯一方法是接受你是一个主观人类的事实。你认为自己有多客观,你就越容易被主观性操控,无论是你自己的主观性还是他人的。因为我有同事对“叔叔鲍勃”赞不绝口,仿佛他是一个真正聪明的叔叔,并引用他的言论来为一些复杂的依赖注入理论辩护,这让我所有的反应能力都警觉起来。然后我们谈到了他使用的实际文字。正如我之前所说,他的风格过于依赖填充内容。当然,这不仅仅是随机的填充内容。这是他可以自信地表达,边抚摸下巴,偶尔丢出一个机智的笑话,并在过程中看起来聪明。如果我的大学教授发现我写得像那样,他们会因为浪费时间而扣分。大学里我看到过很多次这样的情况。尤其是我们这些学生。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡