阶段性的思考
通过前面几讲的分享,相信大家已经能清楚地看到一名普通软件工程师的发展路线:不断学习技能,提高研发效能,实现业务功能。
如果我们尝试回头看,可能会对自己的定位存在疑问:这些日常CRUD的开发工作,很多不具备太高的技术难度,可以靠人力堆积来实现。那么,如何在研发团队里打造自己的技术壁垒、体现个人价值呢?
下面,我将分多个层面和大家聊聊,大家可以根据自己的发展目标和工作环境,选择性地发展几项。今天的内容会抛开编程语言之争,从更高的维度来看问题。
1. 专项业务领域
业务往往与公司的赢利点挂钩,决定了公司的生死存亡,所以业务驱动了公司里的很多事情,包括晋升、组织架构等。
大多数的开发者往往长期投入在公司的业务相关开发,或是满足产品的迭代,或是满足甲方的需求。从结果来看,业务开发是最容易看到成果的,可以与具体的增长和营收挂钩。那么,业务领域的开发者需要关注什么呢?我也列举三点
- 产品设计 - 具备产品的规划与设计能力,将业务开发的经验沉淀为对产品的理解
- 业务架构 - 能将软件架构适配业务,也能根据公司的基础能力灵活调整
- 权衡能力 - 权衡技术与业务的冲突,能保证业务快速实现的同时,尽可能地减少技术债
2. 专项技术领域
技术人常常期望能抛开烦杂的业务需求,长期在一个技术领域深耕,例如专职研究存储系统、网络架构、云原生架构、大数据引擎等。这里,我希望有此类想法的同学先想清楚一个问题:你究竟是厌倦了做需求迭代,还是真正喜欢某项技术?
深耕专项的技术领域,遇到的挑战很多,我列举三个比较重要的:
- 评价产出 - 思考如何将技术变现,在公司中体现自己的能力价值
- 承载业务 - 对接并服务各个业务团队,根据具体场景做优化、适配等工作
- 探索前景 - 紧跟并探索技术发展前景,方向准确,并长期坚持
3. 团队领导力
合作与分工是所有团队都面临的问题。随着一名工程师的经验与资历的提升,都会直接或间接地带领团队去实现目标。
那怎么考验一个人的团队领导力呢?一般会更关注以下三点:
- 能力提升 - 保证资深员工能有效地将经验与技能传递给新人,自身也有足够的发展空间
- 合理用人 - 如何管理性格、能力各异的成员,尽可能实现产出最大化
- 落地文化 - 一个团队如果要长久发展,必须得形成文化价值观,并聚拢一批认同这个价值观的成员
4. 研发效能管理
如今,软件工程日益精细化,公司越来越重视研发效能的管理,而非当初那种野蛮地堆人力、抢占市场。
研发效能的管理分为多个方向,例如:
- 项目/需求/故障管理 - 用平台跟进项目进度、投入人力
- CICD/devops - 各类自动化的工具平台,促进研发与运维一体化,让研发对整个生命周期负责
- 基础框架/库 - 加速研发对接日志、监控、部署等平台
- 流程平台化 - 将公司内的各种日常流程落地为平台
5. 安全
安全是一个很有意思的话题,大部分人的认知是:在没有问题时,安全一文不值;在出现问题后,安全又是至关重要的。
安全领域门槛很高,会有专属于自己的一个小圈子。绝大多数的开发者并不需要过多掌握安全相关的技能,只需了解一些常规的安全技能,在日常研发中有意识地加以重视:
- 网络安全 - 常见的
HTTPS
、证书、Sync Flooding
等 - 数据安全 - 加解密、备份
- 编程相关 - SQL注入、核心参数校验、审计功能
6. 稳定性
在项目投入生产使用后,稳定性逐渐成为一项重要指标,它与公司的营收直接相关。
在某个程度上,稳定性与安全非常类似,不出问题时,大家都不care稳定性,都想着快速迭代;出现问题后,又想法设法维持稳定。那如何体现一个人在稳定性上的能力呢?
- 代码研发 - 从实际代码出发,保证核心功能的健壮性和可扩展性
- 软件架构 - 软件架构稳定,既能保证功能迭代,也能随着规模扩大保证性能稳定
- 工作流程 - 从功能迭代、需求上线、故障处理等流程出发,控制风险
我的思考
以上六点,是作为开发者的价值点沉淀。我比较赞同一个观点:对公司的价值输出,决定了你的绩效;而对自己能力的沉淀,决定了你的市场价值。所以,绝大多数的人更应该把关注点放在自身的能力沉淀。
不过,我这边也针对一个极端的观点做一下修正:不要花太多心思在公司工作上,而是多提升自身能力。
公司评定一个人包括两块:工作产出与自身能力。光有能力而没有足够产出,是可以让我们在当前岗位上表现达到中上,却很难让自己获得晋升、进而到一个更高的位置去锻炼自己。
个人能力毕竟有限,必须借助公司的力量,才能产出更大的价值;反之,如果你的产出全部依赖公司平台,也就是说脱离了平台你的价值大打折扣,那也是一个非常严重的问题。
我比较建议,在 保证自己能在当前岗位成为TOP10%的前提下,多多提升自己。
如果在工作中投入了100%的时间与精力,却依旧达不到TOP10%的业绩产出,这也是很多人遇到的问题。此时,我建议减少纯工作上的投入,多花时间提升个人能力。哪怕会在短期内会导致绩效的不如意,但能换来长期良好的职业发展。
结束语
本篇和大家聊了很多关于个人长期发展的话题,也探讨了个人与公司上的冲突问题。
如果用一句话总结,我会选择:软件工程师的价值沉淀是一个长期过程,核心是锻炼自身能力,也要借助公司的平台来帮助自己更快地成长。
Github: https://github.com/Junedayday/code_reading
Blog: http://junes.tech/
Bilibili: https://space.bilibili.com/293775192
公众号: golangcoding