工程师的划分

  1. 初级工程师(实习生)
  2. 中级工程师(普通员工,小组长)
  3. 高级工程师(CTO,技术研发领头人)

初级工程师

和入门级别基本上可以等同,他们一般都是刚出校门,或者么有实际的开发经验。
少于两年的工作经验,他们会被分配复杂度较低的工作,例如,一个项目中的小模块。或者验证性demo
他们掌握的知识是他们以为他们掌握的10%,甚至更低。通常他们没有经历过一个完整的项目周期,知识面也比较少,所以给予新需求的时候,不知所措,往往使用比较粗暴的方式来解决。
技巧方面,缺乏高效的调试方式和问题追踪方法,出现问题的时候,查找问题比较慢,缺乏自己的思考。问题解决方式依然考虑比较狭隘,只是解决眼前的问题,而不考虑系统关联性,以及对其他模块的影响。
代码规范方面
比较随性,不太懂得正确命名的方式,异常捕获处理等代码规范很少遵守,逻辑混乱,经常在一个方法里面编写很多逻辑,很少考虑代码整洁和性能方面。

中级工程师

目前大部分工程师都是这个阶段,他们的工作经验一般是在两年以上,甚至有的在一辈子都是这个水平。在交给他们相对常规的任务的时候,不用花费太多时间在跟进他们的工作质量和工作效率问题,大部分都能够及时完成。
他们通常不负责高水平的设计共走和高度复杂的任务,通常可以胜任设计一个应用的部分的模块。他们擅长维护性的工作或者是他们擅长的那部分领域。他们通常不会从应用的整体性的角度来考虑问题,或者在高级工程师的帮助下来参与整体性架构的工作。他们通常可以把故障诊断和调试工作做的很好,但是对于复杂度比较高的也会花费比较多的精力和时间。他们往往还没有足够的经验能够准确指出这些问题发生的真正原因。但是他们通常都有自己的解决途径和方法,而不是求助于他人来帮忙。
他们至少有一次参与到整个工程的研发和设计,并且看到了整个工程中存在的设计问题,将来也会不断学习如何避免这一类的问题。
在需求方面,他们往往会接受现有的需求设计,哪怕是存在明显的问题或者缺陷。
他们已经了解到哪些知识他们是缺乏的,并且开始重点学习那些知识。他们是编程的主力军,他们贡献百分之八十到百分之九十的常规代码,以及10%的非常复杂的业务代码。

高级工程师

他们是他们所选择领域的专家。他们通常被赋予非常艰巨的任务(很少有人知道如何解决),还有就是设计项目整体架构的能力,
他们经常独立工作,因为他们通常一个人的时候工作效率很高,并且能够快速高效的完成任务。
他们的另外一个工作就是指导初级和中级工程师。
对于遇到同样的问题,他们往往知道先去查询哪些模块,高级工程师在公司以外也是导师,他们往往具有十年以上的经验。他们知道在截止日期之前,正常交付项目。他们精通至少一门语言,并且在多个语言上达到专家级别。他们经历过很多热门新型技术的出现和没落,所以在新技术使用上面更加谨慎。他们了解自己的工作是输出给用户想要的产品,而不只是娱乐的工具,他们往往是公司部门的挑剔者,他们对于产品的需求往往有自己独到的见解,并且会影响到产品的最终设计方案。
他们往往比绝大部分人更加了解自己公司的产品,他们知道他们需要更多的编程知识,以及所需要的业务领域的知识,
在需求方面,他们可以把有问题的需求反驳回去,并且可以用非专业的语言解释给外行人听。

以上内容大部分是翻译自What’s the difference between Entry Level/Jr/Sr developers?

更多相关文章

  1. 如何为后台工作创建绑定服务(Xamarin)
  2. 通过不在android游标中工作的顺序
  3. android多线程数据存储 - ThreadLocal的工作原理
  4. 北京一年工作经验的java web开发程序员税前5K是不是要高了?
  5. 使加权图在JGraphT中工作
  6. 我无法让这个简单的ajax代码工作
  7. 工作中傻傻的错-2011/11
  8. 急找工作,想用java语言做一个小的软件,请高手指点
  9. 测试技术大牛谈成长经历:一个好的软件测试工程师应该做到这些!

随机推荐

  1. Android 分页组件
  2. android反编译与加固(Mac版)
  3. Android常见布局简述
  4. Android中文文档v0.1 beta低调发布,期待
  5. Android可收缩/扩展的TextView【2】
  6. 《宅男的android开发指南》(翻译)--1
  7. android ViewPager不可滑动(android 项目
  8. Android(安卓)适配不同分辨率&hdpi、mdpi
  9. Android 2.2 开发环境配置详解
  10. 【 Android 】Android Runtime Permissio