很多年前,当我仍是一名学生的时分,有一次高我好几届已作业几年的师兄回校给咱们做交流,听说他已经是“高档研制工程师”,在深圳某企业月入上万。那时分心里一阵崇拜,觉得“高档”开发该是多么凶猛的存在,让我无数次憧憬着成为像他相同凶猛且收入高的人群。
时光荏苒,一晃十年过去了。自己也从当初的菜鸟,生长为“高档研制工程师”,然后做了办理、带了团队。但是,在互联网摸爬滚打多年后,发现很多工作跟自己当初幻想的彻底不相同:
- 编程并不总是跟着经验累积越多,你越发轻松
- 长期写一线事务代码并不有趣,甚至有些无聊
- 假如你只想在你的工作生涯中安静的研究技能,那么你在这个工作很难走远
回溯过往,眼瞅着这个工作潮起潮落,仍然有越来越多的新人奋不顾身的涌入,在此以一个工作“老兵”的身份给即将或许刚入行的同学一些感悟和分享,期望能让你们少踩一些坑,踏上更坚实的工作征途。
爱惜前两年,用力去卷
我一向以为,这个工作(或许其他工作也是)新人生长最快的便是前两年。这是因为:
- 新人刚刚步入职场,关于新的应战和时机充满了热心。你们带着刚从校园取得的常识和技能,急切地想要将这些应用到实践作业中,然后敏捷增长。
- 在前两年,新人通常会承当较少的重要项目和高档别的责任。这为你们供给了一个相对安全的环境,能够更自由地学习和尝试新事物,而不用忧虑严重的结果。
- 在最初的阶段,新人会得到较多的教导和反应。这有助于你们更快速地纠正过错、学习新常识,并逐步进步自己的才能。
- 新人进入作业环境后,需求敏捷习惯不同的作业情境、流程和团队文化。这种习惯性的练习使你们能够更快速地习惯变化,并培育出解决问题的才能。
- 许多新人在前两年内通常没有太多家庭担负,生活开支较少。这使得你们能够更专心地投入到作业和学习中,然后愈加快速地生长。相较于后续或许呈现的家庭责任和花销,你们在这段时间能够更自由地挑选投入时间和精力,去学习新技能、探究新范畴,并堆集宝贵的经验。
想起我工作生涯的第一年,对未来充满了无尽的焦虑。也是因为这种焦虑,让我牟足了劲去学习工作技能。我不记得有多少个晚上是学到了半夜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。前者负责公司根底设施建造,后者负责大数据处理。他们团队对也公司各范畴事务都不熟,在公司事务还不错的情况下,是有足够资源养活的。但这两年公司业绩下滑、股价大跌,终究导致大规模裁人,首要开刀的便是这两个团队。因为纯技能给公司带来不了事务收益。
这是我入行十年的一些感悟,期望能帮助更多新人在这个工作中更好地生长。无论你挑选的路途如何,保持对技能的热心,一起不断拓宽自己的视野,用心去发明价值,你将能在这个变化无常的工作中继续生长,迎接未来的应战。期望这些感悟能够为你们的工作开展供给一些指引,少踩一些坑,走得愈加坚决。加油!