从初级开发人员到高级开发人员之路
成为一名程序员是一件很棒的事。对我来说,没有什么比从事软件工程工作更令人满足的了。编写有效的代码,开发可能每天都有数十亿人使用的产品(比如 Facebook),有机会与地球上最聪明的人一起工作,并且能从自己热爱的工作中获得丰厚的报酬,这一切都令人无比满足。
软件工程师的职业生涯通常分为几个阶段。大多数人都是从初级开发人员开始,然后逐渐成为中级和高级开发人员。但沿着这条路走下去明智吗?在每个职业阶段,你都需要完成哪些任务?你如何进步?
我曾经走过这条路,甚至超越过这条路,我想与你们分享我的经验、想法和观点——为你们的职业生涯提供一些指导。
获得第一份工作
让我们先从好消息开始。
每个人都必须从某个地方开始。没有人天生就是专业的开发人员。
这是一个误解——通常被一些招聘信息所助长,这些招聘信息要求初级开发人员具备十年经验,精通四种不同的 JavaScript 框架,例如 React(它甚至都不算老!)和三种数据库技术——认为初级开发人员应该已经是专家级程序员了。这绝对是胡扯——不要让它影响你或你的自信。
当然,找到第一份开发者工作绝非易事。但你可以做一些对你有利的事情。让我们从你能掌控的事情开始:你的简历。量化你的影响力,检查拼写错误,保持简洁。
申请实习
实习是积累工作经验的好方法。对很多人来说,实习是他们第一份正式工作岗位的起点。不要只追求金钱。没错,像谷歌、Facebook 或亚马逊这样的公司确实会给实习生开出五位数的薪水。但竞争非常激烈,小公司也能教给你很多宝贵的东西。话虽如此,也不要低估自己!
有一份兼职工作
大学期间找一份兼职工作来练习编程技能也很不错。留意线上和线下的招聘信息。
创建投资组合
作品集由项目组成,例如你参与过的JavaScript 项目,你可以向潜在雇主展示。拥有作品集固然很好,但并不像很多人想象的那么重要。作品集本身并不能带来工作,重要的是作品集背后的人。不要指望拥有作品集就能找到工作。但是,它可以帮助你获得面试机会。
为开源项目做出贡献
许多人认为,为了对开源项目做出贡献,他们必须是专家开发人员。
参加训练营
训练营在过去十年中不断发展。它们以一种紧凑的方式教授软件开发的基础知识。它们特别针对没有计算机科学背景的人。训练营的课程时长从三个月到一年不等,而且通常价格不菲。
初级开发人员 - 观察和学习
如果一切顺利,你找到了第一份工作——太棒了!如果时间比你预期的要长——别担心,坚持下去,好事多磨。
初学者往往认为,写出能用的代码就等于写出好代码。他们还可能认为,所有东西都应该设计得花哨复杂,因为专业人士就是这样做的。我鼓励你犯错,但也要从中吸取教训!
以下是针对职业生涯早期阶段的一些重要建议:
提出问题
我再怎么强调这一点也不为过:大多数初级开发人员根本就没有提出足够多的问题。
这是学习、观察、吸收一切知识的良机。如果你不提问,你不仅会错失成为更优秀程序员的绝佳机会,而且别人还会认为你对他们或他们的工作不感兴趣。甚至更糟的是,你会以为自己什么都懂。其实不然!即使你懂,也不要表现出来。尊重他们,并且要明智地对待。这是你为未来奠定基础的机会!
观察团队如何运作
你很有可能在担任初级开发人员的第一个职位时就加入了一个现有的团队。你很少会立即独立工作,所以不要错过观察团队成员以及他们之间互动的机会。还有其他初级开发人员吗?有没有可能指导你的高级开发人员?哪些人愿意帮助别人,哪些人不愿意?重要的会议,比如每日例会、回顾会或计划会议,什么时候举行?你和团队的期望是什么?
熟悉 IDE
也许你在开始第一份工作时就已经熟悉了各种 IDE。然而,每个团队和项目在开发过程中都有各自的设置。他们可能使用 VS Code,也可能使用 PHPStorm,也可能使用其他工具。你需要尽快熟悉这些工具。询问团队使用的 linting 规则,并练习一些快捷方式来提高编码效率。
学习如何编写可维护、干净的代码
当你开始写代码时,没有人会期望它从一开始就完美无缺(毕竟,完美的代码又是什么呢?)。你的目标是写出别人容易理解、不言自明的代码。你需要变量名本身就很有意义,函数也应该简洁。不要为了给别人留下深刻印象而做花哨的事情,并且要始终记住,你并不是唯一一个在代码库上工作的人!
了解版本控制软件的工作原理
大多数公司都使用 Git 作为主要的版本控制系统。你需要从一开始就学习基本概念,因为这是你职业生涯中至关重要的技能。如果你在错误的分支上工作或将未经测试的代码推送到生产环境,可能会引发争议(千万不要这样做!)。
寻找导师
许多公司都设立了导师制,将初级开发人员与经验丰富的开发人员配对。但如果你的公司没有这样的导师制,你应该尝试自己寻找,最好是从团队或公司内部寻找。
拥抱代码审查的力量
在许多组织中,代码审查是强制性的,旨在减少错误并防止 bug。对于你,一名初级开发者来说,代码审查是一个提升自我的绝佳机会。
可以从两个角度来看待他们:一方面,你要尽可能多地审查别人的代码,并针对你不懂的地方提出问题。另一方面,其他人审查你的代码时,你不会把潜在的批评当成针对你个人的,而是将其视为提升你编程技能的机会。
如果可能的话,配对程序
结对编程也是传递知识的重要方法。虽然直接和别人在同一台机器上工作可能有点吓人,但我还是建议你这样做。不要害怕接管键盘并犯错——你可以从中学习!
有些人建议做一些副业来练习技能、学习新事物。但我建议你等到职业生涯后期再去做。如果你才刚刚起步,相信我,有太多东西要学,你不需要其他任何东西。
(中级)开发人员——不仅仅是代码
在软件工程领域工作两年后,你应该称自己为开发人员。许多人会一直从事这个职位,这本身并没有什么错。
注意:这不仅仅关乎你编写的代码,还关乎你在团队中工作和做出贡献的能力,以及对软件开发工作流程和流程的理解。你还应该了解常见的设计模式,并理解 KISS(保持简单)、DRY(不要重复自己)和 SOLID 原则。
你应该熟悉 IDE 和版本控制软件。你应该能够独立编写优秀的代码,并应对更具挑战性的任务。作为一名开发人员,处理日常任务、修复错误并为代码库做出贡献并没有什么错。事实上,这正是大多数人每天都在做的事情。有很多开发人员热爱自己的工作,并且收入丰厚。
现在是尝试其他语言或框架的好时机。你可以自己创建一个副项目,或者看看开源项目。
高级开发人员 - 指导时间
很多人以为高级开发人员就是能在极短的时间内写出完美代码、毫无错误的人。他们就像一支单人大军,独自构建完整的 Web 应用程序,每天产出可交付的软件。可惜的是,许多公司仍在寻找这种“神仙”般的人才。他们应该另寻他途。
作为一名经验丰富的开发人员,你应该能够纵观全局。你必须不断地问“为什么”。
为什么我们要使用特定的语言?数据存储?特定的架构?
高级开发人员不会说 x 语言比 y 语言更好。相反,他们明白,对于特定问题,使用 x 语言更合适。他们关心性能。他们编写的代码易于维护,不会给他人留下技术负担。他们也知道什么时候编写看似业余、违反 DRY 原则的代码是合理的,但这些代码有助于他人理解或提高性能。
对于高级开发人员来说,最重要的交付成果是更多的高级开发人员!
高级开发人员最重要的特质之一(即使不是最重要的特质)是强大的社交能力。最终,大多数项目失败都是因为缺乏沟通。你有责任照顾经验不足的开发人员——指导他们。但你也应该能够与利益相关者和高管沟通,并以知识水平较低的人能够理解的方式解释事情。成为一名致力于长期成功的团队成员。
高级开发人员明白,软件工程的工作不仅仅是指示计算机执行位和字节,还包括与人类的沟通。
最后的想法
没有客观的方法来判断一个人是初级、中级还是高级开发人员。毕竟,头衔通常被用来作为薪资的参考——薪资取决于你所在的公司。真正的经验并非来自头衔,而是来自你从错误和失败中汲取的经验。
职业生涯伊始,要有耐心。学习软件工程的基本模式,提升你的技术技能。还要理解Java 和 JavaScript 的区别!
积累经验后,要努力理解全局。提升你的软技能,帮助他人。要大胆创新,保持开放的心态。不要根据个人意见做决定,而要考虑解决复杂问题的最佳方法。
最后,不要太执着于这些头衔。真正的高级开发人员不在乎头衔——他们在乎的是自己对员工、产品和公司的影响,以及他们留下的宝贵遗产。说到底,我们只是有优点和缺点的人。我们挣扎,我们失败,我们被击倒在地。但我们会重新站起来,继续做我们热爱的事情——开发软件!
不要忘记在这里和Twitter上关注我,以获取更多即将发布的帖子!
文章来源:https://dev.to/simonholdorf/how-to-become-a-senior-developer-jdg