首先是基础概念、项目(系统设计)以及刷题(算法)三驾马车,这些方面可以看世界著名学校网课自行学习。
最近看到这样一个问题大学专业与计算机无任何关系,靠自学能否学好编程?让我想起当年我自学编程的一段经历。结合今天的行业现状,说说我的心得和体会。可能不一定对,让我们一起来看看。
01 非计算机专业仍可学好编程大学专业与计算机无任何关系,仍然可以学好编程。因为计算机科学是所有专业里面历史相对较短的,直到上世纪 70 年代真正意义上的个人电脑才问世。所需要掌握的内容不算太多,和其他专业相比可以在较短时间内补齐。
A BRIEF HISTORY OF COMPUTER SCIENCE
但仅靠自学很难。因为自学比起科班出生系统学习,主要有两个难点
1)要么过于重视基础概念(computer science fundamental)忽略实际编程练习,硬将 CS 按照文科方式背诵概念学习;要么过于重视敲代码(hands-on),忽略每道题、每个任务背后的底层逻辑,知其然而不知其所以然。
2)自学的项目一般会忽略 engineering 相关的考量,而仅仅只是把题做出来、把代码敲出来。这个没有实际的大型项目的(合作)经验和老师/前辈点拨,靠自己摸索要费劲得多。
基于以上两点分析我认为在今天自学编程并达到主流公司面试标准是有很大挑战的。需要付出比 10 年前更多的努力和智慧。
包括我自己,很久以前也有一段时间自学过某个 CS 分支领域内容的经历。以前自学的优势在于市场上还没有像今天这样激烈的竞争,所以自学不需要达到很高的高度就可以通过面试,这时候真正的学习才刚刚开始。这就像开车并入高速路时那一段匝道(ramp up),给汽车一段时间的加速缓冲,达到最低要求时速后即可顺利并入高速路。可以想象如果没有这段匝道,将很难并入高速。
如果没有这段匝道,将很难并入高速
而现在市面上公司给一般自学编程的同学的机会已经不多,这段“匝道”正变得越来越短甚至消失。自己必须要想办法进入“匝道”才能开始真正的学习,从而进入 CS 行业。因为时代变了,现在 CS 科班出身的找工作都很难,更别说转专业。
02 培养编程兴趣终归到底编程是一门非常枯燥的学科。整天和代码、数字打交道,时间久了就有可能坚持不下去。尤其是在一开始遇到一些 bug 无法解决时,会感觉非常沮丧。例如下面的情形
编程被bug不断打击,没有编程的兴趣和动力怎么办?
编程时遇到错误,一时解决不了,脾气就暴躁怎么办?
遇到暂时解决不了的问题不要慌,多想想然后向周围同学求教
为了最大化避免以上情况的发生建议从源头开始入手。在开始学习之前一定要弄清楚自己学习的动机,然后根据此动机找到符合自己特点的技术栈,尤其是自己感兴趣的技术栈进行专项学习。这样学习来才会事半功倍,毕竟
兴趣是最好的老师