通过正确性和模式识别书籍学习
最近,一个朋友问了一个有关软件工程师所具备的特殊技能的问题。
软件工程师具有哪些独特的技能?
从我的经验中汲取灵感,使我产生了意见。 随着时间的流逝,我逐渐意识到我喜欢编程的内容。 学习元数据的技巧或如何做我们做得更好的技巧包括在上下文中阅读许多知名的书籍。 我以多年阅读的具体例子为例,将其应用于我在该领域的实践观察,并以我认为最务实的方式进行了回答。
我:我认为,如果我们普遍考虑,我会说这是正确性和模式识别的实践* 。 这些是软件工程师独有的一些技能。
让我们检查这些技能以添加上下文。
正确性
正确性与我们以何种方式以及为什么以自己的方式构建事物密切相关。 在组织中,它与业务必须为客户解决的问题的正确性密切相关。 写得很好的软件遵循了这种想法。
正确性工程看作是如何正确的是如何使业务解决方案能够继续与高可靠性的解决。 它是并且必须在战略(设计)和战术(执行)之间取得平衡。 检查如何在真空中表现良好 在《 编程珍珠》第4章中- 编写正确的程序 。
…保持代码简单通常是正确性的关键。
—乔恩·本特利
模式识别
模式识别通过创建必要的抽象和组件边界而与正确性的组织紧密联系。 模式识别导致重用概念,以模块化和隔离代码。 我们监视重复,找到可以重用的区域,并重构复杂的代码部分。 这就是软件工程师的擅长之处。 我们对这一细节的关注是保持警惕的。 我们认识到知识是一遍又一遍地创建的。 然后我们简化。
模式识别在社区中进行了详尽的讨论,有许多资料可供阅读以了解其技术。 我了解该技能的起源在于《实用程序员》的第二章— 复制的邪恶 。
使其易于重用。 干-不要重复自己。
-安德鲁·亨特和戴夫·托马斯
可教的时刻
回答后,我的朋友又提出了另一个问题。
如果正确和模式识别是这些技能,那么您将如何教他们?
当然,我的回答很简单。
我:找到这些书,设置环境,并通过显示示例进行学习。 设定学习和练习这些元技能的期望,同时为企业带来价值。 为什么? 复杂。 这是学习我所知道的平衡复杂性技能的最佳投资。 随着时间的推移,这也使工程师变得更加自信。
我的指导重点是这些书和这些特定技能。 但是,这使我意识到,除了不知不觉地进行工作之外,很少有人在元数据上进行大量投资。 meta的词汇是我感兴趣的东西。我在现实世界中有关问题分解 (正确性)和组织 (模式识别)的著作在交付时很难被看到。
大约在我考虑撰写有关这些技能的简介的同时,还提到了另一本书,因为我一直在问。 斯坦福大学的一位教授一直在教授有关meta的课程,并撰写了一本有关其课程发现的书。 当我发现他和我有同感时,我感到震惊,我购买了这本书并将其吞噬。 从第十三章开始, 系统设计哲学 。
工程师往往非常注重细节。 我们喜欢细节,善于管理其中的许多细节; 这对于成为一名优秀的工程师至关重要。 但是,优秀的软件设计师也可以从细节退后一步,从更高层次考虑系统。
—约翰·奥斯特豪特**
结论
在我看来,正确性和模式识别是软件工程师应该努力理解并擅长的技能***。 结果是获得了更高质量的软件 。 所有其他独特的技能,如果还有其他要分类的技能,很可能都是基于这些技能。 我邀请其他人分享他们随着时间而练习的元技能示例。
从根本上说,正确性和模式识别与复杂性(也称为认知负荷)的结果紧密相关。 需要一种智能地平衡两者的方法,以减轻复杂性。 从本质上讲,这就是为什么我认为这些技能是我们所做工作的精华。
*关于正确性和模式识别的有趣之处在于它们还与机器学习方面的实践紧密相关。
**如果您想进一步了解John的工作,请观看 他的视频 。
***工程师还应该练习高水平的 学习 和 沟通。 这些概念并不是软件独有的,但与科学有很强的联系。
From: https://hackernoon.com/meta-skills-of-a-software-engineer-bed411f6685e