自学的程序员通常缺少哪些技能?

本文来自 Quora 上的一个讨论帖,题主还换了一张种方式问:「自学的程序员需要学些什么,才能追上科班的同行?」小编摘编了 3 位国外程序员的观点。全文如下:


Quincy Larson,IT 讲师,2700+ 赞同

自学的程序员通常缺少谦逊的品质。

马克·吐温在他的写作生涯中,常遇到自学的作家,他对于他们的不谦虚而感到非常厌恶。他总结道:

“自学的人通常很少能准确懂得知识,而且他所懂的内容,还不到有老师指导的人所学到的十分之一。除此之外,他还会炫耀,去欺骗其他不思考的人,按照他从前所做的那样去做。”

庆幸的是,在2016年,除去那些生活在没有图书馆的乡村,“自学成才”的人实际上已经不多了。

毕竟,所有像我们这些差不多优秀的程序员,事实上不都是从老师那里学来的吗?我们在工作的时候,不也是依赖于那些写了技术书籍,有思想性的文章,和 API 文档的人吗?

谦逊是一种技能。就像其他的技能一样,从理论来说:参考更为广阔的软件开发领域来了解自我。从实践来说:知道什么时候要把冲刺阶段的任务移交给一个知识储备更好的团队成员,在代码审查时能够接受有建设性的批评等等。

提升我们谦逊的品质的重要一步是意识到,即使我们是在大学课程设置以外学习,我们也并非是真的“自学成才”。

无论我们是在大学教室里,或是在卧室里看视频学习,所有优秀的程序员都是站在老师们的肩膀上的。

Adam D’Angelo ,Quora 首席执行官,3600+ 赞同

在大学之前我是自学的,对于我,一个 CS 专业的人来说最有用的课程是编译器、编程语言和机器学习。即使在实践中很少有机会去实现一个编译器、编程语言或者机器学习算法,但是,它们一直被运用于真实的系统之下。理解它们的工作原理,绝对是一个巨大的优势。

Valentin Popescu,软件架构师,3900+ 赞同

很久很久以前,在自学了 C、C++ 并且写了大量个人项目以后,我参加了一次面试。那时我刚刚大学毕业,从没上过一节计算机课程,但是我已经参与过比较大型的开源项目(尽管当时还不叫这个名字)。

面试官让我写一段算法来处理一个列表,我已经不记得是什么了。但是我完成的很好。

然后他问我,这段算法用大O符号来分析复杂程度如何。什么?!大O符号是什么?

重点是,我能够完成我的工作,我只是不会使用恰当的术语来表达。所以(相比于科班同行)我错失的是那些行话/术语。我可以解释说我的算法是线性时间,但是我不知道如何描述O(n)。我没有得到那份工作,我也不知道是不是因为这个而被淘汰,我只知道除此之外其他部分我都完成地很好了。

作为一个自学的程序员,你错失的是一个(专业)词汇表。它随着时间而累积,但通常会反向而行。例如,有时你遇到一个问题并想出了一个了最佳解决方案,只是后来你却发现这种“最佳方案”早就有名字了。你需要好几年的实际编程经历才能补上这个词汇表。

另一个有趣的问题是,作为一个自学的程序员,我参与的开源软件项目只用邮件和他人交流。我不知道怎样去“说出”一些计算机技术。例如,我把SQL读作”es-que-el”,而不是更常见的读法”See-quel”。或是把 “I2C” 读作 “eye-two-see”而不是”eye-squared-see”。

自学编程

你觉得自学的程序员通常缺少哪些技能? 欢迎评论补充。

本文文字及图片出自 伯乐在线

你也许感兴趣的:

共有 1 条讨论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注