正文1600字,预计阅读时间 5 分钟。

自学编程的困境

随着计算机和各行各业的结合,比如各种数据分析,数据挖掘,医学影像处理,网络数据爬取之类的,编程也快成了基础教育,甚至带些焦虑,比如下边这个段子。

其实确实很多非信息专业的也开始自学编程了,我身边就有很多例子。但是也随着暴露了一些问题,有的人反映,自学编程越学越蒙,无法融会贯通,不知道方向在哪,仿佛置身迷雾,只能看见面前几米的路,前进几米之后还是迷茫。这可能是不少人自学编程的现状。

今天说一下如何破局。

why

先分析原因。相信有很多人没有任何需求,完全是看编程火热,就想学一学了解一下。没有目的学编程,很容易越学越迷茫。

举个例子,很多人学python,学了helloword、基本语法(函数、循环、if判断等)之后,就会看到各种高级模块的教程,比如网络编程,连接数据库,IO编程、图形化、web开发等等。 如果说基本语法知识是在新手村,那这些高级模块就是开始选职业了。根本没法在所有领域精通。

计算机最特别的一点是,经常有新的东西冒出来。一个资深程序员,也不敢说自己编程学够了。如果说三百六十行,行行出状元,那计算机行业绝对不是一个行业,说计算机里包含三百六十行也不为过。比如操作系统、文件系统、网络安全、分布式事务、存储系统、机器学习等。

想一想人类社会的各个部分,交通系统,快递系统,任务协调,判断活动等。计算机领域前进的方向就是把人类社会的所有模块抽象出来,并在计算机中实现出来,这是一个庞大的虚拟社会体系的构建。

上面这个过程仅仅是信息化的过程。之后还有智能化的部分,智能化目前就是人工智能,智能化是虚拟社会超越现实社会的部分,也是计算机领域的终极目标。

有目的的学习

编程很多时候不是一个情怀的事,编程绝大部分是为了完成一个任务的,有目的学习效率才会高。

回想一下高中时代,在老师讲完课本知识后,你感觉好像也学的差不多了,结果第一次考试考成了xiang,你发现考的东西跟老师讲的好像不一样,这时候就需要有目的的重新学一遍,这个目的就是应对考试。

同样,在学完基本语法之后,想继续深造,就应该给自己找一个小项目,在项目驱动之下就知道要学什么东西了,通常一个小项目涉及的知识没那么多,只需要专注几个技术就可以了。比如为了写python爬虫,你不需要知道操作系统是怎么调度任务的,你也不需要知道数据库是怎么存数据的,你甚至不需要知道http是个什么东西和三次握手原理。

而学东西最快的是什么?不是自己从零开始,而是借鉴。举一反三的第一步也不是反三,而是举一。还以python爬虫为例,你只需要网上找个python爬虫示例代码,这时候你发现大家推荐你学 html 和 beautiful soup,这时候学一学 html 基本语法,再找一找 beautiful soup 这个包的教程,这件事基本就搞定了。

看,一个项目就这样做下来了,当一个文科生写成了一个python之后,你周围人就该叫你编程大佬了,而做到这一步难么?不难,你也知道你会的其实不多,你只是写了一个程序而已。但是当你做完一个项目之后,就知道大概路数,可以做更多的项目了,这就上道了。

我怎么学习

我主要是数据库方向,但是数据库本身就是又一个非常复杂的系统,涉及磁盘文件组织,并发,事务,查询优化,主要研究一个方面,慢慢向其他方面扩展,基本就是我的策略。

而类似可视化,网络安全这种方向,跟我平时距离比较远的,我就不会花很大精力去学这些,术业有专攻,你不能要求一个散打运动员同时篮球水平也很高,虽然同属运动员。程序员这个概念就类似运动员。

总结

现在基本清楚了,如果你有需求和项目驱动,那可以专门针对项目去学习。如果没有需求,其实学完语法写个 HelloWorld 就可以 stop 了,再继续就是低效+迷茫了。同时,时刻清楚计算机知识永远学不完,每个人都只能深入一两个领域。不用为自己知道的少纠结,慢慢积累就好了。今天就这样!

欢迎转发关注

更多推荐

走出自学编程的困境