编程:思考或打字,思考和打字


“如果您不仔细考虑,您可能会认为编程只是用编程语言键入语句。”

沃德·坎宁安(Ward Cunningham), 《实用程序员》的转发

软件开发–设计,解决问题,提出最佳的新算法,学习新语言,将凌乱的代码重构为紧凑而优雅的内容–需要认真思考。

当您尝试做某事以前从未做过的事情–或从未做过的事情。 或者,当您之前做过但您确定不会再犯同样的错误时,您就需要时间思考如何找到更好的方法。 或者,当您试图了解他人编写的代码以便可以对其进行更改时,或者在查找一个丑陋的错误时。 所有这些可能会花费很多时间,但是最后您将不需要太多代码来展示它。

然后,开发中还有其他所有工作–需要大量打字而无需太多思考的工作。 很明显,您需要做什么以及需要如何做,但是在完成工作之前,您需要编写大量代码。 您之前已经做过,而只需再次做一次:另一个脚本,另一个屏幕,另一个报告以及此后的另一个。 或者大多数想法已经为您完成:有人准备了线框,并告诉您应用程序的外观,感觉和流程的确切方式,或者详细说明了API,因此您只需输入以下内容即可并尽量不要犯太多错误。

调试正在思考。 修复该错误并测试并推出该修复程序主要是键入内容。 早期的设计和开发,检查技术和布局体系结构的技术高峰是很难思考的。 正在输入第3或第4或第100屏或报告。 UX设计与原型:思考。 完善CRUD维护和配置屏幕:键入。 想出一个关于移动应用程序的好主意。 使它正常工作就是打字。 解决常见的业务问题需要大量打字。 通过软件优化业务流程需要认真思考。

一个主要在思考的人和一个刚在打字的人正在做非常不同的工作,需要以不同的方式进行管理。

有时编程只是打字


“我们首先是打字员,然后是程序员。”

Jeff Atwood, 编程恐怖

许多业务应用程序本质上是浅薄的。 许多数据库表和文件,其中包含许多数据元素和数据,以及许多CRUD屏幕和许多报表,它们与许多其他屏幕和报表非常相似,并且很多集成工作都涉及许多要映射的字段在不同点之间,然后需要遵守合规性约束和操作依赖性。 功能需求的清单很长,要确保每个人都理解需求的问题很多,需要记住和跟踪的细节。

银行,保险,政府,会计,财务报告和账单,库存管理和ERP系统,CRM系统,后台应用程序以及其他簿记和记录保存系统都与此类似。 许多门户网站和在线商店也是如此。 某些维护工作(例如平台升级和系统集成工作以及合规性和税收变更)也是如此。

您正在建造房屋,桥梁或购物中心,或者正在装修。 大型且经常泛滥的问题,可能需要花很多钱才能解决。 需要完成很多打字工作。 但这是以前做过很多次的事情,并且工作主要涉及一些熟悉的问题,您可以使用熟悉的模式以及经过验证的工具和工作方式来解决这些问题。


“昨天我看到了您计算机程序的代码。 看起来很简单。 这只是一堆打字。 一半的单词拼写错误。 而且不要让我开始过度使用冒号。”

尖头的头发老板看到一些实际的代码

设计到位后,大部分工作就是理解和处理所有细节,并管理和协调人员以使所有代码脱颖而出。 这是经典的项目/计划管理:预算和计划,跟踪成本和变更以及管理交接。 这与物流,规模,一致性和效率有关,以防止工作脱离轨道。

想想想想

其他问题,例如设计游戏引擎或交易算法,物流或在线风险管理或优化实时控制系统,比打字需要更多的思考。 这些系统对非技术要求极高(可伸缩性,实时性能,可靠性,数据完整性和准确性)和复杂的逻辑,但它们专注于解决一系列严峻的问题。 一些聪明的人可以解决这些问题,并解决大多数问题。 仍然需要进行键入,尤其是在外部,框架,管道和布线方面,但是工作的核心通常是用很少的代码完成的,尤其是在您丢弃失败的实验和原型之后。

这就是软件中许多魔术的源泉-专有或专利算法以及成功系统核心的设计见解。 需要大量研究和大量原型设计,解决问题的能力以及真正的技术印章或深厚领域知识或两者的工作。

