人们通常认为科学和人文科学是互斥的。 即使两者重叠,通常还是从影响人文的科学意义上说,例如数学启发的绘画,或者物理和化学在雕塑中的应用。 我们几乎从未谈论过相反的方向。 在本文中,我将分享我在散文写作和编程领域中的经验。 具体来说,练习前者的方法可以帮助您发展后者。
当我十八岁的时候,该提交大学申请了,我和母亲陷入了僵局。 我坚持要成为一名架构师(例如,不拘泥于软件,而不是软件),而她坚信我会在计算机科学方面更加快乐。 当我什么都不进入时,达成了妥协,并进入了我的英语专业安全学校。 有些问题只是解决问题的一种方法。
很长一段时间以来,我认为我对英语的短暂游览只是一个有趣的,但最终没有意义的弯路。 差不多十年后,当我终于给CS再拍并成为一名专业开发人员时,我意识到它是多么丰富。 一次又一次地,当我弯腰坐在键盘上时,我的英语写作课的记忆一直在回荡着我,我不禁将这些经历与我的现状进行比较。
这是到目前为止我学到的五个教训。
学术写作中有一条基本规则,即如果您不能用一句话总结论文,那么您就不会知道您在说什么。 如果一开始听起来听起来很严格,那是因为。 这是与最终结果无关的规则之一。 其背后的真实目的是鼓励一种扎实的写作基础的心态:知道您的观点并坚持下去。
如果您要撰写论文,那么您可能会对这个话题有很多话要说。 这就是为什么您决定首先写的原因。 您会想到许多主题,您可能会觉得您绝对必须谈论其中的每一个主题,否则将是不完整的。 作家必须学习的第一批课程之一是问一个问题:“是的,我想谈论这个话题,但是我需要吗?”
在编码中,这与我喜欢称呼“先生”的概念有关。 电视节目《老友记》中受人喜爱的小人物之后,“嘲弄范围”。 主要人物的楼下邻居赫克尔斯先生一个季节要弹出两到三遍敲门,然后进行如下对话:
赫克尔斯先生:你很大声。 我的猫无法入睡。
莫妮卡:你没有猫。
赫克尔斯先生:我可以养猫。
我本人既遇到又证明了这种态度,这比我想记住的要多得多。 构建图像编辑器后端? 最好确保它支持TIFF,PCX和其他所有没人使用的格式! 为我的游戏制作图形引擎? 如果我改变主意并从Sprite切换到3D模型,让我们再增加两层抽象! 当然,我不会。 我什至对OpenGL一无所知。 但是我可以 。
作为开发人员,我们经常被提醒保持我们的代码模块化,响应式,跨平台,面向未来和其他流行语。 这些通常是完全明智的目标。 保持平衡的举动在于不要让自己分散甚至没有的需求。 练习有效的写作可以教会您专注于实际目的,并实现目标。 其他一切都只是不存在的猫。
如果您花了很多时间在Facebook上,那么您可能会遇到其中一个标题这样的谜语:“成人要花20分钟才能解决这个问题,六岁的人要花20秒!”提醒我,我那时一定是个笨蛋,因为我肯定冰雹不会自己弄清楚它们。 但是,有一个确实坚持了下来。


任务很简单:画三行连接匹配的字母。 直线,矩形边界或它们没有连接的任何字母都不能相交(不过,它们都不需要像小猫一样)。 您可以花一会儿时间思考一下,但是为了继续前进,下面是解决方法:


