此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。
饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高级程序猿”的巅峰,却被告知:你年纪大了,35了,反应慢了,我们不要你了。
程序猿,老惨了。
许多人都在网上发帖,他们希望时光可以倒流,回到那个他们还是毛头小子的美好往日。
他们认为现在才开始学习某些东西已经太迟了,要是早点开始学习就好了。
“如果我失败了怎么办?”
“我希望我可以……”
“如果我现在才开始学习,永远都不会成为程序员。”
等等……不胜枚举。
其实,这些都是借口。战胜自己,如果你想做,就一定可以做到。
小芯接触过形形色色的开发工程师——有老有少。他们和你一样,都是从想要做好生活中的某件事开始。
不要担心你的年龄。说实话,年龄与你坐在键盘前的表现无关。
重要的是自律和动力。
一位成功的老程序员大佬向我们讲述他的经历和感悟。(下文采取第一人称叙事,我皆指“这位老程序员大佬”)
当然,不是每个人都能面对成为一名程序员所需经历的痛苦旅程。(这位程序员大佬使用“痛苦”二字来形容“他历尽千辛万苦才走到今天的位置”的过程)。
因为如果你想尝试并喜欢编程,那么在某种程度上,编程会变得具有挑战性并令人上瘾,最后会很痛苦——至少对我来说是这样。最重要的是,把自己逼到极限的过程很有趣。
但如果你下定决心想学点什么,那就去学吧。作为一个没有大学学位的人,我在这里要告诉你,无论你处于人生的什么阶段,年老或是年轻,一切皆有可能。
编程的“技能”
许多人把技能与编程相提并论,就好像随着年龄的增长,你会更擅长编程。你在某个领域花费的时间越长,你确实会掌握一定的知识,但这取决于你的个性。
请记住,技能与编程的时间长短无关。技能是你的适应能力,记住如何修正常见的错误,又能学到新东西。
当我学习代码的时候,大脑就像一块海绵尽全力地吸收网上和办公室里的信息。我不需要像坐在旁边的老员工刚开始工作时那样,要亲身经历才能学会识别某些错误。
人们认为一个人的编程时间决定了他的编程能力。但事实并非如此。我知道你们中的一些人会这么想仅仅是因为你年纪大了,这意味着你永远不会学习如何编程,或者没有时间去精进。
如果这是你,我希望你现在不要读这篇文章,也希望你把这些想法当垃圾扔掉。
迈克,告诉我需要什么
要学习编程,你只需要了解编程的工作原理。
如果你了解编程的概念: OOP、函数、类型等等,那么你就拥有了扩展不同语言和框架知识的能力。
在学习了第一种编程语言和概念之后,初次学习编程并不能成为你无法成为一名开发工程师的理由。
有许多优秀的JavaScript开发人员只学了短短的6个月。
你要用学习速度来衡量自己,而不是已知的知识。
可能明天我去工作,首席开发工程师就会告诉我,我们将改变应用程序的架构,使用Ruby on Rails来编程。
你知道吗?这时,我和你现在一样:惴惴不安、充满疑虑,害怕学习Ruby On Rails。
但幸运的是,在网上有很多很棒的开发工程师,在一定程度上他们愿意帮助你。
另外,我已经有了一个大致的概念,所以我现在要做的就是理解Ruby语法,这样就可以了。
我以前从未使用过Ruby on Rails,但我了解编程的工作原理。我知道代码需要如何与计算机交互。我知道代码需要编译(如你所知,有些代码与其他的不同)。
我知道我有大量的资源,比如官方文档和谷歌,以此来理解Ruby on Rails的工作原理。更惊喜的是,大多数语言甚至有一个启动应用程序或教程。
内容在那里;而你是你自己唯一的学习阻碍。
放手去做
如果在你学习第一种编程语言时候理解了编程的一般工作原理,那么你应该可以走得更远。
在学习和适应其他语言以及可能遇到的挑战时,你在学习第一种编程语言的时候所学到的知识就可以帮到你。
如果你想成为一名开发工程师,那就学习JavaScript。用这种语言做几个项目,再用这些项目向你的潜在雇主展示你的能力。
这并不是说你花一周时间学习JavaScript,就可以在苹果找到一份首席开发工程师的工作。并非如此。
但是通过练习,你会对自己的编程能力更有信心。你会经历困难、沮丧、甚至恼火,但这都是值得的。
制定一个6个月的学习计划,每天预留一定的时间坐下来学习JavaScript。一旦你创建了一些应用程序,取得了不错的投资,那么你早已成为公司的价值所在。
此外,当你学习普通的老式JavaScript时,引入如Angular或React这样的框架会帮助你掌握和理解。不要急于搞懂一个框架。你要用到它的时候自然会明白。
但我能像其他人一样聪明吗?
问题是: 这重要吗?
当然,有经验的开发工程师会知道一些技巧,而且他们有经验。但是,当你和从事编程工作20年或30多年的人交谈时,我想他们告诉你的和我一样。
如今,他们能写出更好的代码只是因为他们更善于理解和记忆过去所遇到的某些问题。他们仍然谷歌搜索浏览堆栈溢出问题的答案。
而且,我认为你擅于预测计算机的反应,也擅于阅读技术文档并将其应用到你试图解决的问题上。
当你开始学习并实践时,你会发现阅读堆栈溢出问题并理解其解决方案将变得更容易。你解决问题以及向他人阐述问题获得答案的方式也将变得更加容易和准确。
对于那些已经编程多年的人来说,在有新技术发布时,他们也不得不像你学习第一种编程语言时一样去学习。
但是他们的优势是他们已经学会了第一种编程语言和概念。
经验丰富的开发工程师仍会遇到问题。他们仍会犯错。每一天都是一个不断学习的过程。
我发誓,当人们问我以什么为生时,我不会再回答“我是一名开发工程师”。我会说“我学习软件开发”,因为一年之后,我很可能会学到一些我今天不知道的新知识。
源源不断的学习动力,就是你一直成功的秘诀,就像这位程序员大佬一样,你也可以,加油!米娜桑~