速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

菜鸟程序员如何用三个月将“前浪”拍在沙滩上?

  • 2020-10-08
  • 本文字数:2742 字

    阅读完需:约 9 分钟

菜鸟程序员如何用三个月将“前浪”拍在沙滩上?

编程这件事听起来很复杂,但在大多数情况下,编程过程既轻松又有趣。当然,也并不是有经验的工程师编写的代码就一定优于“菜鸟”工程师。那么,作为一名开发者,如何能让自己从众人中脱颖而出?本文也许会给你一些启发。


不管你是有 20 年的实际工作经验的资深开发者,还是刚刚进入科技行业,没有实习经验的“菜鸟”,这都不重要。因为当涉及到效率、生产力和自身的编程天赋时,多年来积累的智慧和经验可能起不到多大的作用,所以单纯用资历来定义一名开发者是极其狭隘的。


我刚进入 Salesforce 开发顾问行业时,基本上不知道如何在这个平台上实现解决方案和集成等问题。而现在,我却正在创造公司记录,被认为是行业中最有前途的开发人员之一,甚至经常有猎头和雇主过来挖我,我几乎完全靠自己的能力来设计解决方案,并且没有一次失败过。


“我招聘了比你更有经验的开发人员,但与我招聘的其他任何人相比,你做得更快,也做得更多。”

——CEO 对我说


在进入这个行业后,我只用了三个月的时间就超越了同行。在最初的三个月里,我几乎都在坚持不懈地训练和学习。因为我深知自己在很多方面都存在不足:


  • 我不是天才或神童。

  • 我不是一个有天赋的开发者。

  • 我不是对编程无所不知。

  • 我不能凭直觉在一瞬间找到解决办法。

  • 我还有很多东西要学。


尽管有着上述诸多困扰,但也阻挡不了我成为一名合格的开发者。那么,是什么让我脱颖而出,并最终以其他更有经验的开发人员都无法跟上的速度完成编程任务和项目?

尽早建立最佳编码实践是第一要务

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


我竭尽全力地解决分配给我的编程项目——这些项目我现在可以在一夜之间轻松地完成。但彼时,理解实现一个解决方案所需要的逻辑,甚至理解完成一项任务所需要的面向对象原则,对我来说都非常困难。


如果没有去谷歌搜索解决办法,我估计我是无法继续攻读计算机学位的,而是会去攻读哲学或工商管理学位。


但突然有个时刻,我开始对我所具备的技术能力有所改观。我开始观察编程语言的实际工作方式,具体设计原则的使用和实现方式,以及设计代码时要避免的事情和要采用的最佳实践,我开始感觉到我处理问题的方式的转变。


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


从编程的角度来说,我读过的对我改变最大的书是 Robert C. Martin 的《代码整洁之道》,它强化了这些原则,并使它们深入我的内心。


我命名函数的方式、我简化代码的方式以及我构造类的方式有效地保证了我的开发方式的合理性。它让我真正地退后一步,思考我在写什么,我是如何组织代码的——时刻注意我写的东西是否合乎逻辑,是否可读。


在满足需求时,我把注意力更多地放在可读性、设计和简单性上,根据我的经验,这样的结果通常是,代码生成速度快、面向未来、可重用且易于扩展。


也就是说,作为一名程序员,你应该了解最佳编码实践、所使用的语言或框架的限制、SOLID 原则、设计模式和敏捷实践。


仅仅编写有效的代码是不够的,而是要编写有效的、容易理解的、模块化的、能够经受时间考验的代码。这就需要更多的思考,但总的来说,这让你可以不断地基于你创建的应用程序进行构建,从而创造更大的价值。

将编程看作是艺术创作的工具

编程常常被视为一种神技——几乎就像一门外语,很难翻译,只有受过良好训练的人才能优雅地用它写作。然而,这种观点与事实相去甚远。从编程中抽离,重构你对编程的看法,而不仅仅把它看作是一门技术工艺。


代码是一种工具,你可以用它来推动自己实现最终目标和你设计的解决方案。我审视代码的方式与画家审视画笔、技工审视扳手、木匠审视锤子的方式相同。


伟大的艺术家与常人的区别是他们运用工具的能力,这些工具与他们的思想和想象力相结合。当你茫然地盯着空白的 IDE 试图编写第一行代码时,请记住这一点。


重要的是,我们要了解如何使用这个工具。对我来说,真正有效的是做一些事情,不断提高我使用这个工具的技能,而不是简单地理解代码的语法和理论术语。我们要重点考虑下我能做什么,我能完成什么,我应该走什么路,以及我想要达到的目标,这些会为我以代码为工具谨慎探索最终解决方案的方式带来启发。


在这一点上,唯一限制我的是我个人的想法和能力,在于我是否能够找出不同的方法使用代码来处理和解决我所拥有的特定的解决方案。


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

我可能不是什么都懂,但我什么都可以学

这也是为什么我不浪费时间去浏览和记忆文档,不看学习编程语言的综合教程,不无休无止学习的另一个原因。


如果我真的有什么超能力的话,那就是快速学习并立即将所学应用到我所做的事情上的能力。是的,我确实会失败。而且失败了许多次。但经常失败是我的学习方式之一,失败可以强化学习,直到我完全理解一个主题。


