英文原文:Every Programmer Is Self-Taught
为什么 CS 学位并非是成为开发人员的唯一路径,因为每个开发人员在工作于他们的项目时学到了很多很多。
除了 CS 学位,还有很多成为程序员的方法。如果你正行进在一条非常规的道路上,那么你可能会想知道你该追上那些有学位的人。你该怎么和那些在课堂上花了很多时间学习计算机和编程的人竞争?
从我的经验来看,竞争的要点不在于学位:关键在于你会如何利用你所掌握的技能。条条大路通罗马。事实上,从学校里是学不到如何做一个 web 开发人员或 Android 开发人员的。
每个使用计算机技术的程序员大多靠自学成才,在工作中和自己的空闲时间提高技能。我在完成我的电气工程学位的同时,去上了很多与计算机相关的课程,但其中很少是专门讲 web 开发的。也许你会上过一两堂课,或选修这类科目,但当你使用的时候,这方面的知识很有可能已经过时了。
好吧,如果学位不能教你如 web 编程或移动开发这些有用的东西,那么学位还有什么用?学位的作用是让你对编程和计算机相关的知识有一个全面的了解。有助于你了解更多相关的学科,例如数学、数据库、算法、网络、编程模式和语言。
你不需要成为任何这些学科的专家:但你需要知道它们的存在,并完善这些技能,并且在现实世界中使用这些技能以便于让这些技能能够对我们真正有用。另一方面,所有这些技能就是一个有用的工具箱,当你启动项目并需要解决新问题的时候,便是你的好帮手。你可以使用你已经学到的知识作为出发点去挖掘更深层次的东西,并根据需要提升自己。
如果你不曾在学校里学到这一点,那么你还可以从其他途径获取,例如在线课程或书籍。和那些从学校获得的知识没什么不同:虽然说在学校里学习更容易集中注意力,进度更快,但你自学也完全可以。
当你开始使用这些技能来完成实际项目时,这些技能才会渐渐变成你的东西,否则就只是纸上谈兵而已。根据兴趣、工作或专门的计划,特定地去学习某些领域,然后一步步前进。作为团队的一员,每个人都有必要构建不同的技巧和知识体系。如果每个人的技能集完全一样,那这个团队该是多么枯燥和低效啊!
而且你在学校中学的东西是不完整的。你需要工作于一些小型的项目,以掌握具体的概念,但在现实生活中,在你运行了你的第一个版本之后,你就会不由自主地继续前进。你会继续学习如何维护,如何修复 bug,如何部署以及如何在众多规则的框框架架中完成团队工作。你会在你工作的每一个项目和你修复的每一个 bug 中不断学到新的技能。
我们最重要的是学习如何学习,这样才能在需要时迅速掌握相关学科和一门新的技术。如果你能一直保持学习的态势,那将更方便你学习新的东西,并且建立一个学习的好习惯,永远是亡羊补牢,犹未晚矣。
-
译文链接:http://www.codeceo.com/article/every-programmer-self-taught.html
翻译作者:码农网 – 小峰