作者丨Joy Ebertz

译者丨核子可乐

策划丨赵钰莹

本文作者 Joy Ebertz 接触过的几乎每一家软件公司都设有技术晋升与管理晋升两条职业道路,这意味着如果只走技术方向,技术人员也完全可以在不出任管理职务的前提下达到相同的高阶职级。 但与此同时,Joy Ebertz 所参加的几乎所有职业演讲或讨论小组都充斥着管理人员。 现在,Joy Ebertz 终于明白从宏观层面来看,管理者到底需要做什么、管理的晋升通道又是怎么一回事。

无论是在公司内还是公司外,管理晋升通道中的高层都有着更高的知名度。技术高管也是如此,但对于负责技术的中层管理人士,很多人可能就有点摸不清底细了。

在这里,我先给大家交个实底:在第一次接触软件行业时,如果大家问我 10 到 15 年之后想要做什么工作,我首先想到的答案无疑是软件架构师。我对管理岗位没有太大兴趣,而且我知道架构师是技术道路上最资深的人群。然而,那时的我并不清楚架构师到底需要做什么,当时想到这个答案的原因无非是野心与想证明自己的渴望。但恰巧,我后来的发展道路或多或少遵循了当初的心愿,只是现在的我更清楚担任高级技术管理者意味着什么。

工程技术角色汇总

我现在是一名高级软件工程师,但这究竟是干嘛的?虽然具体的头衔与职能划分取决于具体的企业,但根据我们利用谷歌搜索结果进行的建模,整个行业内的定位思路大体相似。我最初是一名软件工程师(简称 SWE),而后是高级软件工程师(Sr SWE),经历了短暂的管理适应周期后,我最终晋升为高级管理人员。在此之上,还有首席工程师与研究员等职位,不过据我所知我们公司好像还没有真正的研究员。另外让人有点犯迷糊的是,前两个阶段其实基本是统一的;这意味着即使工作内容相同,在高层管理者看来,不同员工之间仍然存在着巨大的差异。

根据与高级软件工程师的交流,对于较低职级,企业当然希望员工尽可能展现自己的技能与才华。我们希望每位晋升为高级软件工程师的员工都能在一切领域(例如技术技能、领导力、文化与价值观等)中充分展现自己的水平,在各项指标中至少达到标准要求,同时掌握高级工程师所必需的一切技能。

值得强调的是,各个职级的工作内容略有不同。正因为如此,虽然我们希望员工能够从高级软件工程师开始一步步成长上来,但技术人员也完全可以在接下来的职业生涯中出任同样的职务。如果有人就是喜欢做高级软件工程师,而对主管工程师没有兴趣,那我们也充分尊重这样的选择。

在我看来,随着时间的推移,对角色变化最简单的描述方式就是观察其在影响力层面的变化。具体来讲,我们可以通过如下几个角度来审视:要么就是能够产生更广泛的影响,要么就是能够产生更深远的影响。具体来说,我们可以影响很多团队,或者对单一团队产生重大影响。我们也可以用另一种方式来理解:以编写代码为例,我们可以编写一部分超级重要或者超级复杂的代码,从而影响某一特定业务区域的运作方式;也可以指导他人进行编码最佳实践,或者对多项设计提出意见或者影响其决策方式,从而产生更广泛的影响。

说到这里,我的阐述可能还是有点抽象和宽泛。下面继续深入聊聊高级软件工程师到底是什么的。

高级软件工程师的工作内容

我并不是说这是高级软件工程师的唯一日常,我只是开诚布公地告诉大家,我是如何工作以及如何看待这份工作的。我的工作内容主要分为两大类别:首先是实际战术,即日常任务内容;第二类不太明显,但同样非常重要,即我是如何考量以及处理这些任务的。

我花了点时间思考自己每天需要处理的具体事务,并把它们整理成一份图表。我肯定遗漏了一些内容,而且具体工作每周都会出现明显波动(因此这只是一份粗略的图表,仅供大家参考)。

