• 「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」
  • 当然 不论新老朋友 我相信您都可以 从中获益。如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力!

一、计算机 = 互联网 = 高薪 = 996?

你真的了解计算机专业吗?

不论你是自己选择的计算机专业还是家人帮你报的名,首先恭喜你!因为计算机是少数的几个 「不用拼爹」,完完全全可以凭借自己的努力就能够获得回报的专业,而且从近 20 年来看,回报还相当不错!

计算机专业 是做什么的呢?

简单来说,计算机专业是以 计算机等技术 为主要研究工具,以扩展人类的信息功能 为主要目标的一门学科。

计算机是个大门类

翻开本科专业目录,会发现计算机是个大类,包括计算机科学与技术、软件工程、网络工程、信息安全、物联网工程等等等好多专业。其中,最核心、最基础的专业就是 计算机科学与技术 (Computer Science and Technology - CS) 了,这也是各院校计算机系招生的主要专业。

百度百科 给出的计算机专业概念的论述是:计算机专业是指计算机硬件与软件相结合、面向系统、更偏向应用的宽口径专业

总之计算机是个很大的门类,不光编写应用软件的 软件工程师

还有制作硬件的 硬件工程师,例如我们日常使用大到手机,小刀计算器,一切物理设备的底层逻辑都是由它们负责编写的:

还有 网络工程师,但也有黑帽子、白帽子、运维等等很多的分别:(这图感觉明显比较黑和帅呢..)

and more…

另外想说一点是,随着技术的进步和世界的复杂程度的加深,社会分工越来越细之后,大学专业也随之变得越来越细化,这些都不要紧,无论在哪一个方向 深耕 都能带来不菲的收获。(即行行出状元)

计算机专业都学哪些课程

了解一门专业最快的方式就是了解它的课程。我们来看一下 网易云课堂顶尖中文大学计算机专业课程体系 给出的标准的 CS 体系的课程表:(链接可戳,下图课程全部免费)

网易云课堂给出的计算机专业课程体系图

可以看到计算机专业的课程大致分为基础课程和专业课程两类:

  • 主要基础课程:高等数学、大学英语、线性代数、大学物理、概率论、离散数学等;
  • 主要专业课程:数据结构、C 语言程序设计、数据库原理、操作系统、计算机网络、算法分析与设计、编译原理、软件工程等;

“计算机热” 还能持续多久?

计算机有多热门呢?看一下现在 漫天飞 的程序员培训广告就知道了,在前几年,这些地方还被英语培训占据着。(关于计算机培训逐步替代英语培训这事儿,有兴趣了解更多可以 戳这里)

于是总有人担心,报选计算机的 人太多竞争太激烈了,或者是传言说计算机行业已经 快饱和了互联网泡沫正在酝酿 等,但实际情况是怎么样的呢?

我们先来看一段采访:

全球最大豪华车制造商戴姆勒奔驰(Daimler Benz) 的总经理在最近的一次采访中表示:

“我们的竞争对手哪里是其他汽车公司,我们的竞争对手已经变成了特斯拉,谷歌,苹果,亚马逊等科技公司……

科技公司的发展让我们不安,我们面临着巨大的转变。”

不难发现,全社会正在 信息化中加速前进,计算机和互联网已经 渗透到生活的方方面面,促使许多传统行业发生变革:

  • 招聘:LinkedIn 的出现,正在蚕食美国4000亿美元的利润丰厚的招聘行业。

  • 零售:Amazon 的出现,让美国零售业人人自危,尤其是知名百货 Macy’s,因业绩不振已经连续关店及裁员。

  • 交通:Uber 一辆“出租车”都没有,却是全球最大的打车公司,改变交通行业的游戏规则。

  • 住宿:Airbnb 从不盖楼造宾馆,但是把目前世界最大的连锁酒店集团 Marriott 逼的不得不重新进行战略布局。

  • 医疗:人工智能医疗机器人、智能诊断、可穿戴医疗设备…新的技术给医疗行业多个领域带来发展机会。

  • 金融:金融领域也因为互联网和数据的发展,发生着剧变……一夜之间铺遍所有商家的 “扫码支付” 就是最好的例子。

  • 就连 国防领域,也越来越以软件为基础,对科技人才的需求日趋迫切:

    • 软件驱动的无人机发动空袭,不再让人类飞行员面临风险;

    • 情报机构利用软件进行大规模数据挖掘,以发现和追踪潜在的恐怖主义活动;

