训练营结束后的结对编程:无意间的绝佳学习体验

就在我的训练营毕业前几天,我的角色扮演小组的另一位开发人员提到了他的雷达旁支项目。 我想 在Google将其关闭之前将其 发布到 Masks Google Plus组中,而这些 帖子 将永远消失。 噢,我在前一个月的黑客马拉松项目中包含了很多网页抓取功能。 我知道相关的事情! 我会有所帮助! 当我们谈论实施细节时,它很快就变成了一个联合项目。

我们在一个rpg会话的早晨,在一个相当正常的单计算机对编程设置中进行了研究,我带他开车,因为他对我们需要做的事情有更清楚的了解。 (相关学位加上在该领域工作的5年左右的时间将为您做到这一点。)

但是过了一会儿,我让他既扮演了这两个角色,又看着自己被角色扮演的自我强加义务分散了注意力。 因此,我稍后需要弄清楚一些非常重要的部分,仅自己检查代码即可。 当我们成功地从较大的超级反派中抢救了超级反派后返回代码(这是一个复杂的活动,可以),我意识到我们已经达到了MVP:我们(成功地)删除了论坛中的所有帖子! 是时候扩大我们的范围了!

我能说什么,我非常认真地玩游戏

在他第二天离开之前,我们也收到了所有评论,并且有明确的计划来获取上传的图像。 多么激动人心! 一个成功的项目!

因此,我查看了代码,了解了他在不注意的情况下所做的大部分工作,然后独自开发了烦人的复杂图像。 几天后,我们进行了一次缩放屏幕共享通话,他做的第一件事是要我带领他完成我在没有他的情况下所做的一切。 哦。 对。 代码并非不言自明。 嗯嗯嗯

我发誓,这是有原因的,我必须在这里有四个ifs和另一个。 现在是什么

我不敢相信我的代码编写起来会给我带来很大的麻烦–对于一个非常熟悉起点和目标的朋友,在放松的环境中,我在编写代码后不到48个小时! 我花几分钟时间来重新构造我什么时候做的事情,代码的哪一部分做了什么。 我怎么会这么容易忘记呢? 自我注意:留下解释性注释,并命名更好的变量! (这两种事情都在我的视野中,但现在更加重要了 。)在这一点上,我们在各种脚本的文件名中添加了数字,以清楚地表示它们的顺序(因此,我们不必重新构造它们脚本何时出现,何时需要在整个数据集上运行它们(可能是我们在整个项目中的最佳决定)。

这使得按顺序运行它们变得毫不费力。

在接下来的几周中,我们进行了更多的屏幕共享调用,在此期间,我毫不费力地熟悉了一些我在训练营中接触过的概念,但几乎没有理由使用(例如JSON,fs,RegEx),他在阐明要去的地方时打字的优势。 我为自己很少问为什么感到惊讶。

当然,我也为此项目学到了很多新东西。 通过Node的fs将抓取的图像下载到我的文件系统中很酷,但是在bash中执行一个函数以批量重命名文件则更令人兴奋,更不用说比在Finder中延迟更新事物更有效了,因为我主要是在做。

另一个重要的收获:我无法数出我认为已经完成了多少次,我们的数据很好,我们可以继续前进,然后我的朋友建议再进行几次复查和抽查,这常常发现另一个错误。 我们没有编写任何可自动运行的测试(不是针对主要由脚本组成的小型一次性项目),但是通过将测试保持在头脑中以快速手动运行,我们以最小的努力学到了很多东西 。 最后,我添加了我自己从未想到过的相关支票。

https://xkcd.com/1739/

该项目的每一步不仅是教学,而且是授权。 我在这里的合作者是一个人-没多少个月以前-花费了数十个小时与我交谈,解决了那些完全被我所忽略的问题,在他们的脑海中解决了这些问题,独自听了,娱乐了自己,而我却迷惑不解地提出了“简明扼要的解决方案(11行,现在是4行,到我最终的27行或40行)。 现在突然之间,我们在同一个问题上富有成效地奋斗! 当然,显然他是这一配对中的高级开发人员,但显然他专注于解决每个问题,而不是全力以赴来教我一些东西,而我不仅在关注而且甚至在做出有益的贡献!

最重要的是,我的冒名顶替综合症无处可寻,也许是因为我被认为是这方面的初级伴侣。 那种无处不在的自我施加的压力迫使我尽可能多地了解与我一起工作的人(或我想象中处于同一“水平”的人),而该死的环境被诅咒了。 我一直对潜在工作中的结对编程感到担心:仅看一个更有经验的工程师程序,我将从中学到什么? 我与某人的配对会在不增加特定价值的情况下减慢项目速度吗? 我的意思是,我敢肯定,对这些问题的回答有时会是负面的,但并非在大多数情况下都是如此。 我可以做这个。 下次当我开始感到熟悉的偏执狂时,我可以回想起这个项目,并有记忆和回购来支持这种逻辑。

我要讲的不是每个人都应该有作为模型开发人员的朋友(实际上,这个朋友认为他在配对方面做得特别糟糕,除了我问问题外,几乎没有注意我吸收的东西)。 我真的很欣赏我在课堂上学了多少,以及我从中学到了多少乐趣。 10/10,将再次建立。