从书籍中学习正确性和模式识别

关于如何正确构建软件的几点想法。
最近,一个朋友询问了软件开发人员的特定技能。
开发从业者所练习的独特技能是什么?根据我的经验,我形成了以下意见。 随着时间的流逝,我意识到我喜欢元编程。 学习元技能或如何做我们做的更好的事情,要考虑到上下文,阅读许多著名的书。
我以多年以来所读内容的具体例子为例,将其应用于我在该领域的观察,并以最务实的方式回答。
我认为,如果您普遍考虑,我会说这是正确性和模式识别的实践* 。 以下是软件开发人员特有的一些技能。正确性
正确性与我们以这种方式做事的方式以及
原因有关 ,而与其他方面无关。 在公司中,这与企业应为客户解决什么任务的正确性密切相关。 编写良好的软件遵循相同的想法。
在开发中,正确性被认为
是“如何”正确,因此业务解决方案可以继续以高度的可靠性和效率来解决任务。 这个过程是战略(设计)和战术(执行)之间的平衡。
在
“ Pearl Pearls编程-编写正确的程序 ”第一章的第四部分中,最好地表现了对
“真空
”状态的研究。
...保持简单的代码通常是正确性的关键。
-约翰·本特利
模式识别
模式识别与通过创建必要的抽象和组件边界来
组织这种正确性紧密相关。
模式识别导致重用概念来调制和隔离代码。 我们跟踪重复项,找到可以重用的区域,并重新设计代码的复杂部分。 这就是软件开发人员的擅长之处。 我们非常仔细地遵循细节。 我们承认知识是一遍又一遍地创建的。 然后我们简化。
模式识别在社区中进行了讨论,您可以从许多资源中获得有关识别方法的信息。 我在
《实用程序员 -重复的邪恶》(
《实用程序员 -重复的邪恶》)的第二章中了解了这一点。
使其易于重用。 不要重复。
-安德鲁·亨特(Andrew Hunt)和戴夫·托马斯(Dave Thomas)
有趣的观察
我给出答案后,我的朋友问了一个反问题。
如果正确性和模式识别是这些技能,那么您将如何学习它们?当然,我的回答很简单:
查找这些书,设置您的环境,并通过示例进行工作。 设定您的学习期望并应用这些元技能,同时为您的业务提供价值。 怎么了 复杂性 我知道这是对精通训练的最佳投资。 随着时间的推移,这也使开发人员更加自信。我的成长主要围绕这些书和这些特定技能。 但是,这使我意识到,除了直接执行工作之外,还有多种技能对元技能有重要贡献。 我对meta的术语产生了兴趣。 我的任务分解(正确性)和组织分解(模式识别)工作在发布之时并未得到应用。 大约在同一时间,我正在考虑写这篇有关元技能的文章。
斯坦福大学的一位教授讲授了元技能课程,这导致他写了一本书,其中包括了课程的一些结果。 当我发现他对这个问题与我的态度一样时,我感到震惊。 因此,我买了一本书,兴奋地阅读。 第十三章,
系统设计哲学 。
开发人员通常非常注重细节。 我们喜欢细节,喜欢管理很多细节。 这对于成为一名优秀的专业工程师很重要。 但是,优秀的软件开发人员也可以从细节上退后一步,并在更高层次上考虑系统。
-John Ousterhout **
结论
在我看来,
正确性和
模式识别是软件开发人员必须自己学习和开发的技能。 结果,提高了软件质量。 所有其他独特技能都非常可能依赖于上述条件。 我邀请其他人分享他们随着时间而发展的元技能示例。
总体而言,模式的正确性和识别性与复杂性(也称为认知负荷)的结果息息相关。 必须有一种方法可以平衡这两个因素以降低复杂性。 因此,我认为这些技能是我们所做工作的主要要素。
*有趣的是与机器学习实践密切相关的模式的正确性和识别性。
**如果您想进一步了解John的工作,请观看
他的视频 。
***工程师还必须进行高水平的
培训和沟通。 这些概念并非软件独有,但与科学紧密相关。
原始文章