我意识到,自己只花了大约一半的工作时间直接为 Scrum 团队完成任务。其中包括所有团队会议,我觉得这进一步突出了流程精简的重要意义。我承认,这部分工作跟我早年间的工作内容非常相似。虽然现在采取的具体方法有所变化,但在性质上并没有多大区别。具体包括编写设计文档、编写代码、进行代码审查以及测试所有代码等内容。

接下来的部分同样占据了相当比例的工作时间(大约 20%),这就是技术咨询(图表当中的绿色部分)。其中包括为各类设计方案——包括我自己的团队与其他团队提供咨询建议,回答技术问题以及在 API 标准委员会任职等。其中一部分与我的直接团队相关,但大多数是面向企业内的各个团队。有些问题还跟我个人有关,因为我虽然已经成为高级工程师,但当初入职时做的很多项目还在发挥作用,所以有时需要回答一些相关问题。随着所参与的项目数量不断增加,这方面工作内容也在持续增长。另外,虽然一直在回答问题,但我对于问题的考量方式与回答,或者说我提出的设计建议,也在随着时间推移而发生变化。

至于剩下的时间,基本上就是花在指导他人、建立更大的项目规划、技术品牌以及其他杂事身上。在指导当中,又分为正式指导与非正式指导。非正式指导一般就是一对一当面传授心得,正式指导自然是在众多同事面前通过演示文稿的形式讲解项目知识了,而且可能涉及一场甚至是多场会议。虽然正式指导看似有用,但我自己的感觉是它在我的指导内容当中只占很低的比例。相反,在大多数情况下,最好的方式往往是只立足一到两个问题围绕同一主题进行讲解。在非正式指导方面,我更倾向于称其为同伴指导或者相互指导。这并不是单纯的导师 / 学生那种关系,而是我会把我自己的问题与思路分享给同事,他们也同样向我分享。我们都能为对方提供见解与想法,并从其他人的不同观点当中受益。

大型项目规划包括与其他高级工程师及经理合作,为我的团队或者所在部门设定技术方向。其中还可能包括改善工程中的多样性与包容性等。基本上,这些都是涵盖多个团队的长期战略项目。随着时间的推移,我先后参与了众多不同的大型项目(包括我之前提到的那些)。有时候同事们会邀请我加入讨论,但一般来说我都能早一步发现问题并主动组织讨论。

接下来是技术品牌问题,我的主要工作就是帮助企业改善品牌形象。就个人而言,这主要涉及撰写博客文章,外加接受访谈或者帮助他人编辑文章内容。其中一些属于宣传性信息,但也有一些更侧重于学习与分享,旨在引导我们的工程师对于部门中正在研究的某些课题产生兴趣。

最后,我提到的杂项包含不太好归类的其他工作内容。其中囊括了各种各样的事务,包括接受采访、参加技术讨论或者参加公司内的黑客马拉松活动等。这些事情同样重要,但在时间占比上相对比较有限。

如果我在刚刚入职的时候就能读到这样一份清单,那么我的职业规划应该会更加明确。毕竟虽然这与初级工程师没啥关系,但以当时自己的能力而言,我已经完全可以胜任其中的大部分内容。不过我也承认,真正变化的并不完全是技能,而是我在处理这些任务时采取的方式以及在任务当中的关注重点。这种心态层面的变化,在重要性方面甚至不逊于工作技能。毕竟从时间占比来看,具体事务只占工作时长的一半左右。

原文链接:https://medium.com/box-tech-blog/what-a-senior-staff-software-engineer-actually-does-f3fc140d5f33

1.什么情况?特朗普表态拒绝谈华为!

2.Android 10 正式发布:具备先进 AI 能力,支持 5G 手机

3.你的项目该用哪种编程模式?

4.RISC-V就该这么玩 | RISC-V MCU网站上线了

5.国产嵌入式操作系统迎来百花齐放的新时代

6.2019年第9期《单片机与嵌入式系统应用》电子刊新鲜出炉!

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