通常,我不需在脑子里准备一堆技术和初级信息,因为我可以通过我能做的大量研究和我过去处理类似问题以及失败时积累的经验来推动我的编程。


我根据需要学习。这样,我就不会浪费大量的时间,用具体的细节和方法来填满我的脑袋。你处理的每一项任务都取决于你想要达到的目标。


如果有什么事情,我就会问谷歌搜索引擎,问题直指我要立即解决的难题。如果我不能通过谷歌搜索找到我需要的所有东西,我就会向我的 CEO 提出一些问题,设法解决这些更复杂的问题。然后,我会调整我发现的信息,以满足我当前的需求。我不会因为不知道解决办法而放弃。相反,我尽我所能去弄清楚我认为可能的事情。


秉持这种思维模式和方法,我将代码插入我所理解的特定设计原则,并将代码作为工具来设法实现我的解决方案。


我不是什么都知道,我也不想什么都知道。编程令人兴奋的一点是能够不断地学习和拥有创造性思维,当你尝试学习一种权威性的方法去做某件事,你会将其看成唯一的方式或方法,可以想象,那会大大阻碍你作为一名程序员的想象力和潜力。

结语

我坚信,任何人——无论其技能、天赋或经验如何——都有能力成为独一无二的伟大程序员。


你真正需要做的是,为了构建解决方案而完成思维和方法上的转变,并在整个职业生涯中保持绝对的谦逊。谦逊会让你保持初学者的心态,充满好奇与渴望,不断学习和适应日新月异的编程环境。作为程序员,我们在生活中表现出了不断学习的精神,打破了以前认为不可能的障碍。如果你没有这种精神,那么恐怕未来你的技术水平,也不会有太大的提高。


原文链接:


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


2020-10-08 13:333008

评论

发布
暂无评论
发现更多内容

5分钟带您了解DRS录制回放

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟

App加固:不同类型和费用对比

eBPF运行时安全

统信软件

安全 ebpf 运行时

AE蓝宝石插件BorisFX Sapphire 2024 for Mac破解版 及新功能介绍

南屿

软件测试/测试开发/全日制/测试管理丨CSS Selector

测试人

软件测试

FCPX插件-动态视频运动模糊视觉特效 mMotion Blur 支持Intel和Apple M芯片

南屿

fcpx动态视频 运动模糊视觉特效 fcpx插件下载 fcpx特效

荣耀开发者大会2023 · 一张图读懂设计分论坛

荣耀开发者服务平台

AI 设计 开发者大会 honor

QCN9024: The future of wireless communications, five major advantages over competitors

wallysSK

如何利用 APM 追踪完整的类函数调用

心有千千结

APM Datadog OpenTelemetry 系统可观测性 DDTrace

如何定位和优化程序CPU、内存等性能之巅

雪奈椰子

实用fcpx插件:Photo Montage(轻松制作照片动画)

南屿

fcpx fcpx插件

30款绚彩天空背景特效PS渐变-Photoshop天空渐变

南屿

ps渐变 天空背景特效 Photoshop素材

NFTScan | 01.08~01.14 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

LED透明显示屏前景发展怎么样?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 市场 #研发

ps一键磨皮插件Delicious Retouch 5怎么安装 支持M芯片

南屿

磨皮插件 Photoshop 插件

软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

测试人

软件测试

PS磨皮滤镜降噪插件Imagenomic Professional 支持ps2024 兼容M1

南屿

磨皮插件 ps滤镜下载 Imagenomic Imagenomic Professional

Sketch Measure for Mac中文破解版 sketch标注插件下载

南屿

Sketch Measure mac中文版 sketch标注插件

Lightroom预设资源-高级食物lr预设 附lr预设导入教程

南屿

高级食物lr预设 Lightroom预设下载 lr预设怎么导入

photoshop色轮插件Coolorus怎么安装 附Coolorus 许可证

南屿

Coolorus mac版 PS调色插件 Coolorus许可证 Coolorus安装教程

SD-WAN服务简介及挑选服务商指南

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!

博文视点Broadview

Authing 入选中国信通院《 2023 高质量数字化转型产品及服务全景图》

Authing

中国信通院 信通院 Authing

软件测试/测试开发/全日制/测试管理丨iOS 自动化相关工具

测试人

软件测试

软件测试/测试开发/全日制/测试管理丨兼容性测试

测试人

软件测试

堡垒机和数据库防水坝的区别一二

行云管家

数据库 网络安全 堡垒机 数据库防水坝

外贸自建站推广为何首选谷歌广告?谷歌广告的优势在哪?

九凌网络

微店获得微店商品详情 API(micro.item_get)在电商中的发展

技术冰糖葫芦

API

ScaleUp插件使用方法 附ScaleUp for Mac破解版资源

南屿

高级视频增强工具 ScaleUp插件下载 ScaleUp mac破解版 AE/PR插件

电子签章接口调用,以契约锁为例

Geek_2a38d5

电子签章 契约锁

菜鸟程序员如何用三个月将“前浪”拍在沙滩上?_编程语言_Zachary Minott_InfoQ精选文章