技术领域充满无尽的挑战。

你会的构架会改变。你最熟悉的工具会进化。有的技术正流行,有的技术已落后。你会因为兴趣改变而投入到一个新的技术领域。

在工程行业工作代表着你会一直学习新的东西,保持新鲜的技能。

5年前,Angular 是非常受欢迎的。大部分的前端工作都想要 Angular 的技能,现在市场变了。 React 超越所有前端构架,成为最火红的新技术。

5年前,Rails 是非常受欢迎的。 现在职务描述里出现频率最高的是 Node 和 Python。

保持新鲜的技能是主要元素之一,那会让你在众多的工程师当中脱颖而出,营造一个持久的事业生涯。

我还记得我当时看着所有我要学的东西,大家讨论我不懂的新技术,我会非常沮丧。

每次我感觉我可以胜任一个构架的时候,就会有另外一个变得更受欢迎。 我感觉我永远都赶不上。

但是那也是做工程师最好的部分 —— 你永远不会感觉到无聊。那也是一个可以帮助你在竞争里脱颖而出的工具。

开发者的学习方式和你在学校学习的方式是完全不一样的。会有一些阅读,一些课程。但大部分时间应该用来构建项目。

从实践中学习

小时候,你是从实践中学习。

你先学会讲话,虽然不是完整的句子。从做中学会画画。你婴儿的时候没有读过有关的书籍。你没有读过“婴儿手指绘画101教学”。

你通过练习学会走路。这才帮助你快速驾驭新的概念。你永远都在 —— 做。

在工程领域,你是通过构建项目来掌握概念的,而不是通过死背。

当我刚开始做工程师的时候,我不断阅读书本和做抽认卡。我用了无数的时间制作抽认卡。我以为买了一本新书或网上课程就会教会我自己怎么编程,然后变成工程师巨星。但是这并没有发生。

回想起来,我不确定那些抽认卡会有什么作用。

花了几个月时间熟背句法和定义, 我还是在原地。 只有开始构建项目的时候,技能才开始进步。

在热爱阅读工程书籍的同时,我大部分的时间会花在略读一本书,然后立刻尝试新的概念。

这是一个比较痛苦的学习方式。我不会骗你 —— 挺可怕的。 但是没有什么能像亲自构建项目一样帮助你提升编程技能。速度最快的学习方式就是构建项目。

但你怎能办到呢?

逃离教学地狱

当我学习怎么编程的时候, 我花了几个月的时间跟随网上教学。 我会一边看教学,一边跟着每个步骤的做。 永远都不会试着靠自己。

如果教学太难的话,我会换另外一个。我会每天花几个小时再看教学。

我尝试过用我在大学学习的方式用在编程里。但并没有用。学习编程是要活跃的学习,不是被动式的。

但是模仿网上教学挺容易的。我永远都不会觉得愚蠢或感觉到冒牌者症候群。我会最终觉得很有成就感。

与此同时,我会盲目的跟随着影片,而不会学到任何东西。我不会逼迫自己。如果你想要学一门新的技能的话, 你一定要逼迫自己往前进。

6个月过去,徘徊在教学地狱里面,享受着那里的温暖气候,舒适圈。我发觉到我没有学到任何东西。我没有任何的技能。我太重视抽认卡和被动式得看网上教学,多过于构建任何东西。

与此同时, 早已经开始构建项目的朋友们会在我身旁略过,他们的学习速度快到难以置信。

我会感到很沮丧。我连写一个基础的程序都不会。如果不是跟着一个教程的指导一步一步地做,我真的不会。直到我开始写小型的程序,我才被点醒。

若感到舒适的时候,马上远离网上教学。教学只是刚开始的时候才好。但是,到某一个程度,那只会把你的学习缓慢,特别是如果你是太过于依赖的话。

这可以应用在你整个事业的旅途。如果你是一个初级工程师,选一个小小的方案。不要用网上教学。尝试自己了解怎么建设。不要气馁,不成功没关系!从小方案开始做起来。

还有,如果你是一位拥有很多年经验的工程师,而想要从后端工程转做机器工程话,选一个小方案开始编程吧。

持续学习

另一个可以让你变成一名出色的开发者的技能是当一个永久学习者。

当你刚开始学习编程的时候,每天的素材非常多。你不断的吸取新的概念。要学的知识好像无止尽似的。

在理想的世界里,无论你当了工程师多久,你还会永远学习新东西。始终会找到平衡的。

你会开始觉得在工作上变得很舒适,然后抱怨自己的技能怎么好像凝滞似的。 很快就会感觉到无聊。

保持技能敏锐会帮助你工作稳固,就算经济不好的时候。

以下是几个可以让你永久学习的方法。

  • 写编码,常写
  • 跟比你优秀的开发者合作
  • 如果感觉被耽误的话,要求在工作上换队伍
  • 为开源项目做贡献
  • 参加会议和讲座
  • 定期邮件
  • 开始在 Twitter 跟开发者交流
  • 不断的阅读
  • 构建项目
  • 考新的文凭
  • 网上课程
  • 休息。年休假是不可以带到棺材里面的。
  • 阅读部落格
  • 找导师
  • 分享知识
  • 写部落格

以上会有些是你不可以在你空挡的时间做的。没关系。 我们都会有私生活。专住在工作上学习,像换团队,找导师,或成为一位导师,等等。

成为一位出色的工程师不代表要无时无刻的编程。编程是一个工作。这是你朝九晚五的工作。但是你可以选择在你工作上成为一个建设者。

当你在学新技能的时候, 远离书籍和课程。尝试在工作上找一个任务可以用的上你想学的新技能。这样会帮你快速的学会。

适应非舒适区

在学习新技能的时候,你要逼迫自己。让你适应非舒适区。

