有事者,事竟成;破釜沉舟,百二秦关终归楚;苦心人,天不负;卧薪尝胆,三千越甲可吞吴。这句话,古今往来不知道激励了多少寒门学子。在今天,这句话用在那些自学成才的程序员身上,也是极其合适的。你知道吗?有很多著名的程序员,其实并不是科班出身,而是靠自学成才的半路出家的“野生程序员”,比如 Bill Gates。如果你不是科班出身的程序员,而是靠自学成才的,那么该如何提高自身呢?今天,我们来听听过来人 Matthew MacDonald 分享的心得和经验。
如果你是自学成才的程序员,可能会遇到一些盲点,本文为你介绍了如何查漏补缺的方法。
如果你是一名开发人员,你可能会有一个如何走上编程之路的故事,但我并不是指你第一次是如何学会编写代码的故事,尽管这个故事可能与本文要讲的内容有所重叠。我的意思是,当你第一次决定用逻辑和软件指令来解决一个新问题的时候;当你决定将代码作为永久有用的工具放入你的工具箱的时候;事情转变的那一刻,你决定成为一名真正的程序员。
我的编程之路,与大约三分之一的专职程序员一样,并没有正式的计算机科学学位。但我从小就喜欢鼓捣电脑,是传奇的 QuickBasic 和 VB 伴着我长大的,而这些爱好在当时,仍然是一种新奇的事物。我知道,不管我最终是否会进入计算机领域,这个巨大的米色盒子(译注:所谓的米色盒子,就是个人电脑主机,当时主机体积比今天大得多)将会以某种形式,永远成为我生活的一部分。但在我上大学的时候,我更感兴趣的是学习那些我自认为并没有机会自学的课程,比如粒子物理。
但也许这并不是一个坏主意,因为,我确实找到了一条通往专业编程的道路。当我在一个不那么有趣的岗位上工作时,我就利用空闲时间来学习和考取证书。不久之后,我就进入了一个全新的领域,并突然为之着迷,比如密码学、网络协议和数据库优化等。当然,我也开始编写程序来填补我在公司工作中的空缺,比如报告工具、订购工具,以及可以完成本不该做某些事情的软件,比如依赖不稳定的 ActiveX 控件。不久之后,.NET 出现了,我遇到了一些非常聪明的人,并且难得有机会重塑自己,并重置了 Microsoft 出色的平台。剩下的就是历史了。
作为一名自学成才的程序员,我很清楚我的基础并不完美。当然,也有未受过正规教育而自学成才的软件传奇人物和黑客天才。但是,如果你不是神童,而是一个普通人的话,那么自学技能就会伴随着一个巨大的“星号”(*)。有差距,也有盲点。对于许多自学成才的程序员来说,他们很难确定自己到底缺少了哪些知识或技能。因此,我写下本文的初衷,就是为那些自学成才的开发人员提供提高技能的快速指南。
自学编程最大的局限性就是,你不知道哪些事情你还不知道。是的,无知确实会发生在任何人身上,哪怕他拥有博士学位。但是,由于自学成才的程序员会坚持不懈地专注于实际目标,如建立网站,让应用程序运行,将数据从 A 点传到 B 点,因此,他们更容易跳过那些看上去 “没什么大用”的理论内容。
以下是一些来自计算机科学核心的话题,而自学成才的程序员往往会绕过这些话题:
当然这并不是说,自学成才的程序员就不能自己学习这些课程了。只是,当有另一个新的 JavaScript 框架需要解决的时候,你就很难将自己投入到理论中去。而且,由于自学成才的程序员专注于实践项目和工作代码,他们甚至可能没有意识到实际代码表面下的理论“冰山“。
虽然计算机科学理论可能不会有立竿见影的效果,但它还是有其他好处的,只不过没有那么明显罢了。实际上,前面列表中所有看似深奥的主题,在适当的时候可能都是至关重要的:
缩小差距:阅读 Algorithms in a Nutshell (《果壳中的算法》),这是我最喜欢的一本书,或者你可以去可汗学院( Khan Academy)转一转。
缩小差距:这个是很难自学的领域之一,但你可以通过免费的虚拟教室来学习很多东西。Neso 学院就有我最喜欢的关于这一主题的系列讲座,有 100 多个小视频。这些讲座讲得很深入,但每期只需十分钟就能看完。
缩小差距:如果你已准备好动手,可以从非常容易理解的 A Programmer’s Introduction to Mathematics (《程序员数学指南》)这本书开始,这是随你付的下载版本。
译注: 随你付,Pay what you want (PWYW)是卖家按所望付费 —— 有时也含免费 —— 的定价策略。商品或设最低价和 / 或指导建议价,买家也能出更高价购买。
缩小差距: 大〇符号法很很好学。你可以在这里找到一个不错的概述。
我为你提供一些好建议。如果你是自学成才的程序员,那就抽点时间(比如 5%)去研究更多的理论性课题。就用上面列表中的链接即可。就算你在日常工作中用不着这些知识,但它也能拓宽你的视野,培养你的好奇心,并帮助你理解计算机科学中一些更深层次的奥秘。毕竟,正如每个经验丰富的程序员都知道的那样:除非你去使用理论,否则你永远不会去使用。
规划计算机教育的最重要好处,可能并不在于你学到了哪些关于计算机科学的知识,而是在于你学会了如何看待自己。
无论是自学成才的程序员,还是受过正规教育的程序员,当他们刚进入职场时,都会存在知识差距。但是,自学成才的程序员更可能会感受到一种挥之不去的恐惧:担心他们的技能不完整或不合理。他们还担心,有些事情他们应该知道,但却从来没有通过 Google 搜索核实过。他们还担心其他语言和计算理论的核心知识。还有一件令人惊讶的事是,他们居然还担心发音的问题,认为用错误的方式来讲述编码器行话时会暴露出他们是 “江湖骗子”。通常强调的词汇包括技术(SQL、ECMAScript、JSON、Wasm)、技术术语(贝叶斯、元组),甚至是符号(#!、或 “hashbang”。)。
然而,自我怀疑并不全是坏事,毕竟,它可以驱使你去寻找新的知识不是?但是,当你需要向客户、同事或潜在雇主表明自己是程序员时,这些不安全感可能会伤害到你。
解决这些问题的最好办法就是参与尽可能多的对话。你不可能研究软件开发的每一条途径,但你可以通过与尽可能多的不同类型的程序员打交道来拓宽你的视野。下面,我提供了一些建议:
作为附带的好处,人脉关系网对你职业前景的好处远超于建立一个最好的投资组合网站。
对专职程序员的调查表明,自学成才的程序员始终是少数。但换一种方式来提个问题,情况就不同了。
例如,以 Hacker Rank 的调查为例,它发现了这么一种现象:自学成才和只在学校接受教育的开发人员,在所有程序员中所占比例都略低于三分之一。但是,将正规学习和自学结合起来的开发人员的比例反而超过了这两者,占到了近 38%。
这并不奇怪。在瞬息万变的软件开发世界中,每个程序员都离淘汰只有几步之遥。最成功的程序员,都是那些能够不断自学的人。
正规的计算机科学教育是一种优势。但自我提高的能力也是必不可少的。
这就是自学成才的程序员的收获。这并不是说,有正规计算机科学教育背景的程序员就没有自学的能力。但自学成才的程序员已经面临着一场严峻的考验:他们一无所有,就一头扎进去,拥有的只是好奇心和赤裸裸的野心,就学会了他们需要的东西。这项技能,将会为你的整个职业生涯带来回报。
作者介绍:
Matthew MacDonald,教师、程序员、重磅书籍的作者。
原文链接:
https://medium.com/young-coder/what-does-the-self-taught-programmer-miss-cecce2f71b27
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved