当前位置: 首页 > news >正文

软件工程师的属性与发展

工作近十年了,[软件工程师] 一直是我职业 title 的中心词,只是前面的修饰语在不断变化,从初级、中级、高级到资深。
其实 [软件工程师] 是一个很泛化的定义,工作现实中软件工程师是被具体分工的,形成了具体定义的工程师。

定义

软件工程师是下面这些具体工程师的总体概括:

  • 开发工程师
  • 测试工程师
  • UI工程师(又称设计师)
  • 产品工程师(虽然现在多称产品经理,但实际的工作内容更偏向工程师性质)
  • 运维工程师

也许还有些其他分工的具体工程师定义,这里就不一一列举了。
我只是偶然发现所有这些具体分工的工程师都可以归类到几个不同的属性上,那么这些属性又是什么?

属性

玩过游戏的人都了解,游戏角色一般有两种主要属性:攻击属性和防御属性。
一般为了游戏平衡性而言,不同角色有的会偏向攻击属性、有的偏向防御属性,这在组队游戏中特别明显。
而软件开发本身就是一个组队活动,因此各类分工的工程师也体现出了这两种属性。

以上具体分工的工程师中,运维工程师和专职维护线上系统的开发工程师更偏向于防御属性,其他则是偏向攻击属性。
攻防属性的区分是和上述工程师工作性质的自然联想,防御就是守住阵地(维护已有系统),攻击则是开辟新的战场(新产品、新系统)。
在团队中还有一些其他角色,如:项目经理、架构师等,这类角色的工作属性会更复杂一些。
项目经理协调资源、控制进度,若是在开辟新战场的项目中则像是萧何一类角色。
架构师则像是将军,刘邦项羽中原争霸,将军不止一个,但萧何却只有一个,所以一个大项目,项目经理就一个,架构师却不止一个。
不同专注领域的架构师充当了不同类型将军角色,有擅长打冲锋的,有擅长打阵地,各有不同,此时架构师的角色属性为攻击型。

系统业务量快速增长,老系统变得不再稳定,维护升级困难,然后启动架构升级,此类项目中的架构师和开发工程师都属于防御型。
而项目经理在这两类项目中既不属于攻也不属于防,而是另一类型:加成属性。
在游戏中也有类似的角色,这类角色帮助提升团队的群体属性,例如攻击光环、群体回血之类的。
管理角色的最大价值就在于群体的加成属性,当然这类加成属性可以是正的也可以是负的,取决于管理本身的带来效果。

发展

《冰与火之歌》里有一道长城(The Wall),绵延 300 英里,它将近有 700 英尺那么高。
十年差不多也会碰到职业发展的一道长城,如果十年还没碰到那么很可能说明你没有一直沿着大致相同的方向在走。

从工程师到架构师,继续加强攻击属性,提升技术锋利度,进入技术专家领域。
锋利意味着更窄更尖,从众行到独行。
防御属性的提升突破需要足够生命周期的产品、足够规模的系统,和攻击属性一样最终殊途同归。
而加成属性的提升看上去的路径是从工程师到培训师到技术顾问,被加成项目、团队或公司的成功是自己品牌力,影响力的最好背书。

无论从哪个方向去攀登长城,最终成功翻越的经验正如《冰与火之歌》所说 “别低头看下面”。
而能否翻越长城可能也是我下一个十年的最大挑战。


下面是我自己开的一个微信公众号 [瞬息之间],除了写技术的文章、还有产品的、行业和人生的思考,希望能和更多走在这条路上同行者交流,有兴趣可关注一下,谢谢。

转载于:https://www.cnblogs.com/hehe520/p/6147618.html

相关文章:

  • MVC 外网 上传 下载 实现方式(一)
  • asp.net Ajax Post 请求一般处理程序
  • 我的博客开通了!
  • ASP.NET MVC3默认提供了11种ActionResult的实现
  • 实现GetHashCode时要遵循的规则
  • 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts
  • 用linqPad帮助你快速学习LINQ
  • Cacti监控Tomcatserver实现过程
  • C++ 多继承与虚基类
  • Set集合
  • Solr4.7从数据库导数据
  • 【转】 Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
  • hdu 2335 Containers
  • Druid Indexing 服务
  • iOS7中弹簧式列表的制作
  • HTML5新特性总结
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • React-Native - 收藏集 - 掘金
  • Vue.js 移动端适配之 vw 解决方案
  • 复杂数据处理
  • 前端性能优化——回流与重绘
  • 前端学习笔记之观察者模式
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 正则表达式
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.ajax中的eval及dataType
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (超详细)语音信号处理之特征提取
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (十一)手动添加用户和文件的特殊权限
  • (转)VC++中ondraw在什么时候调用的
  • (转)大型网站架构演变和知识体系
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Core WebAPI中封装Swagger配置
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net中调用windows performance记录性能信息
  • /etc/fstab 只读无法修改的解决办法
  • [2016.7 test.5] T1
  • [20170713] 无法访问SQL Server
  • [20190401]关于semtimedop函数调用.txt
  • [BUG]vscode插件live server无法自动打开浏览器
  • [CISCN 2019华东南]Web11
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [FTP]pureftp部署和优化
  • [GXYCTF2019]BabyUpload1 -- 题目分析与详解
  • [IE编程] IE8 新增的C++开发接口
  • [js]js设计模式小结
  • [loj#115] 无源汇有上下界可行流 网络流
  • [python] 之 装饰器
  • [PyTorch][chapter 63][强化学习-QLearning]
  • [SoftGrid 系列] Microsoft SoftGrid Server 安装篇