Go语言学习路线 - 7.进阶篇:一名软件工程师的价值沉淀

简介: 通过前面几讲的分享,相信大家已经能清楚地看到一名普通软件工程师的发展路线:不断学习技能,提高研发效能,实现业务功能。如果我们尝试回头看,可能会对自己的定位存在疑问:这些日常CRUD的开发工作,很多不具备太高的技术难度,可以靠人力堆积来实现。那么,如何在研发团队里打造自己的技术壁垒、体现个人价值呢?

阶段性的思考

通过前面几讲的分享,相信大家已经能清楚地看到一名普通软件工程师的发展路线:不断学习技能,提高研发效能,实现业务功能

如果我们尝试回头看,可能会对自己的定位存在疑问:这些日常CRUD的开发工作,很多不具备太高的技术难度,可以靠人力堆积来实现。那么,如何在研发团队里打造自己的技术壁垒、体现个人价值呢?

下面,我将分多个层面和大家聊聊,大家可以根据自己的发展目标和工作环境,选择性地发展几项。今天的内容会抛开编程语言之争,从更高的维度来看问题。

1. 专项业务领域

业务往往与公司的赢利点挂钩,决定了公司的生死存亡,所以业务驱动了公司里的很多事情,包括晋升、组织架构等。

大多数的开发者往往长期投入在公司的业务相关开发,或是满足产品的迭代,或是满足甲方的需求。从结果来看,业务开发是最容易看到成果的,可以与具体的增长和营收挂钩。那么,业务领域的开发者需要关注什么呢?我也列举三点

  • 产品设计 - 具备产品的规划与设计能力,将业务开发的经验沉淀为对产品的理解
  • 业务架构 - 能将软件架构适配业务,也能根据公司的基础能力灵活调整
  • 权衡能力 - 权衡技术与业务的冲突,能保证业务快速实现的同时,尽可能地减少技术债

2. 专项技术领域

技术人常常期望能抛开烦杂的业务需求,长期在一个技术领域深耕,例如专职研究存储系统、网络架构、云原生架构、大数据引擎等。这里,我希望有此类想法的同学先想清楚一个问题:你究竟是厌倦了做需求迭代,还是真正喜欢某项技术?

深耕专项的技术领域,遇到的挑战很多,我列举三个比较重要的:

  • 评价产出 - 思考如何将技术变现,在公司中体现自己的能力价值
  • 承载业务 - 对接并服务各个业务团队,根据具体场景做优化、适配等工作
  • 探索前景 - 紧跟并探索技术发展前景,方向准确,并长期坚持

3. 团队领导力

合作与分工是所有团队都面临的问题。随着一名工程师的经验与资历的提升,都会直接或间接地带领团队去实现目标。

那怎么考验一个人的团队领导力呢?一般会更关注以下三点:

  • 能力提升 - 保证资深员工能有效地将经验与技能传递给新人,自身也有足够的发展空间
  • 合理用人 - 如何管理性格、能力各异的成员,尽可能实现产出最大化
  • 落地文化 - 一个团队如果要长久发展,必须得形成文化价值观,并聚拢一批认同这个价值观的成员

4. 研发效能管理

如今,软件工程日益精细化,公司越来越重视研发效能的管理,而非当初那种野蛮地堆人力、抢占市场。

研发效能的管理分为多个方向,例如:

  • 项目/需求/故障管理 - 用平台跟进项目进度、投入人力
  • CICD/devops - 各类自动化的工具平台,促进研发与运维一体化,让研发对整个生命周期负责
  • 基础框架/库 - 加速研发对接日志、监控、部署等平台
  • 流程平台化 - 将公司内的各种日常流程落地为平台

5. 安全

安全是一个很有意思的话题,大部分人的认知是:在没有问题时,安全一文不值;在出现问题后,安全又是至关重要的

安全领域门槛很高,会有专属于自己的一个小圈子。绝大多数的开发者并不需要过多掌握安全相关的技能,只需了解一些常规的安全技能,在日常研发中有意识地加以重视:

  • 网络安全 - 常见的HTTPS、证书、Sync Flooding
  • 数据安全 - 加解密、备份
  • 编程相关 - SQL注入、核心参数校验、审计功能

6. 稳定性

