进阶为高级开发者不是一蹴而就的。
前一段时间,我在Udemy上看到一个课程,其旨在让你从初级开发者提升至中高级水平。
这个课程包括什么呢?许多技术、各种主题。该课程设计成带你涉猎大量软件和概念,最后你破茧成蝶,可以自诩是中级或高级水平。
但问题在于,这根本不是成长为高级开发者的途径,主要是因为我们大多数人通常在课程接近尾声时忘记了在课程之初学到的东西。我们在工作或日常活动中几乎不会使用这些技术。确实是“学而不用则废”。
这种途径行不通的另一个原因是,高级开发人员不应该是万事通。 他们不需要无所不知。
我记得,在经过多年的自由职业后从事的第一份企业软件工作中我就真实地遇到了这种情况。
有一次开站立会议时,项目经理询问某位高级开发者是否可以承担一项新任务。令人惊讶的是,这位高级开发者说:“我没有XXX方面的经验,我觉得最好指派给对XXX更加得心应手的其他人员。”
我震惊了!你的意思是高级开发者不是无所不晓?你的意思是我们可以承认我们无法胜任某些事或者承认他人知道得更多?这是年轻开发人员常有的天真想法。
从那时起,我一次又一次见证了高级开发者由于缺乏知识而将任务指派给初级人员。在这里不是一场竞争。
如果不是无所不知,那么是什么成就了高级开发者呢?让我们首先来看一下我在高级开发者中注意到的特征。
高级开发人员的特征(Traits)
他们具有“全局思维”,因此在架构和高层讨论中起到重要作用。在进行编码时,他们编写简洁的代码。在出现问题时,他们可以为公司或其他开发人员排除障碍或使其走出困境。他们会拒绝不必要的功能或存在风险的功能。他们研究且明智地选择所需的技术甚至技术栈。他们能够估计项目进度并将项目拆分为各个小部分,并分配给中级和初级开发人员处理。他们在很多技术方面具有广博的知识。
等等!我知道你在想什么 —— 这最后一点与第一个主张—无法通过“学习”晋升为高级开发者—完全相悖。
不对,你其实完全可以。这也将引出我的主要观点。
成为高级开发者的唯一因素(Only Factor)
作为高级开发者的确需要熟悉各种技术,但这并不是通过参加Udemy这类在线课程而实现的。你不能急于求成,因为最终使你成为高级开发者的唯一因素是时间。
没错,就是时间!
这是一个长期累积的过程——处理项目、犯错误、编写代码、参加会议、解决问题,以及使用广泛的技术。
学习使你灵活自如应对任何代码库的编码概念和理论基础;帮助你的同事摆脱困境;以及对自己的错误负责。
而经历所有这些事情都需要时间。
通过多年实战,你将逐渐成熟。你将从他人那里获得认可,然后赢得高级开发者的头衔,而不是自封为高级开发者。
总结
因此,如果你希望成为一名高级开发人员,那么请继续努力,投入时间,不惧怕犯错误并且从中学习。享受你作为初级者的时光,因为本质上是训练场,而且所有乐趣和成长都发源于此——不过这又是另一个话题了。你在那里所花费的时间有朝一日终会让你成为高级开发者。
讨论
你是高级开发者吗?你为之付出了什么?对于希望在几年后升任职位的初级者,你有什么建议?
注:文中提到的Udemy是美国的一个在线课程学习平台,向成人/学生提供各类包括编程培训在内的课程教学。