打字和思考是不同类型的工作

是否需要进行大量打字或主要是思考决定了您需要多少人,团队中需要多少人,以及想要从事哪种工作。 它改变了人们的合作方式以及您如何管理他们。 打字可以外包。 思考不能。 您需要认识到打字可以解决哪些问题,打字不能解决什么,以及思考何时转向打字。

思维工作可以并且应该由紧密合作的小型专家团队完成,或者由一个天才独自完成。 在尝试提出设计或解决难题,进行实验并进行迭代时,您不需要或不需要很多人。 无论是谁在解决问题,都需要沉浸在问题空间中,要有时间探索替代方案,犯错的机会和学习的机会,并在陷入困境时盯着窗外。

在这里可以犯一些基本错误: 体系结构破坏 ,项目杀伤,职业终结错误。 选择错误的技术平台。 错误地获得实时公差。 花太长时间才能发现(或永远不会发现)讨厌的可靠性问题。 选择错误的人或试图解决错误的问题。 缺少着陆点

管理此类工作需要找到最能找到的人,确保他们拥有正确的信息和工具,保持他们的专注力,寻找外部风险,并排除各种麻烦。

思考是不可预测的。 没有复制和粘贴,因为没有要复制和粘贴的内容。 您无法估计,因为您不知道自己不知道的东西。 但是您可以对此加以限制–尝试在可用的时间内提出最佳解决方案。

键入是可以预见的。 您可以估算-而且必须这样做。 诀窍在于包括所有需要输入的内容,并考虑沿途的所有小错误和差异-因为它们会Swift加总。 草率和捷径,对要求的误解,跳过测试,复制和粘贴以及增加现在和将来成本的各种类型。

打字是外行的工作 。 您不需要专家,只要有能力的人,懂得语言和工具的基本知识的人,会小心翼翼并遵循指示的人,可以耐心地整理所需的所有代码的专家-尽管一些高级开发人员可以表现更大的团队,至少直到他们感到无聊为止。 管理一群打字员需要不同的方法和技巧:您需要成为政治家和外交官,后勤员,标准制定者,管理人员和经济学家。 您正在管理项目风险和人员风险,而不是技术风险。

随着时间的流逝,项目从思考变为打字–一旦解决了大部分棘手的“我不确定我们需要做什么或我们将如何做”的问题,一旦人们知道了未知数,现在就可以解决问题在细节上并使事情运行。

随着您获得更多的客户,必须处理更多的界面,更多的位置和更多的自定义设置以及更多的管理,支持和合规性问题,需要做的输入数量会随之增加。 该系统在不断发展,但是大多数问题是熟悉且可解决的。 还有许多其他代码可供查看,学习和复制。 您需要可以了解正在发生的事情并且可以快速键入内容的人员

思考与打字

思维和打字都是软件开发的重要组成部分。

布伦丹·恩里克(Brendan Enrick)在“编程不只是打字”一书中解释说,配对编程之所以起作用,是因为它使人们可以同时专注于打字和思考:


两个家伙都在思考,但是关于不同的事情。 一个开发人员在任何给定的时间都拥有键盘,并始终保持自己前进的道路。 (此人关心打字速度。)他沿着路径键入内容,以考虑当前正在编写的代码不是应用程序的结构,而是他现在正在键入的代码。 在短时间内,他的打字速度很重要。

一对没有积极打字的程序员正在花所有的时间思考。 他始终保持打字员所走的道路,而不关心编程语言的语法。 那是另一个考虑语言语法的家伙。 不带键盘的那个人是指导。 他必须确保这对夫妇使用最有效的成功路线,走在正确的道路上。

作为一名优秀的开发人员,除了打字以外,还有很多其他事情—除了能够按下某些键之外,打字还有更多的事情。 这意味着要精通基础知识:充分了解该语言,了解您的工具以及如何使用它们,知道如何浏览代码,知道如何编写代码以及快速掌握键盘 。 精通技工,了解工具并能够快速打字, 以使您流利而流畅这对于成功成为一名开发人员至关重要 。 不要降低打字的重要性。 而且,不要让打字-不能打字-妨碍了思维。


翻译自: https://www.javacodegeeks.com/2013/10/programming-thinking-or-typing-thinking-and-typing.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值