发布于:2020-12-31 14:38:25
0
93
0
这可能听起来很熟悉:您处于项目的中间,并且您意识到自己正在解决从未见过的问题。也许您的搜索功能查询返回的结果太多,这使您的网站变慢。您认为不应该一次显示所有数据,而您已经听说过一种叫做“分页”的东西,听起来很接近。因此,您快速浏览了代码库以查找类似的示例,然后使用Google“分页” +“ [您的堆栈]”。一个小时后,您打开了17个选项卡,头疼越来越大,项目没有任何实际进展。恭喜,您已经正式进入研究兔子洞!
随着新的一天开始太阳升起,您偶然发现了一些似乎相关的库代码,因此您将其复制过来,并且似乎可以正常工作。您不完全理解为什么,但是代码运行并通过了测试。因此,您继续前进,一切都很好–直到几天后,其他人推动了更改,一切都崩溃了。
作为开发人员,我们一直在研究新方法,处理新信息并在截止日期之前选择最佳解决方案。必须进行研究并不能说明您还不够了解-这是工作的关键部分。特里·奥谢,Etsy的软件工程师说,她“每天要查询数十次……我花了超过半个小时的时间来措辞和重新定义搜索查询。” 有效学习研究是提升开发人员水平的重要组成部分。
许多初学者陷入的陷阱正在遵循一种似乎足够接近的解决方案。如果您仅对所需要的东西含糊不清,就很容易迷路。充其量,您会在没有真正理解的情况下偶然发现可行的解决方案。在最坏的情况下,您会发现自己感到沮丧并偏离了航向。在Bonus.ly和纽约市市长办公室担任软件工程师时,我一直在那里。。没有完美的过程,不同的方法对不同的人起作用。但是,我发现非常有助于有效研究的一个技巧是在整个过程中保持正念。
步骤1:了解景观
在开始浏览搜索结果之前,请以最清楚的方式定义问题。旨在广泛地理解高级移动件是什么。刚开始时这可能会有些棘手,但是考虑如何措辞您的问题将帮助您理解,记住并与他人交流。The Muse的产品经理James Mayr认为,提前完成此过程会有所帮助:“我在进行实际编码之前就努力进行研究;如果我必须在编码过程的中间查找某些内容,那完全使我脱离了流程。”
在前面的示例中,分页只是页面加载缓慢的一种可能解决方案。如果您花时间探索您所面临的根本问题(服务器响应缓慢,速度慢),您会发现其他可能性。您可能实现无限滚动,重构数据库查询,缓存搜索结果,甚至重新设计UX,以便用户最初请求更多特定数据。形成一种景观感将帮助您缩小范围,寻求一个合适,有效的解决方案,而不是追求足够接近的解决方案。
当心XY问题-在这里,您不问自己的实际问题,而是询问您的最佳假设,并获得其他所有问题的答案。当您进行研究时,请问自己:“此资源是否可以帮助我完成X,即我刚刚定义的问题?” 听起来可能有些陈词滥调,但是如果答案是:“嗯,它可以帮助我做Z,而对Y则有帮助,这就是我可以做X的方式”,您可能走得太远了。
步骤2:对资源有选择性
在研究过程的不同阶段,您将需要不同的资源,因此请了解所需资源的类型。例如,如果您在努力理解哈希的概念(通常用于模糊敏感数据的加密技术),那么阅读有关bcrypt(一种流行的哈希库)的教程可能不是您最好的时间选择。
搜索互联网时,您会发现大约四种类型的资源:
技术文档(MDN,API文档)
教程(中,FreeCodeCamp,特定于工具)
在线讨论(堆栈溢出,Reddit,HackerNews)
来自教程和论坛的代码示例
从宽泛入手-查找Wikipedia文章,MDN文档或W3Schools。当我学习研究时,我创建了一个完整的网站Hackterms,以众包编码有时可能是绊脚石的术语。然后,一旦您从高层次理解了该概念,就可以搜索相关的博客文章,教程和Stack Overflow响应,以帮助您编写代码。如果您浏览留言板,请在了解其实际功能之前不要陷入有关哪种工具最佳的争论。
这似乎是一个很小的变化,但是不断评估您是否在寻找正确的资源类型将使您更具洞察力,并节省大量时间。阅读某种有意义的教程很容易分心,但请记住:您的目标不仅仅是使代码正常运行;编写您可以理解和维护的代码。
尽管互联网上知识渊博,但有时在工作中获得答案的最有效方法可能是来自您的同事。Betterment的全职开发人员Esther Leytush说,她的经验法则是“用谷歌搜索我可以描述为“我如何……”的任何内容,并询问同事,技术负责人或经理何时只能将问题描述为“我们应该吗…?' 您的同事是有关特定领域和特定过程的知识的最佳资源,并且通常可以帮助您解决问题。Etsy的O'Shea说:“如果有一个障碍使您的工作停止了半个小时,那么绝对可以把它带给同事–也许他们会知道解决方案的;也许他们只会同情。”
步骤3:编写代码
当您根据实际需要选择解决方案时,可以开始寻找特定的教程或文档。现在,您可以从尝试了解环境转变为查找和编写解决问题的代码。
在此阶段,请确保不要在不理解每一行的情况下复制代码块。为了简洁和清楚起见,许多教程都简化了问题,但是它们使用的示例代码通常不适合生产。当您无法解释或维护您的工作时,复制代码块将导致技术问题,以及涉及窃和知识产权的道德问题。此外,通过花时间重写和自定义解决方案,您将发现下一次更容易理解类似问题。
步骤4:现在进行认真的研究=未来的障碍更少
与生活中的其他一切一样,您将在实践研究方面变得更好。您会发现使用正确的单词更容易获得正确的资源,而您从正念研究中获得的知识将阐明曾经看起来令人生畏的编程领域。O'Shea说:“我对找到的解决方案更具洞察力。” “我将继续搜索,直到找到最惯用,最高性能,最简洁或最优雅的方式来实现我想要的功能,而不是仅仅复制和粘贴某人的hacky CSS。”
因此,下次遇到新的可怕问题时,请不要立即接触Google。定义问题,确定所需的资源,保持正念并记住-这不仅是您摆在面前解决问题的方式,而且是您成为更好的开发人员的方式。
作者介绍