每个找工作的程序员都必然会遇到这样的招聘贴:寻找“高级程序员”或“初级/入门级程序员”——也许你并没有真正理解这两者之间的区别。与此同时,许多招聘经理可能也不明白其中的区别,他们可能默默地认为,公司应该需要一位高级程序员来帮助解决开发中的问题。今天我们将讨论这个问题,并分析为什么一个公司的最佳选择是同时雇用初级和高级程序员。

高级程序员和初级程序员之间的核心区别是,高级程序员通常比初级程序员更精通他们的领域。你知道,对吧? 然而,我马上就想澄清初级和高级程序员之间的几个大误解:

1)高级程序员并不意味着你的程序员生涯比初级程序员长,也不意味着高级程序员必须比初级程序员老。

这一切都定性于技术本领——百分之百的。你是如何获得这种技能的?职业生涯长短通常是一个很大的因素,这就是为什么许多高级程序员编码的时间比初级程序员要长——但这也归结于激情和动力。程序员花了4年时间在大学学习计算机课程会获得很多的知识,但另一种可能是,自学成才的人通过自学编程,2-3年内可能更有才华,仅仅因为他们有更多的激情和奉献精神在学习上。

2)成为高级程序员并不意味着你必须在所有事情上都是专家。

没有人是万能的;然而,高级程序员至少应该精通一种语言,可以是JavaScript、c#、Ruby、Java、R——具体是哪一种没关系,因为在本质上,大多数语言都使用类似的概念,理解这些概念才是最重要的。但,你肯定不需要成为一个万事通后才被认为是高级的。

让我们更深入地研究一下:所谓高级程序员和初级程序员到底指的是什么?

高级程序员

我认为高级程序员能够完全独立开发应用程序。老实说,这就是我的最低要求。我故意在说“应用程序”的时候表达的含糊不清,因为在不同的编程领域中,这可能意味着不同的东西。注意,我从未说过高级程序员不会有不懂的问题。每个程序员每天都面临很多问题,无论你有多熟练,这些问题总会出现。

作为高级程序员,真正要做的是知道如何提出正确的观点,然后根据这些观点采取行动。这里有一个高级程序员可能会处理的示例思维过程。

嗯,我的任务是用Django在Python中构建一个web应用程序,我不懂Django;我几乎没用过Python !但是我知道c#,它是一种面向对象的语言,这点有点像Python,我也知道ASP.NET MVC,它遵循与Django相似的模式,因此我有一个扎实的基础。我会阅读关于如何使用Django的文档,看一些教程,然后解决这些问题。”

看到了吧——在这个思考过程中,我从来没有过这样的感觉:“我迷失了方向,不知道从这里走到哪里。”这就是高级程序员的能力。你不会有所有问题的答案,但你知道要问的问题,以及如何学习更多知识以完成你的任务。有时候,这确实需要向其他程序员寻求帮助,但这绝不是你唯一的选择。

让我们来看看这与初级程序员相比有什么不同。

初级程序员

作为一名初级程序员,你对编程世界是陌生的——但你需要具备基本的编程技能。刚决定要开始编码的人并不能称作是初级程序员。您需要了解基本原理,比如变量、循环、函数、条件、数据类型等等——以及如何实际地使用它们来完成任务。

初级程序员应该从上级那里得到小型到中型的编程任务,并努力完成这些任务——可能需要得到了必要的资源(例如文档、同事支持等)。我不指望一个初级程序员能完全独立完成一个项目,我希望他们能在很大程度上直接与一个高级程序员合作,这样他们就可以一起进行代码评审和其他协作编程体验。

初级程序员真正的亮点是干那些频繁的,无趣的,而且经常令人讨厌的任务,减轻高级程序员的负担,这样,高级程序员可以将更多的注意力放在复杂的任务,比如设计新项目,构建数据持久化层,部署应用程序,等等。对于初级开发者,这些的小任务,他们不会讨厌;事实上,它们对于初级程序员的成长非常重要。它们可以让初级程序员感觉到他们解决了任务,学到了东西——虽然很小的任务,这不仅能帮助他们学习更多的技能,还能帮助他们建立作为程序员的信心。

初级程序员的薪水也比高级程序员低很多,所以这意味着他们的业务成本要低一些,而由初级程序员执行的技术难度较小的任务——相比高级程序员而言。

总结

当你在一个工作间里,你不需要为每件事都拿出电钻;有时一个简单的螺丝刀就可以了。同样地,对于编程,高级程序员和初级程序员都有自己的优势和弱点,理解何时以及如何使用每一个人,是在您的组织中形成强大的程序员社区的关键。

英文原文:Junior vs Senior Developers, and Why They Both Matter

余下全文(1/3)
分享这篇文章:

请关注我们:

发表评论

电子邮件地址不会被公开。 必填项已用*标注