39

小白经验贴:思考问题的方式比“经验”之说更重要

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI2NjkyNDQ3Mw%3D%3D&%3Bmid=2247494777&%3Bidx=1&%3Bsn=feb7be2f3d1add7bef4f5fc68aa05317
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

EjyQZvZ.jpg!mobile

全文共 2879 字,预计学习时长 8 分钟

uUZVjai.jpg!mobile

图源:unsplash

不要仅以经验去评判一名开发人员,这远远不够。正如谷歌CEO所说:“我雇佣了比你们更有经验的开发人员,但你们在这里的工作效率比我雇佣的任何人都要高,取得的成就也更多。”

不管你是有20年的实际工作经验,还是刚刚进入科技行业,没有实习经验只有一个大学学位。无论是过去还是现在,当涉及到效率、生产力和原始编程天赋时,多年来积累的知识并不绝对重要。以资历去判断一名开发人员的聪慧程度或他是否值得尊重,这并不科学。

笔者刚进入Salesforce开发顾问行业时,完全不知道如何为这个平台实现解决和集成方案。现在,笔者正在创造公司的记录,我被认为是行业中最有前途的开发人员之一,经常被招聘人员和其他企业主联系,几乎完全依靠自己的力量来设计解决方案,并且没有失败过。

在进入这个行业后,笔者只用了三个月的时间就超越了同行。在最初的三个月里,我们几乎都在坚持不懈地训练和学习。

·        我没有天分,不算是有天赋的开发人员。

·        我不是很懂编程。

·        我无法凭直觉在一瞬间找到解决方案。

·        我还有很多要学。

以上这些大多数人拥有的特质,我都具备。在本文中,笔者将确切地告诉你,是什么让我脱颖而出成为一名开发人员,并最终以惊人的速度完成编程任务和项目——其他更有经验的开发人员无法跟上的速度。

NnuUFb2.jpg!mobile

尽早建立最佳编码实践

回顾为获得计算机科学学位所花的全部时间,笔者认为自己是一个不合格的程序员,我几乎不知道如何解决实际的编程问题。

笔者非常想解决编程项目分配的任务,现在我可以轻松用一个晚上的时间完成。对笔者来说,理解实现一个解决方案所需要的逻辑,甚至理解完成一项任务所需要的面向对象原则,都是非常困难的。如果没有谷歌,笔者肯定不会继续钻研计算机,而是会去攻读哲学或商业学位。

但某一个时刻,笔者开始发现自己的技能出现转变。通过开始观察编程语言实际工作的方式、具体设计原则的使用和实现方式、设计代码时要避免的事情以及所采用的最佳实践,笔者注意到了自己处理问题方式发生的转变。

笔者开始用所学到的原则来设计和思考解决方案,这让我以一种更有目的性和方向性的方式来组织我的想法。

U3yY7zF.jpg!mobile

图源:unsplash

从编程的角度来说,对笔者最重要的书籍是Robert C. Martin的《干净代码:敏捷软件工艺手册》,强化了这些原则并将它们深记于心。

其中函数命名、简化代码以及构造类的方式,在开发方式中发挥了很大的作用。让我真正地退后一步,思考所写的内容,思考该如何组织代码的——注意内容是否合乎逻辑,是否具有可读性。

关于可读性、设计简单性,更重要的是解决一个需求往往引发快速生产不会过时、可重用、可扩展的代码。也就是说,作为一名程序员,我们应该了解最佳编码实践、所使用的语言或框架的限制、 可靠的原则 、设计模式和快速应用。

仅仅编写有效的代码是不够的,还需要编写容易理解的、模块化的、能够经受时间考验的代码。这需要更多的思考,但它将会使你不断地构建并为你创建的应用程序产生更多的价值。

NnuUFb2.jpg!mobile

将编程视为创作艺术的工具

编程常常被视为一种神话般的技术——几乎就像一种外语,很难翻译,只有受过良好训练的人才能优美地书写它。但事实并非如此,你需要重建对编程的看法,不仅仅把它看作是一门技术工艺。

