[译] 如何成为一名优秀的初级开发人员

本文翻译自Medium上的一篇文章,原文标题:How To Be A Good Junior Developer. 点击文末的阅读原文可以跳转到英文原文。

到明年,我的职业编程生涯即将满15年。15年!哇!

回想起来,我仍然记得成为初级开发人员的第一天,走过灯火通明的小隔间,脑袋里塞满了SAP、算法、数据结构、SQL和C++,甚至知识管理和项目管理等更广泛的主题。我拥有所有的知识,而我唯一没有的就是有信心在需要的地方使用这些知识。

我花了很多年才获得这种信心,那时,我意识到实际上我只需要做到两件事就可以成功。

  • 学习新事物的态度。

  • 有能力将所学知识付诸实践。

这两者都是养成技能,不仅需要努力工作,而且还需要谦虚地承认自己的无知并与合适的人交往以消除这种无知。这就像某个故事中的三个建造围墙的工人。

问及第一个人他在做什么。他说,他在铺砖。无论他做的是对还是错,他都不会担心或烦恼。第二个工人说他正在建造一堵墙,但是他不确定建造这堵墙的目的。第三位眼睛放光充满热情的工人说,他正在建造一座大教堂。他为自己在大教堂的建设中所扮演的角色,虽然很渺小,而感到骄傲。

优秀的初级开发人员就像那第三个工人。他们保持与大局一致,同时保持学习自己的方法。他们知道自己正在解决什么问题,并且为参与较大的大教堂建筑( 软件开发 )项目感到自豪。最重要的是,你必须谦虚,低头工作。你将到达目的地。这就对了!

以下是我从初级升到高级软件开发人员过程中学到的一些好东西。

审视自己的无知

埃尔伯特·哈伯德(Elbert Hubbard)曾经说过:

永远无知的秘诀是:对您的见识感到满意。

你是初级开发人员,所以没人期望你懂得所有的东西,这没关系。即使是在该领域工作多年的高级开发人员也不是懂得所有知识。无知不是很大的缺点,而掩盖自己的无知才是罪过。

会议上、讨论中、代码演练期间,你一定会碰到一些不了解的事。不要点头并假装自己理解了 – 问。如果你不开口,那将错失一次的学习机会,最终将危及自己的职业生涯。

经历了多年蠢驴似的职业生涯,我每天仍在问很多问题。请记住,没有什么是愚蠢的问题,问一个愚蠢的问题并加以澄清比整天坐在电脑屏幕前要好得多。

加快获得缺失知识的最佳方法是在每一个机会中审视自己的无知。

写代码之前阅读代码

拉希德·奥贡拉鲁(Rasheed Ogunlaru)曾经精辟的说过:

How you look at the code is pretty much how you’ll see it

我记得我的第一个编码任务。我必须为现有功能编写一段退出代码,然后我在上面花了50个小时。星期一,当我自豪地向我的技术主管展示时,她就说了一句。

我们已经写了一个类完成这样的功能。你可以使用它,快速完成。

我的错?我没有阅读现有代码就开始编码。现实世界中,与实际编写代码相比,开发人员在阅读代码上花费的时间更多。即使在添加新功能或改错时,也需要了解现有代码。这里没有捷径。阅读阅读再阅读!

阅读代码还可以知道其他人是如何编写代码的,以及哪些代码库可以复用。注意

  • 编码标准

  • 命名约定

  • 设计模式

  • 注释

  • 使用测试脚本,测试用例等

永远记住,聪明的开发人员不会重蹈覆辙。他们总是尽可能地重用并构建现有功能。这不仅节省时间,而且在共享代码的开发人员之间建立了一种友情。

也许你正在尝试解决的问题已经有了答案。因此,当你尝试完成任务时,请检查是否有人已经解决了该问题。这不是偷工减料。

寻求建设性批评。

Elbert Hubbard提到了避免批评的最佳方法。

为了避免批评,什么也不说,什么都不做,然后什么也不是。

我们都希望被赞赏,当有人赞赏我们的工作时,我们会感觉良好,这是对的。但是,作为初级开发人员,除了赞美之外,你还需要建设性的批评才能继续前进。良药苦口利于病。

我记得我的第一次代码审查是由一位高级开发人员完成的。在40分钟内,他拆解了我的代码,在令人不安的会议结束时,评论比代码还要多。付出这么多的努力,我当然感到非常难过。但是这次会议确实帮助我发现不足,并展示了可以改进的地方。这引导着我前进。

也就是说,获得建设性批评的最简单方法之一就是提出要求。我曾与许多高级开发人员一起工作,但到目前为止,无论他们多么忙,都没有人拒绝过我的要求。当然,你需要根据时间表来安排有意义的会谈。

请记住,如果一位高级开发人员花时间审查你的代码,并提供一些改进建议,那意味着他真的对你的进度感兴趣。不要错过这个机会,感谢上帝吧。

正如安迪·马克斯(Andy Marks)所说的。

如果你对自己的代码感到自豪,它将在代码展现出来。如果你不这样做,它也会显露。认识到你自豪感的人就是你想要与之共事的人。”

寻求大局。

穆拉特·伊尔丹(Murat Ildan)说过。

要看到更广阔的景色,请走出黑暗的山谷,爬到阳光明媚的山顶!

还记得先前的故事中的第三位工人,他知道他正在建造一座大教堂吗?专注于大局正是如此。作为初级开发人员,大多数时候,你将只编写一小段代码,或者解决现有代码中的某些问题。你忙于完成分配的工作;没错。但是,如果你想参与整个项目,你需要花点时间找出项目的全部内容。

你需要扩大视野,并询问有关代码如何适合整个系统上下文的问题。

为什么使用特定的设计模式?

为什么用特定语言编写?

有什么缺点?它可以与当前的代码库一起使用吗?

此代码将来是否易于维护?

等等…

最好和最简单的方法是在指导你学习过程的导师的帮助下。技术指导员可以帮助你更快地发展技能,并为更大的项目打下牢固的基础。没有明确方法去寻找技术导师,也许在食堂喝杯咖啡可能有助于打破僵局!

大多数初级开发人员由于对功能的误解或对项目目标想当然而犯了错误。花时间了解现实世界中的事情是如何工作的,这有助于成为更好的开发人员。

最后,一个优秀的高级开发人员不仅了解编程

很长一段时间里,我认为一个好的高级开发人员就是拥有多年的技术经验(Java经验5年、Python经验7年等等)。技术专长越多,高级开发人员就越好。

我错了。一个优秀的高级开发人员不仅对编程了解很多。他们极富好奇心。他们是非常棒的导师。最重要的是,他们具有不可思议的编码意识,可以知道什么时候不做某事。例如,他们知道仅为了可读性而从头开始重写库,或者将团队使用的旧框架切换到最新框架,并不总是明智的选择。他们不是逃避风险。他们只是谨慎地进行正确的战斗。

并非每个人都能真正成为他或她的职业中的 高级 。一个好的高级开发人员不仅应具有正确的经验,而且还应具有正确的态度以及在将来应用这些经验的态度。资历与能力有关,而不与年龄有关。

正如凯文·德莱昂(Kevin de Leon)所说的。

如果你什么都不做,资历就没有任何意义。