入行十年,卷王也卷不动了,想对新人说
很多年前,当我还是一名学生的时候,有一次高我好几届已工作几年的师兄回校给我们做交流,听说他已经是“高级研发工程师”,在深圳某企业月入上万。那时候心里一阵崇拜,觉得“高级”开发该是多么厉害的存在,让我无数次憧憬着成为像他一样厉害且收入高的人群。
时光荏苒,一晃十年过去了。自己也从当初的菜鸟,成长为“高级研发工程师”,然后做了管理、带了团队。然而,在互联网摸爬滚打多年后,发现很多事情跟自己当初想象的完全不一样:
- 编程并不总是随着经验累积越多,你越发轻松
- 长时间写一线业务代码并不有趣,甚至有些无聊
- 如果你只想在你的职业生涯中安静的研究技术,那么你在这个行业很难走远
回溯过往,眼瞅着这个行业潮起潮落,仍然有越来越多的新人奋不顾身的涌入,在此以一个行业“老兵”的身份给即将或者刚入行的同学一些感悟和分享,希望能让你们少踩一些坑,踏上更坚实的职业征程。
珍惜前两年,用力去卷
我一直认为,这个行业(可能其他行业也是)新人成长最快的就是前两年。这是因为:
- 新人刚刚步入职场,对于新的挑战和机会充满了热情。你们带着刚从学校获得的知识和技能,急切地想要将这些应用到实际工作中,从而迅速增长。
- 在前两年,新人通常会承担较少的重要项目和高级别的责任。这为你们提供了一个相对安全的环境,可以更自由地学习和尝试新事物,而不必担心严重的后果。
- 在最初的阶段,新人会得到较多的指导和反馈。这有助于你们更快速地纠正错误、学习新知识,并逐步提高自己的能力。
- 新人进入工作环境后,需要迅速适应不同的工作情境、流程和团队文化。这种适应性的训练使你们能够更快速地适应变化,并培养出解决问题的能力。
- 许多新人在前两年内通常没有太多家庭负担,生活开支较少。这使得你们能够更专注地投入到工作和学习中,从而更加快速地成长。相较于后续可能出现的家庭责任和花销,你们在这段时间能够更自由地选择投入时间和精力,去学习新技能、探索新领域,并积累宝贵的经验。
想起我职业生涯的第一年,对未来充满了无尽的焦虑。也是由于这种焦虑,让我牟足了劲去学习行业技能。我不记得有多少个晚上是学到了半夜2-3点,但我的收获是专业技能得到了快速成长,为自己的职业生涯开了一个好头。
后来我进了大厂,当了管理,大厂对新人一般都会有一个培养机制,比如:3个月入门指导、6个月辅导计划、年度提升规划等。同时,在做事的标准上对新人的宽容度也会更高,会给你试错的机会,但会要求你从错误中去复盘、成长。
然而,在多年的管理生涯中,也遇到了很多新人在短暂的努力过后,变得不思进取,早早的就退出了奋勇争先的行列,被同龄人快速超越。
印象最深的是22届的一位同学,暂且称为A某,成都电子科大毕业。有名校光环,学习能力也强。从实习到入职后前半年,非常积极、努力,成长也很快,半年过后就能独立支持中小项目的研发。但随着时间推移,他身上的劣势也越发显现。在掌握了工作的基本技能后,他开始变得有些不务正业:在工作中开始花大量时间学习安全技能,但本职工作中几乎用不到。相应的,他的工作产出越来越低,交付不及时,质量不合格,对他的投诉也越来越多。经过3个多月的沟通、辅导,再沟通、给改正机会后仍然看不到任何进步,最终被辞退。
写代码很简单,但写好代码很难
当你掌握了一定的专业技能后,实现业务功能对于大多数开发者来说都不是一件难事。但想写出好代码却很难。比方说下面的代码,你认为是好代码么?
func Deduplicate(input []string) []string {
result := []string{}
for _, item := range input {
exists := false
for _, r := range result {
if r == item {
exists = true
break
}
}
if !exists {
result = append(result, item)
}
}
return result
}
这段代码用于对字符串数组进行去重操作。虽然实现了去重功能,但从代码质量的角度来看,它存在一些问题:
- 性能较差: 在
result
切片中进行遍历查找是否已存在相同的元素,时间复杂度较高,特别是当输入切片较大时。 - 可读性不高: 嵌套的循环和多个条件判断导致代码复杂,难以一眼理解逻辑。
- 未使用现有工具: Golang 提供了
map
数据结构可以用来更高效地实现去重,但代码中未使用。
让我们试着使用map做出改进:
func Deduplicate(input []string) []string {
unique := make(map[string]bool)
result := []string{}
for _, item := range input {
if !unique[item] {
unique[item] = true
result = append(result, item)
}
}
return result
}
是不是瞬间看起来都舒服多了😄。
那么该如何写出好代码呢?
好代码并不仅仅是实现功能,更是一种艺术和哲学,我们在写代码时,应该多思考代码的质量和可维护性。问自己以下问题:
- 这段代码是否易于阅读?其他人能理解吗?
- 是否有更简洁的实现方式?
- 是否需要加入注释来解释实现思路?
- 是否考虑了性能问题和异常情况?
- 是否符合团队的代码规范和设计风格?
这些问题可以总结为以下的编码标准:
- 可读性优先: 代码应该易于阅读和理解,变量名、函数名应该具有表意性。清晰的命名可以减少代码注释的需要。
- 简洁明了: 避免冗余代码,使用合适的数据结构和算法,让代码尽可能简洁,同时保持功能完整。
- 注重性能: 在保持代码可读性的前提下,考虑算法的效率和性能。避免不必要的循环和重复计算。
- 注释解释: 代码中应添加适量的注释,解释代码的意图、实现思路和关键步骤。这有助于其他开发者理解和维护代码。
- 模块化设计: 将代码拆分成小的、可复用的模块,提高代码的可维护性和可测试性。
- 错误处理: 考虑异常情况和边界条件,进行适当的错误处理,避免潜在的问题。
- 版本控制: 使用版本控制工具管理代码,保留历史记录,方便回溯和团队协作。
写好代码是一件需要时间和经验积累的事情,但始终保持对代码质量的追求,将会使你成为更优秀的开发者。
想拿高薪吗?首先要成为卷王
过去的十多年是互联网疯狂发展的年代,很多人包括我吃到了这个行业的红利,行业内动则薪资上百万、甚至几百万的大有人在。但随着行业红利的逐渐下滑,越来越多的新人涌入,这个行业肉眼可见的变得越来越卷。
我印象中的“卷”是从16开始的,这一年被称作直播大战的一年,也是“短视频”元年。随着智能手机的普及,移动化的加速,万物皆"上线",行业巨头(尤其AT)疯狂扩张和竞争。什么“996是福报”、"面向ICU编程"成为行业普遍的现象。行业变得越发内卷的同时,薪资也确实水涨船高,吸引了越来越多“用生命”换钱的卷王(😭)。
这就是行业的现实,特别是这两年红利期的减少,经济的下滑,大厂业务收缩、裁员加剧,对于新人来说,竞争变得更加剧烈了。在这样的背景下,我为什么推荐新人去“卷”呢,是因为:
- 积累经验: 通过卷,你可以迅速接触到各种项目、技术和领域,积累宝贵的实战经验。虽然过度卷可能会疲惫,但在一段时间内,你会获得比其他人更多的锻炼机会。
- 成为多面手: 卷王往往需要在短时间内涉猎多个领域,这培养了你的多面手技能。这对于职业发展和未来的岗位选择都有好处。
- 快速成长: 卷王面对各种挑战,需要不断学习、解决问题。这种快节奏的环境可以让你迅速成长,积累的知识和技能会让你在职业生涯中受益匪浅。
- 适应压力: 行业的快速发展和竞争带来了巨大的工作压力,通过卷王经历,你会逐渐适应并变得更加抗压。
- 职级晋升:通过卷让自己在公司脱颖而出,快速晋升,晋升一定伴随着薪资的增加,就算是跳槽你晋升的职级也是你薪资谈判的重要亮点。
虽然成为卷王可能需要付出更多的时间和努力,但在现如今的竞争激烈环境下,通过卷王的方式可以更快地脱颖而出,为自己的职业生涯奠定坚实的基础。
搞技术可以,但不要只搞技术
”我就想安安静静地搞技术、敲代码,用技术思维解决技术问题,也用技术思维解决业务问题。我能实现业务功能就可以了,我不想也不愿花心思去搞懂业务“。这或许是许多研发者的心声,搞懂业务是产品、运营的事情,我是技术专注技术就行了。
曾几何时,我和千千万万的技术开发一样也是这么认为的。直到有一天我感觉卷不太动了(也有可能是年纪大了😂),我发现业界新的技术、框架层出不穷,技术之路永无止尽。而且也见证过一些技术牛人随时被下岗(有一位很厉害的架构师曾经是我下属),我突然觉得:技术思维很重要,但只动技术不懂业务你就随时可替代。
毕竟,任何技术都是要为业务服务的,只有有市场的业务才能活下来,只有活下来的业务才能让公司养活技术团队。脱离市场(业务)单纯只靠技术养活团队的毕竟是极少数(行业技术推动者)。
举两个鲜活的例子,我公司之前有两个只专注技术解决问题的团队:一个是infra,一个是data。前者负责公司基础设施建设,后者负责大数据处理。他们团队对也公司各领域业务都不熟,在公司业务还不错的情况下,是有足够资源养活的。但这两年公司业绩下滑、股价大跌,最终导致大规模裁员,首先开刀的就是这两个团队。因为纯技术给公司带来不了业务收益。
这是我入行十年的一些感悟,希望能帮助更多新人在这个行业中更好地成长。无论你选择的道路如何,保持对技术的热情,同时不断拓展自己的眼界,用心去创造价值,你将能在这个变化多端的行业中持续成长,迎接未来的挑战。希望这些感悟能够为你们的职业发展提供一些指引,
来源:juejin.cn/post/7271542820807442487