我愿意相信孩子比成人更快解决问题的原因是,孩子对犯错误的担心要少得多。 他们不用盯着图像几分钟,而是想在绘制一条线之前就可视化解决方案,而是只是抓住他们的小手可以到达的第一个标记,然后跳进去。实际上,一旦任何两条线已经存在,其余的这是不言而喻的。
入门是写作中最难的部分之一,因为仅仅从哪里开始的问题就让人感到痛苦。 多年来,作家想出了无数种方法来帮助您迈出最初的几步,而我最令人兴奋的认识之一就是其中有多少人也可以编写代码。 您喜欢先奠定基础并从那里发展吗? 尝试雪花方法。 您对结果有愿景,但对较深的部分没有太多了解吗? 手电筒方法可能会有所帮助。 是否必须包含一些固定点,否则还有很大的摆动空间? 营救工作。
以作家的身份练习和研究概述技术(例如上述方法)可以帮助您找到停止过度思考并开始工作的新方法。 大多数时候,您会发现一旦出现了前几行,剩下的事情就会变得非常容易。
我为我的朋友和同事审查了大量文章,其中任何一个都可以告诉您一件事:我从未批评任何人使他们的句子太简单。
当您是一名学习型作家时,您可能会倾向于认为出色的写作意味着精美的单词和详尽的措辞。 我知道我确实做到了。 我会添加诸如“因为那个”这样的繁荣,而不是一个简单的“因为”,因为我认为这会使我的写作看起来很聪明。 我用隐喻填充了段落,就像盲人的双筒望远镜一样没用。 我花了多年的时间来了解简单性的价值。
作为经典示例,请采用以下两个代码段:
//代码段Afor(让i = 0; i <buffer.length; i ++){
buffer [i] = 0;
} //片段Bfor(让i = 0,l = buffer.length; i <l; buffer [i ++] = 0);
遵循第二个示例的原理的代码(即,尽可能使用尽可能多的快捷方式和短路)通常被誉为“圆滑”或“优雅”,并且说明了开发人员对语言的深刻理解。 问题是,这使外人难以阅读代码,却没有任何真正的好处。
尝试时不时地停顿一下,用陌生人的眼神看着你的作品; 最好至少睡个好觉之后。 这个故事讲得足够清楚吗? 您的API签名是否直观? 如果没有您的解释,有人会使用您的代码有多好? 进行简洁明了的写作可以帮助您发展出简洁明了的编码的本能。 在病假的时候,无论您是谁,都会给人留下深刻的印象,让您轻松得多。
议论文是一种特殊的写作风格。 在这些文章中,您不仅要描述某些内容,而且要提出主张并按照结构合理的事实进行跟进。 辩论论文要比其他类型的论文严格得多,以确保推理路线是公正且公正的。 这样的要求之一就是包含反驳。
驳斥是一个简短的部分,您在其中停止反思所收集的论点,并提出您认为怀疑的读者可能不同意的观点(例如,“有人可能担心我对公司提供的海洛因的建议可能会导致性能。”)。 在大多数情况下,您会提出反对意见,或向读者保证他们的担心是不必要的。 但是,并非总是如此。 您可能会做出一些妥协,甚至断然承认您不知道确切的答案。 反驳的目的不是抹杀对手的意见; 这表明您在组建自己的公司时已将其考虑在内。
我们程序员生活在一个模式世界中。 基于数十亿小时的集体经验,完善的规则和惯例支配着我们的工作。 不过,我们经常发现,特定的情况需要一种我们的模式无法涵盖的解决方案。 当遇到这种困难时,重要的是能够退后一步并反思您的决定。 局外人可能对您的工作有什么担忧,您将如何解决?
当您整天只看到代码时,很容易忘记开发本质上是一种沟通形式。 您编写的所有内容都表达了您自己的世界观,以及您对现有模式的态度。 季度销售报告的数据库宏可能并不像莎士比亚第130期那样存在,但是当另一个人(无论是开发人员还是最终用户)需要与之交互时,他们就在与您间接交互。 这种互动可能会引起分歧。
这里的目标不是以任何方式维护自己的权利;而是 也不会使自己陷入持续的不安全状态。 完全是开放的。 进行反驳可以帮助您发展对公平和同理心的需求,尤其是在与他人合作时。
一般而言,人们对写作过程存在着广泛的误解,这源于术语本身。 在百分之九十的时候,当我们谈论“写作”时,我们指的是在页面或屏幕上记录单词的物理行为。 因此,我们几乎不能怪任何人,因为他们认为当作家“写”某件事时,他们只是这样做:他们坐下来写这些词。 如果您问任何一个上述内容是否正确,请放心:当他们停止在笑声中抽搐时,他们会告诉您事实并非如此。
编写过程以称为第一稿(也称为草稿)的版本开始。 之所以称为草稿,是因为它不是完成的工作,而被称为“粗糙”,因为在礼貌的交谈中,大多数作者宁愿使用该词。 初稿永远不会接近成品。 大量文本被删除,四处移动,一分为二或弗兰肯斯坦变成了一个。 作家必须学习的最艰苦但最基础的课程之一是,您不应该对工作的任何部分产生感情上的依恋,因为您永远不知道何时需要剪裁。
以本文为例。 当我计划它时,我在那里有一个完整的附加部分。 要点的顺序是不同的,我每个人都有一个幽默的插图。 然后我开始了,慢慢地意识到我原来的方向并不是我所需要的。 我放下了插图,重新编写了几部分,然后将它们四处移动,然后不断对其进行锤击,直到它们融合在一起。 当然,初稿的本质仍然存在,但最终结果却大不相同。
这在任何行业中都不是新鲜事物。 经济学称之为沉没成本谬误:我们投入一个项目的时间和精力越多,当全部或部分项目需要扔掉时,我们就越不愿意接受。 作为开发人员,写作可以帮助您提醒自己,方向的改变并不总是意味着某人没有进行足够的计划。 随着您对自己的工作有更深入的了解,变更通常是开发过程的自然结果。 通过识别何时不再需要某些东西来节省时间和悲伤。
我决不是要冒充这些东西,因为只有通过写作才能获得某种神秘的智慧。 无论您是否意识到,您很有可能已经在其他情况下听说或了解了其中的大部分内容。 我希望提供的是一种新的视角,以观察我们的日常工作,以及我们如何在看似无关的领域中学习新模式或实践现有模式。 即使明天不忙于写作,也许您也会从已经拥有的其他爱好中找到灵感。