从某种程度上来说,计算机行业不但不会饱和,并在大口 “侵食” 其它行业!几乎所有的公司和领域,都需要计算机相关的人才!

有人说,未来世界将只剩下三种职业:

  1. 娱乐人士;
  2. Pizza 快递员;
  3. 程序员;

不过,基于现在的发展来看,娱乐可以被 VR/AR 渗透,Pizza 快递会由送餐机器人完成,而世界最终需要的,就是程序员。

对程序员的认识

高薪是真的,996 也是真的

工作 996,生病 ICU(重症监护病房)。

诚然,程序员的薪资水平普遍都要率高于其他一些传统行业:

但高薪的同时,也意味着高投入

中国的信息技术产业,特别是过去十多年崛起的一些大型互联网公司,他们的重点主要还是在对技术应用的开发上。过去十多年来,中国互联网产业的发展所提供的机会,使得业界认识到:投入到应用中的收益,显然比基础研究的收益更大。

随着这些基础的开源技术开发工具的进步,中国的程序员的入行门槛也越来越低,这和市场对程序员的需求数量越来越多这一趋势又是匹配的。随着资本参与互联网的大战,“快” 成为互联网行业的共识。其实由于开源生态的存在,技术开发如今本身已经快得不能再快了,但市场竞争是残酷的,没有最快只有更快。

这就产生了一个矛盾:产业迅速膨胀,从业人员的水分也越来越高,但市场对公司的效率要求也越来越高。在这种态势下,技术应用方面的研发,很容易落入劳动密集型的实质当中

难怪如今程序员往往自嘲为 “码农”,意思是 “写代码的农民工”。程序员褪去了 “智力劳动者” 的光环,似乎成为了和车间工人没太大区别的工种:无论是从工作的复杂程度来看,还是工作时长对工作的产出来看,都越来越接近了。

当然,把程序员和传统的产业工人做类比其实并不完全正确,这主要是因为:脑力劳动,或者说智力和知识,在信息技术开发的工作中起的作用太大了。

程序员的「行业偏见」

在极光大数据的 2018 年中国程序员研究报告里,对于 「外行对你的职业最大的误解是什么」 的这个问题,有 46.1% 的程序员选择了 “很会修电脑”42.7% 的人选择了 “可以轻易开发出任何软件”

每个行业都存在各自的行业偏见,例如遇到健身教练就想让人帮你 3 天瘦 10 斤,还得不打针、不吃药、不节食、不运动。这些偏见都无可厚非,重要的是你怎么看待这事儿,是选择被贴标签就靠近标签,还是选择做自己。

什么样的人适合学习计算机?

4 点吧:兴趣逻辑就业静下来学习

兴趣

计算机行业的 知识迭代 相比其他行业来说速度要 上不少,加之市场对程序员的 要求 也越来越 ,这就要求了程序员需要更多的时间来学习。而说到底,计算机是一个偏实践性的理论知识学科,你不仅需要 花费大量的时间学习 枯燥的基础的理论知识,还需要再画 大量时间去动手实践 最终将这些知识 融会贯通 起来,这个过程可能略显枯燥和冗长,而 兴趣会帮助你跨过不少的无趣

《黑客与漫画》 一书中有这样一段描述:

在达·芬奇的年代,绘画并不是一件很酷的事情,达·芬奇用自己的工作推动绘画成为一种伟大的表达方式。同样,编程到底能够有多酷,取决于我们能够用这种新媒介做出怎样的工作。

「兴趣是最好的老师」 这句话再怎么吹也不为过,你对一件事情的兴趣和热爱,在很大程度上决定了你做一件事情所取得的成绩。

看到有网友调侃:”给我妈买的智能洗衣机教了 n 遍都不会用,后来给她买了台麻将机,不仅会用还会修呢。”

还看到有网友吐槽说:「也可以先结婚后恋爱的..」,这… 你们自己品吧…

逻辑

现代的计算机还没有足够的「聪明」,当你实现一些东西和想法的时候,需要考虑 「足够多」 的细节,这就涉及到 「逻辑思考,讲求因果」 的能力了。

这事儿我在 「知乎讨论 - 编程到底难在哪里?」 看到了许多有趣生动的例子,这里我们截取一个关于 「树上有十只鸟,开枪打死一只,还剩几只?」 问题的讨论来论述:(例子略长.. 不感兴趣的读者可以跳过..)

某日,老师在课堂上想考考学生们的智商,就问一个男孩: “树上有十只鸟,开枪打死一只,还剩几只?”  

  • 🙋‍♂️:“是无声手枪,还是其他没有声音的枪么?”  
  • “不是.”  
  • 🙋‍♂️:“枪声有多大?”  
  • “80~100 分贝.” 
  • 🙋‍♂️:“那就是说会震的耳朵疼?”  
  • “是.”  
  • 🙋‍♂️:“在这个城市里打鸟犯不犯法?”  
  • “不犯.”  
  • 🙋‍♂️:“您确定那只鸟真的被打死啦?”  
  • “确定.” (老师已经不耐烦了),”拜托,你告诉我还剩几只就行了,OK?”  
  • 🙋‍♂️:“OK.鸟里有没有聋子?”  
  • “没有.”  
  • 🙋‍♂️:“有没有鸟智力有问题,呆傻到听到枪响不知道飞的?”  
  • “没有,智商都在 200 以上!”  
  • 🙋‍♂️:“有没有关在笼子里的?”  
  • “没有.”  
  • 🙋‍♂️:“边上还有没有其他的树,树上还有没有其他鸟?”  
  • “没有.”
  • 🙋‍♂️:“方圆十里呢?”
  • “就这么一棵树!”  
  • 🙋‍♂️:“有没有残疾或饿的飞不动的鸟?”  
  • “没有,都身体倍棒.”  
  • 🙋‍♂️:“算不算怀孕肚子里的小鸟?”  
  • “都是公的.”  
  • 🙋‍♂️:“都不可能怀孕?”  
  • “………,决不可能.”  
  • 🙋‍♂️:“打鸟的人眼里有没有花?保证是十只?”  
  • “没有花,就十只.” 老师脑门上的汗已经流下来了,  
  • 🙋‍♂️:“有没有傻的不怕死的?”  
  • “都怕死.”  
  • 🙋‍♂️:“有没有因为情侣被打中,自己留下来的?”  
  • “笨蛋,之前不是说都是公的嘛!”  
  • 🙋‍♂️:“同性恋可不可以啊?”  
  • “………….,性取向都很正常!”  
  • 🙋‍♂️:“会不会一枪打死两只?”  
  • “不会.”  
  • 🙋‍♂️:“一枪打死三只呢?”  
  • “不会.”  
  • 🙋‍♂️:“四只呢?”  
  • “更不会!”  
  • 🙋‍♂️:“五只呢?”  
  • “绝对不会!!!”  
  • 🙋‍♂️:“那六只总有可能吧?”  
  • “除非你他妈的是猪生的才有可能!一枪只能打死一只!”  
  • 🙋‍♂️:“…好吧,那么所有的鸟都可以自由活动么?”  
  • “完全可以.”  
  • 🙋‍♂️:“它们受到惊吓起飞时会不会惊慌失措而互相撞上?”
  • “不会,每只鸟都装有卫星导航系统,而且可以自动飞行.”
  • 🙋‍♂️:“恩,如果您的回答没有骗人,” 学生满怀信心的回答,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩.”
  • 老师推推眼镜,强忍着要昏倒的感觉,颤抖地说道:“你可以去当程序员了……”

静下来学习

《黑客与漫画》 一书中有描述说:

程序员因为常常埋头于编程,而没有更多的时间精力去与学习如何与别人相处。这常常导致他们看起来有点“呆”——就像书呆子经常只和书打交道一样,程序员大部分时间只对着计算机屏幕。

这也从侧面反映出了编程这件事的特点。我们需要 「静下来沉淀学习」 的能力,如果你渴望几个月速成,或者不想学习新技术,指望二十来岁拿一个学位证,可以吃到退休,那么你就不太适合计算机行业。

二、对「大学」了解多一些

为什么你可以不读大学?

可不要被这个标题吓到,读书,念大学仍然是当今社会下的主流选择,这里只是借 阮一峰 大大的文章来提供一种 全新的视角,我相信读者会跟我一样,看完会带来一定思考的。

以下内容均引用自:为什么你可以不读大学 | 阮一峰

什么知识才是有用的知识?

农业社会,上一代人的知识可以一成不变地用在下一代。而在信息社会,前几年的知识,再过几年就不能用了。

举例来说,眼下就业前景最好的行业,我觉得有两个:区块链和 VR。它们在五年前都是不存在的,那时就业最好的是苹果 iOS 系统的应用开发,可是再往前推五年,它也是不存在的。伴随着它们的是,很多旧工作岗位的消失,比如塞班、黑莓、Windows Phone 的开发。

这种情况下,大学应该教什么,我们根本不知道。学生毕业后的行业,现在根本还没有出现。因此,大学只能重点教 基础类课程,而且各个方向都必须教到,因为不知道学生将来会用到哪个方向的东西。这样就会耗费大量的时间,学习专业的各种基础知识,其中许多对人生来说是没用的。学生常常感叹:「考试一结束,有些课程这辈子再没有用到的机会了」

更糟糕的是,学生的培养计划,都是一些二三十年前毕业、然后一直待在大学里、与社会生产实践脱节的人制定的。他们的知识和思维早已过时了。这样的人指定你应该学习的知识,很可能在你学的时候就已经过时了。

大学的四年时间

退一步说,就算你在大学里能学到了真正的知识,那也不应该在那里待四年。如果只学最需要学习的东西,一年就够了。

四年时间足以让一个人在任何领域成为资深业者,甚至专家。可是我们的大学生呢,经过本科四年,不要说领域专家,甚至能力强的学生都寥寥无几。我们的大学制度用了四年时间,培养出了大量一无所长的、迷茫困惑的、市场滞销的年轻人。

18 岁是人生最有热情和精力投入一项事业的时候,但是,大学将你一连四年关在教室和图书馆里,把考试和绩点伪装成你奋斗的目标,人为将你与真实世界隔离,引导你去关注那些对未来人生毫不重要的事情。经过这样四年的歧途,等你真正走上社会、要跟全世界竞争的时候,你的竞争力不是变强了,而是变弱了。换句话说,四年制大学很可能是削弱你,而不是让你变得更强。

2014 年诺贝尔物理学奖得主中村修二,就曾经写过一篇长文,名字就叫 《东亚教育浪费了太多的生命》

我们时代的很多成功者—-乔布斯、比尔盖茨、扎克伯格等等—-都是退学生,这绝不是偶然的。不是他们在大学待不下去,而是他们发现,没必要在那个地方待四年。如果他们咬着牙忍受下去,熬到拿到文凭的那一天,苹果公司和微软公司可能都不会有了。

不是说知识无用

注意,我不是说知识无用,而是说知识(尤其是非学术的知识)不一定要通过大学获得,通过互联网一样可以接受高等教育,而且更高效和便宜。

技术已经成为人类社会发展的主导性力量,学习和教育变得比以往更重要、更关键。但是很不幸,我们的学习和教育制度已经完全过时,传授的知识有用的少,没用的多;传授方法仍然依靠灌输和记忆,而不是启发和理解,极其低效,浪费学生的时间,打击学习热情,磨灭对知识的兴趣;对年轻人的成长,正面影响少,负面影响大,而且看不到改变的希望。

以前,人生的选择很少,你不得不去读大学,因为没有其他地方可以接受高等教育。社会还把很多机会与文凭挂钩,先有文凭,然后才能有就业、职称、住房等等。

但是,时代已经变了,文凭正变得越来越不重要。那些与文凭挂钩的东西,正在一项项脱钩。

互联网将教育的自主权,交到了每个人自己手里。上什么课程、什么时间上,都完全由你决定。你可以一边工作,一边利用夜晚和周末,学习网络课程。这样的话,不仅早早就会有收入,而且只学那些对自己最有用、最感兴趣的内容,学习的效率很高。如果发现对学术有兴趣,将来再回大学,攻读更高的学位,也是完全可以的。

大学课程是为了那些不知道学什么的人设计的,千万不要因为自己找不到方向,而被这些课程”画地为牢“限制住。你要主动去接触和学习,那些自己感兴趣的东西。引用一个网友的话,“你要做的就是自主、跨界、终身学习“。

中国大学的教育理念

在吴军老师 《大学之路》 中介绍了大学的基本教育理念有两种:

  1. 纽曼的教育理念:倡导通才教育,本科阶段讲求知识面的广阔,要求更多的课外活动,而不要求专业的深度,专业的深造放到大四或者研究生阶段。具体像是哈佛大学,耶鲁大学,本科生在入学时有足够多的课程可以选择,但不需要确定专业,本科学习的后期才要求确定专业,保证本科生能够在尝试中找到自己心仪的专业,以确定未来自己的发展方向。
  2. 德国洪堡教育体制:强调专才教育,要求学生入学时就选定发展方向,讲求专业的深度。中国目前的高等教育模式就来自洪堡教育体制

在纽曼的教育理念之下,学生一毕业并不能马上达到专业工作的要求,但事业和未来发展会有后劲。洪堡教育体制则更适合需要迅速发展生产的时代,比如工业革命后需要大量科学家的美国。洪堡教育体制下毕业的学生能够迅速为国家所用,实现自身脱贫,有助于社会的迅速工业化。

纽曼的教育理念和洪堡教育体制很难简单地说谁更好一点,而是要看 社会发展所处的阶段

改革开放初期需要尽快发展经济,类似于工业革命背景之下的美国,显然洪堡教育体制下的大学教育见效更快。社会发展趋于稳定之后,纽曼的教育理念能够帮助学生找到发展的后劲。这也是为什么现在高考开始出现 “3 + 3”、某些地方大学计划可以自选专业课的原因。

高考 3+3 改革

虽然专才教育能够培养出很好的执行层面的人(无论是科学家、工程师,还是律师和医生),但是却很难培养出拥有广阔事业的领袖以及实业家。当一个国家已经处于稳步发现阶段,当一个学生来自中上产之家,正朝着精英目标努力,这个时候,倘若缺少博雅的素质教育,路就跟难走得远。今天,中国的高中生一进高中就开始专攻那些高考必考的课程,而一进入大学,他们就被限制在不允许修改的专业中,这不仅失去了得到通才教育的机会,甚至被剥夺了培养自己学习兴趣的可能,我自己在读高中时受到了很多的通才教育,以至于到今天我所具备的人文和社会科学方面的素养,足以让我成为一个受人尊敬的人。可以说,没有好的通才教育,一个人的事业发展就不会有后劲。——吴军《大学之路》

三、我该如何学习?

先做好终身学习的心里准备

美国有一个谚语 「手里拿着锤子,看什么都是钉子」。指的是人们被自己的所拥有的知识能力所局限,导致自己做什么事情都想用手头已有的锤子来解决问题。

要克服这种铁锤人综合症的方法就是:在精通某一领域的同时接受各个领域的知识,并且将他们用来解决现实世界中的问题

如此,再遇见钉子我们就有了一个工具箱。既有锤子,也有螺丝刀,还有钳子…

但是,要在短短的四年时间里做到这一点是有一定困难的:

  • 首先,学校要有能力开出足够可供学生选择的课程。这一点,即使是如上交这样 (有大量政府投入的) 的学校都很难做到。每年到了选课的季节,都是对学校教务系统服务器的一次大考。学生们需要像抢春运火车票一样来抢仅有的上百门选修课。
  • 其次,即使强行开出这些课程,但是课程的质量往往无法得到保障。在我的学校,许多选修课完全算不上吸引人,也很少教课教的好的老师 (我大学有一门课,老师上课不讲课就放视频,学生安静地待到下课就可以走了…),于是这些选修课成了同学赶作业,玩手机的时间。

唯一的解决办法就是延长教育时间。 在美国许多名校,例如哈弗,普林斯顿采用本科给学生以通识教育,学生可以自由选课 (哈弗为了 6000 名本科开出了 2000 多门课)。之后再通过 1-2 年的研究生教育让学生实现专业教育。这个与中国研究生的轻教育重科研有所不同。

但是对于我们普通人来说,我们很难有机会进入这些顶级大学,接触到这样的资源,那我们应该怎么办呢?

这个就要抛出所秉持的观念:坚持终身教育。这里引用吴军在《大学之路》里面的一段话:

可能许多人认识不到教育是一辈子的事情,我们不必担心输在起跑线上,因为世界上大部分人跑到一半就不会再跑了,这就给了长跑者机会

并且,一个善于学习的人,随着年龄的增长,他会找到自己的兴趣点,如果他还能够学习,就有了目的性和针对性。

在大学里我们需要养成一种自学的习惯。不仅仅是自学学校所定制的专业课,并且要有能根据自己的兴趣,要解决的问题而高效自学的能力。

并且养成习惯:

遇见问题 -> 分析问题 -> 搜集相关资料 -> 学习相关资料 -> 解决问题。

通过这样的方式,我们才能够跳出环境给我们带来的局限性,拥有更丰富的的人生。

方向不对,努力白费

有一个清晰的目标很重要

就说说我的两个同学吧。

同学 A | 大佬程序员:

一个是在大一刚进来,正当同学们还处于刚进入大学的那种朦朦胧胧、放放松松时,就已经决定好了要走技术这条路线的 同学 A

在大一刚开学时就开始早早准备自学 C/ C++,等到我们开始上学校为我们开设的课程时,他已经利用一个暑假的时间,自己基于 Unix 改写自己的 操作系统。在我们上机的课堂上还听他吐槽自己实现的垃圾桶删不了文件,有 BUG。

后来等到我们开始学习计算机网络时,他又自己仿写了一个类 Nginx 服务器

再等我们大四准备实习时,他俨然已经成为了 Offer 收割机,想去哪儿就去哪儿 (尽管我们学校仅仅是一个二本院校)。当时看着他简历上的两个项目:自己实现的操作系统和服务器,心里就是一句:「卧槽!牛逼!」。

同学 B | 大佬销售员:

大一就开始卖我们电脑.. 后来大二开学开始代理学校的电信、移动等移动业务,再后来还开展了驾校的业务,大四的时候吧,我们都还在找实习呢,他已经在学校周边开办起了自己的公司..成为了自己的 CEO..

为之努力,并且永远不要怕晚

后来想起这两位同学,常常会以 “他们目标好清晰” 这样的句式来 掩盖他们为之付出的努力,方向固然重要,但为之努力也同样。如果不是 同学 A 牺牲其他同学玩耍的时间自学学习编程,他不会成为后来人人眼红的 Offer 收割机,如果不是 同学 B 勤勤恳恳不怕辛苦经营、探索各种业务,那也不会后来早早成为自己的 CEO

为之努力,并且永远不要觉得晚。说来惭愧,我的大学几乎可以说是从大三开始的,当我突然开始意识到我即将进入社会却身无长物时,我突然觉得需要一些些的改变和努力。于是我当天就开始制定计划,从那天到学期结束还有 七个星期零 2 天,于是有了下面这个计划:

七个星期零2天的计划 & 总结

从最基础的 Servlet/ JSP 到 SpringBoot 一整个基础的学习过来,也到了暑假,发现自己还是有差距所以毅然决定留校学习,于是有了 暑期计划

暑期计划

这一段时间,给自己的简历上增加项目、学习巩固基础的数据结构、算法知识,然后 参加秋招 (当时的面经),意识到自己的差距,并且想明白了自己想要继续学习更多的知识之后,决定 考研

两个月的拼搏,虽然最终以 4 分的差距未能如愿择校,但后来春招也算是如愿进入了自己比较心仪的公司。

这一切的 “逆袭” 对于我来说,也不过仅仅一年的时间。

我把这些经历也记录在了这里 - 2018 年终总结

锻炼独立思考、自主研究解决问题的能力

在前一段时间里,我接触到一个词:「二手人生」。它概括的是这样一种处境:「你发现你在生活里遇到的所有问题,在搜索引擎里都能找到答案」

比如说,怎么搭配衣服才低调优雅,去哪吃饭便宜又美味,买哪款耳机更划算,工作还是考研,要不要入手比特币,都有人替你解答了。你还发现有一批人用照片、视频、段子、广告为你提供了一个精心加工过的世界,这个世界常常比你自个儿的世界要美丽有趣深刻好笑有品位得多。如果把当代生活比作一场开卷考,比起你自己慢慢找答案,达人们已经为你提供了一套高分答案放到你面前让你参考

渐渐地你养成了一种 学生式习惯,当生活给你发了一份新卷子,你的第一反应就是先翻到网上,去看参考答案

事实证明,后来我们接触的大部分事情 (无论生活还是学习上),都不太容易有一个标准答案,当问题来临时,如何独立思考、自主研究解决问题,是非常重要的能力

自我写博客以来,常常收到读者们发来的问题,有一些是他们真实地遇到了不可解决的问题寻求我的帮助,有一些问题则显得我很意外,就像下面这样:(网站链接 戳这里)

为什么会这样呢?我想大概就是学生时代遗留下来的习惯吧,习惯了更轻松一些的向别人寻求帮助或者是翻找参考答案,很少自己主动地去思考并得出问题的答案。

这里给出一个问问题的标准模板:

学会编程而不是学会 Java

其实技术是相通的。编程的落脚点还是应该放在 解决问题 上,而不是使用某种工具上。更重要的是我们通过学习某一种编程语言,来帮助我们养成 计算机的思维方式,这也要求了我们在掌握一种技术时,不仅要 知其然,还要知其所以然

例如在「码农翻身」的一篇文章「学会编程, 而不是学会Java」 里就提到了一个问题,模仿 Java 的 ArrayList 实现一个自己的 SimpleList 类:(现在看不懂也没关系)

public class SimpleList<T> {

    private Object[] elementData;
    private int size = 0;

    public int size() {
        return -1;
    }

    public SimpleList() {
    }

    public boolean isEmpty() {
        return false;
    }

    public boolean add(T e) {
        return false;
    }

    public boolean remove(Object o) {
        return false;
    }

    public T get(int index) {
        return null;
    }
}

这个题目不要求实现复杂的算法, 也不需要进行面向对象的设计,也不需要考虑多线程下的线程安全, 况且已经给了提示:「用一个Object数组来实现」。如果说有一点语法层面的难度, 那就是使用了一点泛型。

这个 SimpleList 要求的就是能对一个数组进行操作,核心就两点:

  1. 能往数组添加数据, 记录size ,如果数组空间不够了, 需要增大空间

  2. 能删除数组指定位置的数据,并且把之后的数据往前挪动。

难吗?这其实是编程序的基本素养,编程的本质,和用什么语言实现没有关系。

写更多更多的代码

技术没有捷径

技术不要想着有捷径可寻,十年入行是有道理的。

现在随便走进一家书店,都会在技术类的书架上看到一堆的类似于《24小时学会Java》、《21天C++从入门到精通》这样的的书 (上面的漫画就很好地调侃了),然而这一类「标题党」书籍,都是让你「走马观花」地瞧上一瞧,也没有时间让你写几个真正有意义的程序,这样的 「一知半解」 是一件极其危险的事情。

踏踏实实铺平基础知识,才是正道。

做 ABC 的程序员而不是 ABR

  • ABC: Always Be Coding…
  • ABR: Always Be Reading…

看时会,做时废?人们口中常说的 「经验」,其实是指从自己 「一手实践」 中得到的 「一手经验」,而不是指那些从文章从别人口中获取到的「二手经验」。所以要保持 「保持始终编程」,你编写的代码越多,那么你的水平就会提升得越多。

造重复的轮子与其他程序员交流动手实践自己的想法。最佳实践就是集中训练,并且不断地探索新领域并挑战自己。

自学

自学是程序员必须掌握的一项技能,上面已经说到了大学的课程设计不是以 培养程序员 为目的的,而是以 教授最基础的知识技能,所以自学很重要。

一些高质量的自学资料和平台

部分摘录自:Github 近90k点赞的计算机专业课程,在家也能上名校! | JavaGuide

computer-science

  1. star :56.1k
  2. Github 地址:https://github.com/ossu/computer-science#intro-cs
  3. 介绍:通往计算机科学免费自学教育之路!计算机专业课程

TeachYourselfCS-CN (自学计算机科学)

  1. star :0.8k
  2. Github 地址:https://github.com/keithnull/TeachYourselfCS-CN
  3. 介绍:TeachYourselfCS 的中文翻译。内容超级棒!如果你是一个自学成才的工程师,或者从编程培训班毕业,那么你很有必要学习计算机科学。幸运的是,不必为此花上数年光阴和不菲费用去攻读一个学位:仅仅依靠自己,你就可以获得世界一流水平的教育。在这份指引中会为你解答:你应当学习 哪些科目,为什么?对于这些科目,最好的书籍或者视频课程是什么

REKCARC-TSC-UHT(清华大学计算机系课程攻略)

  1. star :12.2k
  2. Github 地址:https://github.com/PKUanonym/REKCARC-TSC-UHT
  3. 介绍:清华大学计算机系课程攻略。受 浙江大学相关项目 启发,创立了本项目。

网易云课堂 - 顶尖中文大学计算机专业课程体系

  1. 地址:https://study.163.com/curricula/cs.htm
  2. 介绍:汇集全国多家知名大学里广受学生好评的计算机老师,每一门课程都由他们亲自制作,权威、专业!人人都可以在这里体验到时下最流行的 MOOC,系统地掌握计算机专业知识。

and more…

类似的资料有很多,重点还是要自己能够静得下心来学习,如果纠结「看书还是看视频」,我的建议是 「都看!」

不要在寝室学习

宿舍里面吃的喝的玩的,要啥啥都有,而且环境复杂.. 很难不被各种奇怪的东西影响.. 所以要学习就不要呆在宿舍。

对自己有更高的标准,才会有更多选择

这里直接引用《精进》 的段落。

决策心理学认为,人在面临选择时,通常会采用 “满意原则”,而不是 “最优原则”。所谓 “满意原则”,就是人会从自己最熟悉的待选项开始逐一考察,如果发现了一个能满足内心标准的选项,觉得它是 OK 的,就会采纳它,不会继续寻找其他选项了。

拿怎样度过大学生涯来举例子。很多大一新生来到大学后,以为你刚刚从原本严苛的高中生活中解放出来,所以一时间不知道怎么适应大学生活,整天耽于玩乐,荒废了学业。本来他们完全可以选择认真地对待学习,可是他们却选择了相反的大学之路,其中一个最重要的原因就是没有在心中设立一个比较高的标准。

特别是那些考入二三流大学的学生,在这方面的问题可能更加严重,因为高考本身带来的挫败感、二三流高校学生的身份设定及环境暗示、不称职的老师引发的失望以及同学间放任自流气氛的带动作用,都容易让他们在一个低标准下自觉“满意”地度过每一天。

一个成熟的人,他的标准来自他的内心,而大多数人,却受环境所左右。一个年轻人,进入一所不那么优秀的高校,对自己的标准会不由自主地降低以适应这个环境,减少自身与环境的冲突,而这种做法对他们的人生也许是致命的。一个二三流大学的学生,能够勇敢地以 “985” 高校学生中的中档乃至高档水准来要求自己才是更恰当的做法,他也一定会从中受益。

如果心中有了更高的标准,他甚至可以选择 “炒掉” 自己的学校、专业,打破旧环境的束缚,寻找更高层次的新环境,比如选择做这些事:

  1. 选择网络上高水平的在线课程,不选择本校水平稀烂的课程;
  2. 选择国内或国外优秀的教材,不选择国内某些拼凑而成的注水教材;
  3. 选择与最优秀的同学或学长交流,不选择与班级里成天玩乐的同学为伍;
  4. 选择参加具有挑战性的各类竞赛,不选择只满足于完成基本的课程作业;
  5. ……

首先意识到你是有更多选择的,意识到现在环境给你的选项远远不是你可以获得的全部,然后你便可以让更高的标准推动着你,去发现更多的选项,最后做出对自己来说更好的选择

这个方法,不论是对于什么身份、什么年龄、什么处境的人应该都是适用的。

参考资料

  1. 千万别学计算机 | 码农翻身
  2. 计算机行业还能火多久?
  3. 996.ICU 背后:程序员在互联网公司的真实生态 | InfoQ
  4. 编程到底难在哪? | 知乎
  5. 这篇写给想选计算机专业的学弟学妹们 | Crossin的编程教室
  6. 为什么你可以不读大学 | 阮一峰
  7. 从《大学之路》思考我的大学教育为什么失败?
  8. 纽曼+鸿堡 | 真正的大学生活
  9. 学会编程,而不是学会Java
  • 本文已收录至我的 Github 程序员成长系列 【More Than Java】,学习,不止 Code,欢迎 star:https://github.com/wmyskxz/MoreThanJava
  • 个人公众号 :wmyskxz,个人独立域名博客:wmyskxz.com,坚持原创输出,下方扫码关注,2020,与您共同成长!

非常感谢各位人才能 看到这里,如果觉得本篇文章写得不错,觉得 「我没有三颗心脏」有点东西 的话,求点赞,求关注,求分享,求留言!

创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

评论