很多刚刚踏入职场的“初级程序员”常常会期待自己在不断提升技能和丰富实践经验后,有朝一日晋级为“高级程序员”。
那么,这两者之间都有哪些区别呢?
1. 从工作内容的角度出发,两者最大的区别,其实在于更关注的是“软件”还是“系统”。
初级程序员关心编写软件。因此,会重视代码质量,采用最佳实践,尝试采用尖端技术。他们在学习新技术方面投入了大量时间。因为对他们来说,最终的目标是创建优雅的、可执行的、可维护的软件。
而高级程序员关心构建系统。编写软件只是构建系统中的一个步骤。首先,他们需要对“一个软件是否需要创建”的问题做出思考,例如它会解决什么问题、为什么解决。并且,他们还会询问谁将使用该软件以及以何种规模使用该软件。同时,他们还需考虑软件将在哪里运行,以及如何监控它是否正常工作,软件是否真正解决了问题等。
2. 从解决问题的思维上看,初级程序员大多数情况下解决的是单个问题,而高级程序员解决的是一类问题。
比如很多普通程序员,在看到bug清完就觉得万事大吉了。哪怕同一个问题在生产环境出现多次,最多也就说一句“不会吧,怎么又出问题了”。这种对待问题的方式就是他的工作越来越忙,因为解决问题效率与投入的时间多少是成同比变化的。而高级程序员则在解决掉一个bug之后,通常会想一下能否通过什么方式找到现有代码中的同类问题,并把它们处理掉。甚至是考虑有没有什么办法能够一劳永逸的避免此类问题再次发生,比如封装一个SDK或者写一个组件,尽可能用一种低侵入的通用方式将问题扼杀在摇篮里。这种结果是不但自己轻松了,也造福了大家。
3.从解决BUG的效率上看,高级程序员效率更高,效果也更好。普通程序员可以利用搜索引擎(百度、Google)寻找答案,还经常找不到好的解决办法,然后更换技术方案;高级程序员除了也利用搜索引擎寻找答案,还经常利用论坛,以前的项目等等之类的方式,一般bug都顺利解决。
4.从处理需求的角度来说,高级程序员在“接”需求之前一般会先“砍”需求
很多人在听需求讲解的时候,思考的是,这个功能能不能实现、怎么实现、难不难。大多数的提问也是基于这个思路展开的。可能也会提出“砍”需求的问题,但是理由大多是这个实现起来太麻烦了,这个没法实现之类。而高级程序员一般会从“做这个需求的目的是什么?”的角度去思考,所以“砍”需求会变成一件更容易成功,而且自然而然的事情。
虽然高级程序员从工作方面来说要比普通程序员优秀的多。但小编想强调的一点是:“高级”的头衔不等于“高级”的角色。因为在职场竞争力变得越来越重要的当下,对于程序员而言,夯实自身技术知识、提升技能固然重要,但这些并非是成为高级程序员的关键。对于高级程序员来说,他们不只是代码的搬运工,也不止专注于技术,他们具备思考、协作、沟通等其它多项职业能力。希望每位期待成长的程序员能在时光沉淀下,不为“头衔”而累,坚守进步的初心,方能始终。
擎创科技,Gartner连续推荐的AIOps领域标杆供应商。公司致力于协助企业客户提升对运维数据的洞见能力,优化运维效率,充分体现科技运维对业务运营的影响力。