1/4的活跃用户在18岁以下,我想和你们聊聊逝去的青春_java

昨天,群里sigua大佬提到她最近发现公众号的粉丝里有很多18岁以下的用户,感叹长江后浪推前浪,现在的孩子们从初高中就开始学习编程了。

好奇之下,我也去看了一眼TechFlow里的数据。居然有四分之一的常读用户在18岁以下。比较神奇的是这些同学们很少加我微信的,进群的就更没有了。也许他们连微信都用的很少,更多的还是活跃在QQ上吧。想到这里,不禁有些感慨,好像不知不觉间青春就这么过去了。

1/4的活跃用户在18岁以下,我想和你们聊聊逝去的青春_java_02

初高中生为啥学编程?


我估计很多同学可能会很好奇,这些初高中生们为什么要学编程,难道是现在就开始内卷,为了以后找工作做准备了吗?

其实不然,大家都是从那个时间段过来的,高考之前做的决定往往都是以升学为导向的。所以,背后的原因很简单,就是为了竞赛加分、升学。初中参加竞赛拿奖,可以以此升学进入优秀的高中,同样,高中竞赛获得可以保送进入好的大学。

以我当时的情况,参加NOIP(省级信息竞赛)获得国家一等奖,差不多是全省前50的水平,就可以以此申请清华、北大等国内顶级高校的保送考试。通过了保送考试,就可以免去高考直接获得清华的录取通知书。当年我校有好几个学长都是通过这种方式去的清华,你能想象高二还没结束就拿到清华录取通知书是一种什么感觉吗?

但问题来了,这些获奖的学生当中有多少人从事了这一行呢?

不说凤毛麟角,其实真的不多。我当初高中信息竞赛班上十几个同学最终毕业做了程序员的,也不过两三个而已,还包括我这个啥奖都没有的陪跑成员。其中大部分都转行学了其他专业,从事了其他方向。

所以听说很多初高中生甚至是小学生就开始学编程,千万不要觉得紧张,好像一大波后浪来袭似的。其实我上高中的时候就已经有很多小学生在参加信息竞赛了,这并不是这一两年的事,只是当年互联网行业还没兴起,大家没关注这个而已。而且这些人当中大多数也并不会从事这一行,很多人就是为了升学用的,或者是当个兴趣班而已。

大家对此可以不必太过在意,就好像那么多参加数学竞赛的,难道都当了数学家了吗?


他们都学些什么?


很多人肯定很好奇,初高中生就开始学编程,能学一些什么?

为了回答这个问题,我还特地从百度盘里翻出了当年的学习资料。我说再多也没什么用,大家看下截图就知道了。

1/4的活跃用户在18岁以下,我想和你们聊聊逝去的青春_java_03

这里面列举的算法和数据结构就是我们当年列出的学习目录,当然这只是一个目标,我们当年是没有能力把这些都学会的。当年我真正会的东西大概也就是文件夹里的前两行,最后一行树状数组、线段树、网络流这些我都是大学期间学的。其实也挺惭愧的,其实这些资料高中的时候都有了,只是当时没好好珍惜,如果当时就努力一点,也许很多事情都会改变。

基本上是大学《数据结构》和《算法导论》范围的删减版,内容的加强版。删减了很多竞赛用不到的东西,比如什么ADT、面向对象之类的,但是对于每个算法和数据结构的要求进行了加强。必须要能做到不看资料,随手就来。因为当时高中竞赛是不允许使用模板库的,我们所有的功能都要自己实现。所以手写个快排什么的,是家常便饭。


竞赛有用吗?


还有很多人会关心竞赛究竟有没有用,我估计参加竞赛的都希望我回答有用,没参加的可能相反。

其实竞赛只是一个形式而已,有用没用并不是形式决定的,而是我们自己决定的。如果只是为了升学或者是某个临时的目的,那么最终的结果可能就只是当时的一个垫脚石而已。相反,如果是真的愿意感兴趣,愿意吃苦在这一行走下去,或多或少都有加成作用。至少我认识的几个大学期间参加竞赛的一直走到最后的同学,他们如今的现状都还不错。

说起竞赛我挺有感触的,因为高中的时候参加竞赛就是为了保送和加分,当时课余还花了很多时间做题练习,磨炼技术。但万万没想到,在初赛的笔试环节翻车了,最终甚至连赛场的键盘都没摸到,完完全全的陪跑选手。当时这件事给我的打击巨大,之后我一度有些破罐子破摔,某种程度上来说高考没考好,或多或少也有点关系。

虽然很多人会说如果你当年考好了,进入一个比较好的学校发展可能未必有现在好。话虽如此,但是每每想到这些我本可以的事情,还是会有些隐隐的遗憾。

但也同样是因为竞赛,让我在大学期间慢慢重新找回了信心,找到了自己想要做的事,并就这么坚持了四年。也正是因为在大学期间参加竞赛的一点成绩,为后来踏入职场积累了些许优势,才这么一路走到今天。

如果只看前半段,我肯定会觉得竞赛屁用没有,说不定还要高喊一句,辣鸡比赛,毁我青春。如果看后半段呢,又会觉得竞赛又燃又热血,励志到爆棚,助我重回赛场、最终梦圆。但实际上,竞赛一直是中立的,它并不直接锻炼人,也不直接成就人,只是给了人们一个磨炼锻炼自己的机会

如果你已经是一个努力向上的人,一直都在坚持锻炼提升自己,那么参不参加竞赛其实差别并不大,不参加竞赛你也一样有广阔的舞台。如果你缺少这么一个目标和机会,想要体会一下那种青春的爆燃和热血,不妨给竞赛一个机会,说不定它会还你一个惊喜。


总结


网上有很多人争论去学一些很难的数据结构和算法真的有用吗,我们实际工作当中不是用不到吗?

的确是用不到,但是用不到真的不意味着没有意义。其实很好理解,反过来想就明白了了,如果连那么复杂困难的数据结构和算法都烂熟于胸了,想学其他的技术不是更易如反掌了?这其实不是直接的能力,而是一种悟性和造诣。好像有点玄,但就我观察到的情况竞赛出身的同学学习能力普遍都不错,学东西很快,也很扎实。

但这背后不是什么黑科技,也不是武功秘籍,其实就是实打实的代码行数。一般一个竞赛选手的代码行数至少也得是3万行以上。我本科期间的竞赛代码差不多是5万行,而我已经算是练习得比较少的了。那些拿金牌的大佬们,至少是十万行以上的有效代码。要知道平均做一题的有效代码量大概是50-100行,这样算下来,大佬们的刷题量至少也在一千题以上。

当然要是做项目的话,代码行数涨得很快,我之前做一个大作业就一两千行代码了。但是老实讲我感觉做项目的两千行代码和刷题的两千行代码的质量还是相差蛮大的,做项目很少会有那种绞尽脑汁的痛苦过程。而刷题的时候,写算法、debug,再写算法,再debug,这个过程真的是挺磨人的。但是俗话说得好,成长总是痛苦的,再厉害的大牛也都是这么一点一点磨出来的。

最后,我想对这些正当青春年少的同学们说一句。你们现在还年轻,未来的路还很长,长远来看竞赛场上的成败名次其实都不重要,重要的是,你们能不能不忘初心地走下去。你们未来的路很艰苦,可能也不那么美好,但坚持下去,你们会发现所有努力都值得。