我看待代码的角度,与画家看待画笔、机械师看待它的扳手、木匠看待它的锤子一般。代码是一种工具,可以通过它推动实现最终目标和架构解决方案。

伟大的艺术家区别于常人的是他们运用工具的能力,这些工具与他们的思想和想象力相结合。那个艺术家和一个艺术家在同一个位置开始,使用同样的工具——空白画布、颜料和画笔。请记住,当你茫然地盯着空白的IDE时,试着编写第一行代码。

重要的是如何使用这个工具,对笔者而言,有效的不是简单地理解代码的语法和理论术语,而是做一些事情,不断提高使用这个工具的技能。

思考能做什么、能完成什么、应该走什么路以及想要达到的目标,这些恰恰会激发笔者将代码视为使用工具,专注地设计出最终解决方案。在这一点上,唯一能限制我的是使用代码解决所面对的特殊解决方案的思维和个人能力。

这就是为什么笔者不会浪费时间去学习一种语言的所有语法,也不会无休止地阅读文档,只是试图记住一种语言或框架必须提供的所有内容。笔者发现最大的价值在于理解基于经过测试的原则、设计规则和理论来构建和设计代码的不同方法。

F73eee6.jpg!mobile

图源:unsplash

NnuUFb2.jpg!mobile

我不是什么都会,但可以进行学习

这也是我不浪费时间去浏览和记忆文档、不去看学习编程语言的综合教程、不去花大量的时间去学习的另一个原因。

如果笔者真的有超能力,就能以最快速度进行学习和模仿。但事实是,我也确实会失败,彻底失败。但我经常能够通过失败总结经验,丰富自己的知识,直到对一个主题有一个完整的理解。

笔者通常不需要用一堆技术和初步信息来开始工作,我能通过大量研究、在过去处理类似问题和失败时积累的经验来推动编程。我按照计划学习,用具体的细节和方法来填满脑袋。我们处理的每一项任务对于想要达到的目标都是完全主观的。

如果有的话,谷歌搜索引擎问题就是我需要立即试图解决的问题。如果不能通过谷歌搜索找到需要的所有东西,笔者就会向CEO提出一些问题,试图解决一些更复杂的问题。然后,将以定制的方式调整发现的信息以满足当前需求。

我不会因为不知道解决办法而放弃。相反,我会尽他所能去弄清楚什么是可能的。这种思维模式和方法与将代码插入笔者自己理解的特定设计原则密切相关,并且我还会用代码作提出解决方案。

笔者不是什么都知道,也不想知道所有的事情。编程令人兴奋的部分原因在于它是一段不断学习和不断创造与思考的旅程,只看得到特别的方式或方法。而笔者可以看到阻碍你作为一名程序员所需得想象力和潜力的事情。

nURJj27.jpg!mobile

图源:unsplash

笔者坚信,无论其技能、天赋或经验,任何人都有能力被认为是独一无二的伟大程序员。真正需要做的是转变思维方式和方法,以建立自己专属的解决方案,并在职业生涯中保持谦逊。谦逊会让我们保持初学者的心态,充满渴望和好奇心,不断学习和适应日新月异的编程环境。

作为程序员,我们在生活中体现了不断学习的精神,打破了以前认为不可能的障碍。如果你没有这一理念,那么你可能将无法在现有基础上提升技能。

请谨记,任何人都有能力成为伟大的人,不管你已经在这个领域干了20年,还是才刚刚开始。

VbeE7j.jpg!mobile

推荐阅读专题

IFVZvq.jpg!mobile

6FZjQv.jpg!mobile

m6jER3M.jpg!mobile

iuUFJbn.jpg!mobile

Nbqmy26.jpg!mobile

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:符馨元、欧舒蔓

相关链接:

https://medium.com/better-programming/how-i-outperformed-more-experienced-developers-as-a-junior-developer-and-how-you-can-too-19bc6206fa68

如转载,请后台留言,遵守转载规范

推荐文章阅读


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK