AI实践哪家强?来 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:333179

评论

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

Flomesh Ingress 使用实践(一)基础功能

Flomesh

负载均衡 API ingress Pipy

云原生数据库如何设计运维系统?

Greptime 格睿科技

数据库 运维 云原生

橡树黑卡携手观测云,实现会员体系业务可观测

观测云

可观测性 可观测 观测云 可观测性用观测云

DawnSql解决SAAS的痛点

陈飞

2013年的技术方向

且行且珍惜

2023计划

探讨:30岁转行入IT,晚吗

MavenTalker

转型 职业发展 职业道路 个人思考

零基础转行大数据,学习应该注意什么?

小谷哥

JavaScript使用URL用来解析处理URL

ModStart

Apache Kafka入门级教程原创

宋小生

kafka Kafka Producer

一种基于图片搜索视频的方案

京东科技开发者

搜索 视频 图像 企业号 2 月 PK 榜 商品搜索

学术加油站|HIST,面向海量数据的学习型多维直方图

OceanBase 数据库

数据库 oceanbase

大数据开发培训哪家比较好?

小谷哥

一文带你掌握物联网Mqtt网关搭建背后的技术原理

华为云开发者联盟

后端 物联网 华为云 企业号 2 月 PK 榜 华为云开发者联盟

云原生场景下实现编译加速

京东科技开发者

Java golang 缓存 编译 企业号 2 月 PK 榜

便捷模型迭代优化,算法模型支持更新到已部署服务、已有项目|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 数据分析 团队协同 编程建模

一文讲尽Thread类的源码精髓

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

java培训班怎样才能找到工作

小谷哥

智能学习灯赛道竞争日趋激烈 火山引擎VeDI用数据技术助力打造新优势

字节跳动数据平台

大数据 增长 用户分析

颠覆性的开源分布式数据库DawnSql

陈飞

2023年主流混合云管理平台排名榜单分享

行云管家

混合云 云管平台 云管理

前端培训中怎么提升技术水平?

小谷哥

总结了6种卷积神经网络压缩方法

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟

前端编程培训学习好就业吗?

小谷哥

Canvas 模型服务,已支持直接使用“组件设置”作为模型参数输入|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 数据分析 团队协同 编程建模

云小课|创建DDS只读节点,轻松应对业务高峰

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

StarRocks荣获2022年度最具潜力数据库奖

StarRocks

数据库 大数据

TiDB x 阿里云丨最长 30 天,最高节省 ¥33,000,免费试用云数据库 TiDB 的机会来啦!

PingCAP

TiDB

服务器双机热备软件是什么?有什么作用?有哪些?

行云管家

高可用 服务器 双机热备 服务器双机热备

为什么你该试试 Sccache?

Databend

好友靠JVM成功进入阿里,阿里大佬力荐的JVM笔记到底有什么魔力?

小小怪下士

Java 程序员 面试 JVM 阿里

「融云政企数智办公解决方案」正式入选「大信创产品目录」

融云 RongCloud

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