每个找工作的程序员都必然会遇到这样的招聘贴: 寻找 "高级程序员" 或 "初级 / 入门级程序员"-- 也许你并没有真正理解这两者之间的区别. 与此同时, 许多招聘经理可能也不明白其中的区别, 他们可能默默地认为, 公司应该需要一位高级程序员来帮助解决开发中的问题. 今天我们将讨论这个问题, 并分析为什么一个公司的最佳选择是同时雇用初级和高级程序员.
高级程序员和初级程序员之间的核心区别是, 高级程序员通常比初级程序员更精通他们的领域. 你知道, 对吧? 然而, 我马上就想澄清初级和高级程序员之间的几个大误解:
1) 高级程序员并不意味着你的程序员生涯比初级程序员长, 也不意味着高级程序员必须比初级程序员老.
这一切都定性于技术本领 -- 百分之百的. 你是如何获得这种技能的? 职业生涯长短通常是一个很大的因素, 这就是为什么许多高级程序员编码的时间比初级程序员要长 -- 但这也归结于激情和动力. 程序员花了 4 年时间在大学学习计算机课程会获得很多的知识, 但另一种可能是, 自学成才的人通过自学编程, 2-3 年内可能更有才华, 仅仅因为他们有更多的激情和奉献精神在学习上.
2) 成为高级程序员并不意味着你必须在所有事情上都是专家.
没有人是万能的; 然而, 高级程序员至少应该精通一种语言, 可以是 JavaScript,c#,Ruby,Java,R-- 具体是哪一种没关系, 因为在本质上, 大多数语言都使用类似的概念, 理解这些概念才是最重要的. 但, 你肯定不需要成为一个万事通后才被认为是高级的.
让我们更深入地研究一下: 所谓高级程序员和初级程序员到底指的是什么?
高级程序员
我认为高级程序员能够完全独立开发应用程序. 老实说, 这就是我的最低要求. 我故意在说 "应用程序" 的时候表达的含糊不清, 因为在不同的编程领域中, 这可能意味着不同的东西. 注意, 我从未说过高级程序员不会有不懂的问题. 每个程序员每天都面临很多问题, 无论你有多熟练, 这些问题总会出现.
作为高级程序员, 真正要做的是知道如何提出正确的观点, 然后根据这些观点采取行动. 这里有一个高级程序员可能会处理的示例思维过程.
嗯, 我的任务是用 Django 在 Python 中构建一个 web 应用程序, 我不懂 Django; 我几乎没用过 Python ! 但是我知道 c#, 它是一种面向对象的语言, 这点有点像 Python, 我也知道 ASP.NET MVC, 它遵循与 Django 相似的模式, 因此我有一个扎实的基础. 我会阅读关于如何使用 Django 的文档, 看一些教程, 然后解决这些问题."看到了吧 -- 在这个思考过程中, 我从来没有过这样的感觉:" 我迷失了方向, 不知道从这里走到哪里." 这就是高级程序员的能力. 你不会有所有问题的答案, 但你知道要问的问题, 以及如何学习更多知识以完成你的任务. 有时候, 这确实需要向其他程序员寻求帮助, 但这绝不是你唯一的选择.
让我们来看看这与初级程序员相比有什么不同.
初级程序员
作为一名初级程序员, 你对编程世界是陌生的 -- 但你需要具备基本的编程技能. 刚决定要开始编码的人并不能称作是初级程序员. 您需要了解基本原理, 比如变量, 循环, 函数, 条件, 数据类型等等 -- 以及如何实际地使用它们来完成任务.
初级程序员应该从上级那里得到小型到中型的编程任务, 并努力完成这些任务 -- 可能需要得到了必要的资源 (例如文档, 同事支持等). 我不指望一个初级程序员能完全独立完成一个项目, 我希望他们能在很大程度上直接与一个高级程序员合作, 这样他们就可以一起进行代码评审和其他协作编程体验.
初级程序员真正的亮点是干那些频繁的, 无趣的, 而且经常令人讨厌的任务, 减轻高级程序员的负担, 这样, 高级程序员可以将更多的注意力放在复杂的任务, 比如设计新项目, 构建数据持久化层, 部署应用程序, 等等. 对于初级开发者, 这些的小任务, 他们不会讨厌; 事实上, 它们对于初级程序员的成长非常重要. 它们可以让初级程序员感觉到他们解决了任务, 学到了东西 -- 虽然很小的任务, 这不仅能帮助他们学习更多的技能, 还能帮助他们建立作为程序员的信心.
初级程序员的薪水也比高级程序员低很多, 所以这意味着他们的业务成本要低一些, 而由初级程序员执行的技术难度较小的任务 -- 相比高级程序员而言.
总结
当你在一个工作间里, 你不需要为每件事都拿出电钻; 有时一个简单的螺丝刀就可以了. 同样地, 对于编程, 高级程序员和初级程序员都有自己的优势和弱点, 理解何时以及如何使用每一个人, 是在您的组织中形成强大的程序员社区的关键
来源: http://www.jianshu.com/p/ab05a3d110f2