在项目投入生产使用后,稳定性逐渐成为一项重要指标,它与公司的营收直接相关。

在某个程度上,稳定性与安全非常类似,不出问题时,大家都不care稳定性,都想着快速迭代;出现问题后,又想法设法维持稳定。那如何体现一个人在稳定性上的能力呢?

  • 代码研发 - 从实际代码出发,保证核心功能的健壮性和可扩展性
  • 软件架构 - 软件架构稳定,既能保证功能迭代,也能随着规模扩大保证性能稳定
  • 工作流程 - 从功能迭代、需求上线、故障处理等流程出发,控制风险

我的思考

以上六点,是作为开发者的价值点沉淀。我比较赞同一个观点:对公司的价值输出,决定了你的绩效;而对自己能力的沉淀,决定了你的市场价值。所以,绝大多数的人更应该把关注点放在自身的能力沉淀。

不过,我这边也针对一个极端的观点做一下修正:不要花太多心思在公司工作上,而是多提升自身能力。

公司评定一个人包括两块:工作产出与自身能力。光有能力而没有足够产出,是可以让我们在当前岗位上表现达到中上,却很难让自己获得晋升、进而到一个更高的位置去锻炼自己。

个人能力毕竟有限,必须借助公司的力量,才能产出更大的价值;反之,如果你的产出全部依赖公司平台,也就是说脱离了平台你的价值大打折扣,那也是一个非常严重的问题。

我比较建议,在 保证自己能在当前岗位成为TOP10%的前提下,多多提升自己

如果在工作中投入了100%的时间与精力,却依旧达不到TOP10%的业绩产出,这也是很多人遇到的问题。此时,我建议减少纯工作上的投入,多花时间提升个人能力。哪怕会在短期内会导致绩效的不如意,但能换来长期良好的职业发展。

结束语

本篇和大家聊了很多关于个人长期发展的话题,也探讨了个人与公司上的冲突问题。

如果用一句话总结,我会选择:软件工程师的价值沉淀是一个长期过程,核心是锻炼自身能力,也要借助公司的平台来帮助自己更快地成长

目录
相关文章
|
1天前
|
存储 Go 索引
go语言使用for循环遍历
go语言使用for循环遍历
15 7
|
4天前
|
存储 Go
go语言 遍历映射(map)
go语言 遍历映射(map)
18 2
|
5天前
|
Go 调度 开发者
Go语言中的并发编程:深入理解goroutines和channels####
本文旨在探讨Go语言中并发编程的核心概念——goroutines和channels。通过分析它们的工作原理、使用场景以及最佳实践,帮助开发者更好地理解和运用这两种强大的工具来构建高效、可扩展的应用程序。文章还将涵盖一些常见的陷阱和解决方案,以确保在实际应用中能够避免潜在的问题。 ####
|
5天前
|
测试技术 Go 索引
go语言使用 range 关键字遍历
go语言使用 range 关键字遍历
14 3
|
5天前
|
测试技术 Go 索引
go语言通过 for 循环遍历
go语言通过 for 循环遍历
16 3
|
7天前
|
安全 Go 数据处理
Go语言中的并发编程:掌握goroutine和channel的艺术####
本文深入探讨了Go语言在并发编程领域的核心概念——goroutine与channel。不同于传统的单线程执行模式,Go通过轻量级的goroutine实现了高效的并发处理,而channel作为goroutines之间通信的桥梁,确保了数据传递的安全性与高效性。文章首先简述了goroutine的基本特性及其创建方法,随后详细解析了channel的类型、操作以及它们如何协同工作以构建健壮的并发应用。此外,还介绍了select语句在多路复用中的应用,以及如何利用WaitGroup等待一组goroutine完成。最后,通过一个实际案例展示了如何在Go中设计并实现一个简单的并发程序,旨在帮助读者理解并掌
|
6天前
|
Go 索引
go语言按字符(Rune)遍历
go语言按字符(Rune)遍历
21 3
|
1天前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
|
28天前
|
Go 数据安全/隐私保护 开发者
Go语言开发
【10月更文挑战第26天】Go语言开发
37 3
|
29天前
|
Java 程序员 Go
Go语言的开发
【10月更文挑战第25天】Go语言的开发
29 3