今天阅读到一篇文章-Advice to Myself When Starting Out as a Software Developer
作者是一位资深的研发工程师,他在工作多年后,回顾到自己一路进阶打怪所积攒的经验,很有借鉴意义,摘录下来。

1. 每年读两本关于软件工程的书

注意是软件工程,偏系统,架构相关,而非简单的应用型书籍,这种书籍大多偏理论,抽象。但是想要进阶,这种能力必不可少。

2. 精研工作中主打的编程语言,学通学精

精研一道两门工作中的语言,学到底层。此时你发现你已经掌握的一种超能力,使得你在学习其它语言的时候非常快。

你会发现你懂的语言越多,就越了解它们各自的长处和短处。而且,你知道的语言越多,就越容易掌握新的语言——并且在需要时更轻松地深入学习。

3. 重视单元测试用例

高级工程师们经常谈论单元测试的重要性。但是单元测试似乎太违反直觉了:为什么要花更多的时间编写看起来很简单的测试?这是我在某段时间里对单元测试的看法。为了领略单元测试的价值,你需要拥有“啊哈!”时刻。当你编写的单元测试为你节省了一天的时间,那就是“啊哈!”时刻。

不幸的是,在到达这一步之前,你需要脚踏实地,好好编写这些测试,并使它们在持续集成中运行。而且,你可能需要持续做上几个月,才会得到一个“啊哈!”时刻。

4. 养成重构习惯并掌握重构工具

通过不断对项目进行小型或大型重构,让代码变得更好。注意,重构不是搞乱事情。

这里一个不起眼但是很重要的 tips 是:你需要非常了解自己的 IDE,使用或者编写用于重构的插件,使得提取方法、改变量名、提取成常量在瞬间完成!

5. 成长速度和业务场景强关联

找机会在不同的技术栈、不同的领域和具有挑战性的项目里工作。

作者花了七八年的时间才达到自己认为的“高级”水平。而反观身边的同事,有些人加入了像 Uber 这种高成长性的公司,三四年就达到了。这中间的区别是什么?

这些人从事具有挑战性的项目,力求跟上周围其他人的步伐,并经常在中途更换团队,重新开始。他们自愿参与新项目,并在团队中率先尝试新技术。

6. 善于分享

分享的目的有两个:

  1. 提升自身影响力
  2. 确认自己是否真的会了