当工程师前,看教学感觉很容易。我会很少感觉到疲倦。我会用 Codecademy 和其他频道,然后觉得我有进步。但是我并没有。

6月过后,比起刚开始的编程路程里,我并没有前进。 我还是很初级。

当我刚开始担任初级软件工程师的时候,我是在一个持续的恐惧状态。我感觉我有做不完的工作。那是一个很恐怖的感觉。我突然间比以前学快很多。我脑袋像一个海绵一样。

寻找机会成长。你如果继续做同样的事情的话和待在舒适圈,你永远都寻找不到机会成长。你如果做同样的任务和继续地做同样的事,你不会推自己向上和成长。

保持“自不量力”。 你如果花所有的时间看网上教学,你会感觉到轮回而不会觉得有挑战性。你也不会觉得正在学习。

但是,你如果选择强迫自己,你会学得比较快。觉得不习惯就到表正在成长。

就像学钢琴一样,你如果不停重复练习同一个你已经很熟练的曲子,你是不会进步的,因为你要学一些比较有挑战性的曲子。

同样的逻辑可以放在人生的其他阶段。

当我在找我第一份开发者的工作的时候,选择有在 Apple 的一个职位或新兴小型企业当学徒。

Apple 的那一份工作薪水比较高,我也认识几个朋友在那里工作,相对来说我已经有一个朋友圈和支持系统。但是,那职位是一半 QA 一半工程,如果做的好,会有机会转到全职工程师。

那个新兴小型企业的工作是非常的不稳定。没有任何保证。公司里没有另外一个女工程师。我是在工程团里唯一的女生。

我还没有提到那不是一个工作邀约!那只是当学徒 3 个月,之后不保证会录用我。我要搬进城市里,签一个租约,如果当学徒失败的话,还要负担租金。

那时候是编程训练营最澎湃的阶段。当时有非常多旧金山的毕业生,所以他们都面临了市场最饱和的时期。很多招聘都会常常写着‘拒招训练营毕业生’,情况让人非常的沮丧。

我知道如果我在 Apple 工作的话, 会对我的简历非常好。 我也会赚比较多钱。但是我不停的思考小型企业可以带给我的成长和指导机会。

我真的不知道该怎么办。 在训练营的时候,我一直都被灌输一个概念,就是会得到高薪水的开发者工作。不是一个低薪水和没保障的学徒经验。

我始终答应了3个月的学徒期。我大部分的朋友都以为我疯了。我家人也觉得我疯了。

我突然要在3个月内在学徒期证明自己。我很快就有数不完的周末和夜晚都在工作中度过。我吓坏了。

这里速度非常快。我不可置信我会的东西有多么的少。有几天,我紧张到我快要请病假了。 我幻想火车会延迟,让我可以不用上班。每一个会议都是折磨,因为我会觉得我做得不够。

与此同时,跟我读同一个训练营的朋友都会跟我讨论他们在 Apple 轻松工作,他们每天都有合理的工作时间。更不用提他们还赚得比我还多!

2个月过后,我经理想要跟我开会商量学徒期的事。我当时深信他们会开除我。

他们反而告诉我会提前一个月结束学徒期,给我一个全职工程师的职位。我没办法形容我那天有多开心。

我继续把自己投身于工作里面。我会义务去做一些我没把握的任务。我如果不懂怎么做一些事,我还是会说我可以。一年半后,我在同一个小型企业里成为了一位资深的工程师。

若是答应了 Apple 的那一份工作会比较容易吗?肯定会。但是答应做那 Apple 工作的工程师永远都不会像我这样有一个好导师逼迫他们自我挑战,提升技能。

长期来说,他们会花更多时间来弥补早期失去的学习机会。有一些几年后还在同一个职位。

根据你的目标,那可能对你来说很好。没问题。但是,我是要成为一个出色的开发者,并且拥有非凡的事业。我猜如果你正在阅读这篇文章的话,你也是如此的想。

答应小型企业的工作会很冒险吗?肯定会。很多人都觉得那不是一个好策略。但是,我选择非舒适,我也得到收获。会觉得习惯吗?肯定不会。我或许老了5岁吧。

选择非舒适。人生最大的收获就是努力工作。把网上教学放下,选择你不会解决的任务吧。

深度工作

编程是一份需要深层集中精神的工作。切换场景看手机或社交平台,只会对你一天的工作有害。

大部分的人都会工作几分钟,然后就会看手机。如果普通员工每天都会花 8 小时工作,然后花 2 小时以上做一些没有效率的事,你很快就会脱颖而出,因为你是真的好好利用工作时间,完成了任务。

你只要培养专注和深度工作的习惯,你会成为一名出众的工程师。 创造这一种习惯也会呈现你拥有坚不可摧的工作道德。

你可以多长时间不看手机或 Facebook 或 Twitter? 5 分钟?10 分钟? 15 分钟?

你如果还没阅读它, 去取一本 Cal Newport 的《Deep Work》。从一点开始。尝试在同一个任务无干扰地专注 20-25 分钟。把手机调到飞行模式。删去所有没用的标签,在你门口放一个大的招牌写着‘请勿打扰’。

从这个时间起,开始构建程序。尝试不打扰之下工作 45 分钟。在一个干扰匆匆的世界里,有能力做这样的事是很宝贵的。你会发觉你在这么短的时间内可以完成的工作量会很惊人的。

有很多应用程序使用 Pomodoro 技术帮助专注力。尝试体验一下,看看那个适合你。

结语

要成为一名出色的工程师是要不断地持续学习。如果你运用我刚分享的技能策略的话,你永远都会找到工作的。

这个文章是出于我的新书《The Standout Career》。欢迎点击预购这本书。

原文:How to Become a Standout Developer and Accelerate Your Coding Skills,作者:Randall Kanna