一位高级软件工程师的自述:这个职位到底要做什么工作?相关推荐

  1. 谷歌高级软件工程师的一天

    作者 | Dimitris Leventeas 译者 | 弯月   来源 | CSDN(id: CSDNnews) 工作过的朋友都知道,实际写代码的时间其实并不多,有很大一部分工作的时间都用在了处理邮 ...

  2. 高级软件工程师必备的五大技能

    具备什么样的素质的人才能成为一名高级软件工程师?作为高级软件工程师,你不仅要具备娴熟的技能,更重要的,还要具备与人合作的能力.只有能够领导和提升他人的软件工程师,才是真正的高级软件工程师.Israel ...

  3. 转:高级软件工程师成长秘诀(文末有笔者自己的小评论)

    作者:Neil Kakkar 译者 | 张健欣 身为软件工程师,你要如何进一步成长? 2018 年的时候,我开始在彭博社(Bloomberg)工作.从那之后,事情发生了很大变化.我不再是公司里最初级的 ...

  4. J2EE高级软件工程师面试题集

      第一章:J2EE高级软件工程师面试题集 --JAVA基础部分 1.面向对象的特征有哪些方面1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不 ...

  5. 我如何成为高级软件工程师

    Ever since I started learning to code, I have dreamed of becoming a senior engineer. Some may think ...

  6. 精读文章:高级软件工程师成长秘诀

    作者 | Neil Kakkar 译者 | 张健欣 策划 | 陈思 身为软件工程师,你要如何进一步成长? 2018 年的时候,我开始在彭博社(Bloomberg)工作.从那之后,事情发生了很大变化.我 ...

  7. 招聘|青岛旭升招聘高级软件工程师、3D视觉算法工程师

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 公司介绍: 青岛旭升视觉有限公司是一家专注于机器人3D视觉引导与工业3D测量领域的高新技术企业,独立发 ...

  8. Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结

    Atitit.  高级软件工程师and 普通的区别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握常用的概念(ORM,IOC,AOP,event driv ...

  9. 高级软件工程师的职责范围

    在上一篇随笔<软件架构师之职责范围>中评论,yongfa365希望能看到.NET高级软件工程师的职责范围.我思前想后,还是决定说一下自己在这方面的愚见,希望大家不吝赐教. 什么是" ...

最新文章

  1. LeetCode实战:快乐数
  2. Android 进阶自定义View(4)图表统计LineChartView曲线图的实现
  3. 架构师之路 — 分布式系统 — gRPC 的 4 种服务定义及调用方式
  4. 可拖拽的ImageButton
  5. Leetcode 95. 不同的二叉搜索树 II 解题思路及C++实现
  6. fx5u模拟量如何读取_FX5U系列三菱产品 使用模拟量时的注意事项
  7. nodejs实现的高性能服务器编程,使用NodeJS搭建自己的接口服务器,提交APP的开发效率...
  8. 计算机基本网络测试命令实验报告,网络连通性测试与网络命令验证实验报告
  9. Golang——枚举(iota)的使用
  10. New template: condition
  11. 趣味菜单C语言,趣味C语言
  12. c语言求闰年平年的计算方法,C语言平年闰年问题
  13. python-Python 函数
  14. 内含资源下载|久等了!阿里云技术天团15位专家总结双11实战经验
  15. 《极客时间:代码精进之路》学习笔记
  16. 『解疑』script标签 中 deffer和async属性的区别?
  17. 随意创作立秋logo图
  18. 书摘---创业36条军规4:如何组建公司
  19. 干货 领导力21法则思考
  20. 设计模式及其应用场景

热门文章

  1. 计算机 90学时培训总结,90学时培训心得总结
  2. 2020考研计算机(408)考试大纲原文以及分析
  3. 明朝皇帝有哪些(按在位顺序排列)?
  4. Unity各版本差异
  5. linux配置网卡、修改主机名和映射文件(手把手配置)
  6. python常见加密方法实现,DES,AES,RSA,MD5,国密。--更新中
  7. 如何选择适合你的兴趣爱好(二十六),剪纸
  8. 用pyxel 学写 Kill Virus 像素游戏
  9. 如何删除卸载苹果mac电脑应用软件没有残留垃圾
  10. svn不小心ignore了怎么办