• 冒险村物语
  • 英雄无敌3塔防
  • 驾考家园手游

想自学编程怎样下手?

2022-03-18

碰巧,之前给学弟妹们整理过一套自己大学时期自学编程进大厂的学习方法!

分享出来,帮助编程初学者走出迷茫!

如图,我将编程学习分为 7 个部分。

为什么叫做 “学习架构” 而不是 “学习路线” 呢?

因为在编程学习中,有些事情不是严格按照顺序去做,而是在我们整个学习过程中都要长期坚持的,就像软件系统架构一样。

下面详细解释一下这套编程学习架构的 7 个部分。

1. 初入茅庐,海纳百川

刚开始学习编程时,难免会感到迷茫,如果你初入大学,会发现身边大多数的同学选择加入了学生会、各种社团来丰富校园生活,而不是一门心思去学习。其实这个阶段,并不需要太过关心和考虑以后找工作的问题,要做的事情就是学好大学的一些通识课程,保证成绩不能太差。不要提成绩无用论,除了学校之外,高的绩点也是简历的牌面,如果能取得前几名的好成绩,是绝对的加分项!

对于计算机专业的同学,刚开始并不会接触到很深入的知识,也很少有机会去开发一个完整的作品。基本都是学习 C、C++ 等编程语言,因为涉及和能够学习到的知识相对丰富。但是,想要学好编程,课本上的知识是远远不够的,一定要自学!

自学什么呢?

其实刚开始的时候大家并不知道自己擅长什么、真正喜欢什么、以后想做什么、从事哪方面的工作,因此,可以 “海纳百川”,多了解和尝试各种编程语言、技术框架、专业知识等。比如在课堂教的编程语言之外,去自主学习下 Web 网站开发或者 Python。

怎么自主学习呢?看书?

过去几十年,我们的学习几乎一直依赖书本。但是如今,互联网上资源非常丰富,为我们自学编程提供了很大的方便。可以选择看纸质书、电子书,但是一定不要直接去啃那些很复杂的理论书籍,而是选择一些轻松有趣、相对简单、案例丰富的书籍。除了看书之外,可以选择 W3Cschool、实验楼、FreeCodeCamp 等在线学习网站,边学边敲代码练习。还可以去 B 站上搜索一些视频教程,可能要比啃书学习要轻松得多!

但是,无论你选择何种方式去学习,一定要边学边练习,不必局限于一些习题或书中的代码片段,可以试着发挥自己的创意,去编写一些简单的网站或者实用的小工具,相信你会收获成就感,逐渐对编程产生兴趣。

这个阶段,除非你有非常明确的学习方向,否则没有必要对某一门技术过于执着,毕竟计算机领域很多技术和知识点是相通的,前期先多学习一些简单易懂的知识,会让编程学习轻松有趣一些。

2. 兴趣使然,纵横交贯

上一个阶段重在培养我们对编程学习的兴趣,当你学习了一些编程知识和编程语言后,你已经对很多零碎的知识产生了印象,后面学习新知识也会比之前更加容易和迅速。

这个阶段是你编程能力开始突飞猛进的时候。由于时间和精力有限,你要做的是从你已经学到的知识库中挑选出相对感兴趣的部分,比如某一门编程语言(比如 Java),或者是某一个领域(比如 NLP)。然后对这部分知识进行相对深层次的学习,可以去读一本经典的书籍,了解这门技术的特性,甚至是阅读相关源码。

现在网上的资源非常多,很多有经验的程序员已经帮我们整理好了学习路线和知识总结,可以帮助大家由浅入深地学习一门编程语言。

以 Java 为例,这是我自己整理的优秀 Java 学习资源:

在重点深入学习一门技术的同时,还需要继续保持开放,接触更多的新知识,而不是深陷其中、无法自拔。计算机的很多知识是相互关联的,如果多学习一些不同方面的知识,我们更容易将那些零碎的知识点串联成网,从而开拓思维,得到更大的收益。

但是,算法、数据结构、计算机网络等知识点比较特殊,即使没有兴趣,也要认真地去学习!因为它们可以培养你的思维,提升你的程序设计能力,对于程序员来说太重要了。毕竟大多编程语言都是相通的,语言只是工具,思想才是武器。

听起来可能比较抽象,但在实际面试和工作中往往这些零碎的小知识会发挥巨大的作用。比如,面试互联网大公司时,基本每一轮面试都会考察几道算法题目;面试后台开发岗位,也一定会问到计算机网络、操作系统的知识。在工作中,我们也经常会用到一些算法的思想来解决问题,比如滑动窗口、时间轮、布隆过滤器等。

这个阶段,我推荐大家选择主流的技术和框架进行深层次的学习,比如 Java 语言的 SSM 和 SpringBoot 框架。主流的技术教程多、文档多、遇到问题更容易解决,而且通常容易上手,能做出一些个人作品,增加兴趣和成就感。

3. 有的放矢,十年磨剑

如果你已经对某个编程语言或知识领域产生了浓厚的兴趣,或者已经能够得心应手地开发个人作品,那么恭喜你进入到下一个阶段。

本阶段要做的是确定自己的职业方向,做到有的放矢。

为什么没有在一开始就让大家明确目标呢?因为确定目标的时机很重要,过早或过晚都不好。很多人在上大学前可能对某一个职业特别憧憬,整天嚷嚷着自己一定要成为自己想成为的人,但是直到你真正接触这个职业或者其相关的知识一段时间,你可能才意识到自己并不适合。比如我小时候想当律师,整天看 CCTV 12,也啃了几本法律书籍,但是后来自己记性差了,而且发现自己对编程的兴趣更大,因此也放弃了之前的目标。庆幸的是,我不是在大学期间才放弃律师这个职业,没有耽误到我学习编程知识。大学时间短暂,没有太多的时间给我们去迷茫和折返。

既然已经有了喜欢的编程技术和领域,确定职业目标就相对简单了。每个人有不同的选择,建议先从自己的兴趣出发,选择和自己的兴趣和所学技能相匹配的岗位。同时,也要考虑到目前的市场需求,最好看一些数据和调研,不要选择冷门职业。还有一些其他纳入考虑的点,比如薪资、工作时长、地点等等。确定职业后,还可以进一步地去选择公司。建议给自己定一个最高的目标,比如进入互联网大厂,要相信自己,只有饥饿的狼才能吃到美味的饭。

确定好职业目标后,就要根据职业,堆积打磨自己的技术栈。这是一个十年磨剑的过程,重在坚持。

首先要 确认你的目标岗位需要哪些相关的技术,推荐直接到大互联网公司的招聘官网来看对某岗位的技术要求,比如 Java 开发可以看阿里和美团官网、C++ 看腾讯官网、Golang 或 PHP 看字节跳动官网等。

下图是腾讯后台开发岗位需要掌握的技术栈,可以帮助你明确需要学习的技术:

知道要重点学习哪些技术后,要制定一个明确的计划,将大的目标拆解为依次去学习每项小的技术,可以参考网上的一些学习路线,按照主次对技术知识进行排序,并规定好学习每个技术花费的时间,从而有一个整体预期,少走弯路。而不是杂乱无章地去学习,主次不分。

比如 Java 后台开发岗位一般会要求 Java 基础编程、Java 并发编程、数据库、计算机网络、操作系统、设计模式等,相应的技术栈可以是:Java、MySQL、SSM 框架、Redis、Linux 等等。确定技术栈后,要按照计划,对每一项技术进行全面且系统的学习,推荐阅读一些经典书籍,比如 Java 可以看《 Java 核心技术卷 1 》、《 Java 编程思想 》等。

还有一本 Java 在线学习文档也是强烈推荐:

如果要进大公司,编程学习就不能仅仅止步于 “会用”,而是要懂得 “巧用”、“精用”,甚至能够对知识点进行复刻和创造。比如学习 MySQL 要去了解其底层的数据结构和调优策略,学习 Spring 框架时要熟悉其底层的设计模式和依赖注入的原理等。更重要的是,不能纸上谈兵,要有能力去灵活运用学到的知识来开发一个项目,企业需要的是能解决实际问题的人才。

学完这些知识后,你就可以踏实地在简历上写 “熟练运用 xxx 技术” 啦!

4. 学以致用,宁静致远

不止针对计算机技术类岗位,互联网公司的很多其他岗位,比如产品、运营、策划,都要求学生有较强的实践能力。但是学校的课本知识多少有些过时和应试教育,大多停留在理论层面,实践创新部分还是要靠学生自我驱动。如果不懂得自学和实践,真到找工作的时候,简历上没有项目经验,空空如也,是极大的劣势。

在学习技术的过程中,一定要边学边练,否则可能当你用心看完一本书后,打开电脑发现自己一行代码都写不出来,再回过头来翻书找代码,就浪费了不少的时间。

刚开始动手写代码时,如果没有什么创意,不知从何开始,可以按照网上的视频教程做一个简单的 Demo(小样),并且将这些 Demo 好好保存。后面学到新的知识后,可以选择自己现有的 Demo 进行改造和包装,比如添加新的功能、优化性能等等,尽量做出完整的作品,并用这些作品去完成课程设计作业、参加作品类竞赛、申报科创项目、申请软件著作权、专利等等。如果某个作品做的非常好,甚至可以考虑将其正式上线,说不定就发家致富了呢?

比如我大学时期就做过很多导航类的网站,积累了很多经验。最近也是独立开发了编程导航,目的是帮助大家发现优质编程学习资源,已经上线 2 个月,日活数千,得到了大家的一致好评!

积累了作品,你的简历就多了 “项目经历”、“竞赛奖项” 等内容,而这些内容,是面试官非常看重的。

在正式找工作前,建议大家先去找一份和目标岗位相关的实习。曾经看过一份校园招聘数据,数据表明,入职头条的员工中 50% 都曾经在头条实习,而网易员工中有超 70% 的同学都有实习经历。

实习就像正式员工跳槽一样,不是非要一步登天。第一段实习经历没必要有太高的要求,但是最好要和自己的职业目标相契合,能够感受真实的企业环境、学习到很多的工作经验、在团队中实践自己的技术知识。不用担心自己水平不够,无法通过面试。其实在参加面试的过程中,能够更快、更针对性地发现自己的不足,并且在面试后进行复盘和总结,能够得到更快速的成长。

怎么去找第一份实习呢?其实现在有很多帮助大学生找实习的正规平台,比如牛客网、实习僧 APP、找学长学姐内推、或者直接在企业招聘官网投递简历等。

宁静致远 是我个人很喜欢的一种境界,大家在找实习或者正式求职时难免会受到外界环境的影响。比如小李拿到了世界 500 强的 offer、年薪百万,或者小王成天抱怨找工作难、竞争激烈。然而这些夸耀或负面情绪和我们又有什么关系呢?就像考场里做卷子,提前交卷的一定考得最好么?谁知道最后你的分数会不会比他高呢?

我们应该关联上下文去看待各种人事、情况和情绪,确实有很多拿到好的 offer 的同学,他们也许比你聪明,也许比你有背景,但更多的是他们曾经付出了更多的努力,舍弃了很多休闲娱乐的时间。找工作难、无法通过面试、产生负面情绪也一定是有原因导致的,企业中的面试官不会都戴有色眼镜看人,可能还是我们没有足够多的付出或者有一些失误,又或者其他人比我们更努力、更幸运。我们要做的是和优秀的同学多交流,发现他们身上的闪光点,分析他们成功的原因,向他们学习经验和方法。多和优秀的人交流,自己也会变得优秀。同时,我们要吸取每一次失败的经验教训,记录下来,多多自省。然后更重要的是,保持宁静,按照自己的规划,一步一步往前走就好。

5. 锋芒毕露,放手一搏

如果你已经按照上述的阶段努力过,不仅有了一定的技术知识储备、还有项目经验,或者是一段实习经历,那么恭喜,你已经具备了一定硬实力!下面你要做的就是利用一些软技巧,在求职时,将你的优势与亮点锋芒毕露。

首先,整理一份完美的简历。简历是一个人求职的门面,即使你的口头表达能力有多优秀,见不到面试官也就毫无用处,因此要尽可能地在简历上展示自己。

编程技术类的求职简历通常包括几个部分:

个人简介:包括基本信息、照片、学校、成绩等。个人技能:列举你熟悉的技术知识,也就是你的技术栈。竞赛奖项:列举你曾经参加的竞赛和获得的奖项。项目经历:列举你做过的项目,比如课程设计、学习作品、竞赛作品、实习项目等。科研学术:列举你的学术研究和科研成果。实习经历:介绍你的实习情况,在哪实习、做过什么、带来什么成果。

其实,编写简历是有很多技巧的,下面列举一些常用技巧:

简历必须一页,排版整洁,保持清爽,且色调不宜过暗或过亮,可以使用淡蓝色 。要分析自己的个人优势,对各板块排序,把亮点放上面 。简历上的文字内容精炼,用词尽量专业,拒绝口语化,你的简历终究是要给专业的面试官看的,不用担心他看不懂。项目、实习经历介绍中,可用 STAR 分析(场景、任务、行动、成果)来梳理自己的核心工作,其中,成果最重要,最好列举明确的数据,比如使用 xx 技术将项目的并发量提升了 30%。每个项目的介绍不宜过长,给面试官提问的空间。 利用简历去引导面试官。很多面试官都会从简历中挑选他感兴趣的项目或技术去展开提问,因此必须足够熟悉写到简历中的项目和技术,并提前想好对策。比如项目中用了哪些技术,为什么用,有什么亮点,怎么去优化等。 写完简历后,自己通读几遍并找专业的 HR 来进行点评,还可以多阅读借鉴他人的简历。 针对不同的岗位和岗位描述,准备不同的简历,在部分细节和内容上调整。比如投递产品和运营岗,你的项目和实习介绍就要分别侧重这两种不同的职位。 内容允许适度夸大,但绝对不能欺骗!这个小技巧尤其适用于没有特别多的项目的同学,但也要注意不要被面试官戳破哦。

准备好简历后,要多多练习自我介绍。自我介绍的重点是通过讲述自己的校园经历、学习过程、竞赛、实习、研究等来突出你的学习能力、沟通能力及解决问题的能力。其他的部分,如个人性格,用几个成语带过就好,属于正确的废话。自我介绍快结束时一定要提及自己最擅长的方向、项目或技术,很多面试官都会从自我介绍展开提问。

面试是应聘者和面试官之间的博弈,一场完美的面试是由你来引导面试官,让他对你产生兴趣、产生信赖,而不是被他牵着鼻子走。至于你是第一次来面试还是老油条,从自我介绍就可知一二了。

面试过程中,在不过分夸大的前提下,大胆展示自己吧!很多面试官都喜欢爱思考、善于交流、有发散思维、有执行力的同学。

人气推荐

知识阅读

精彩推荐

  • 游戏
  • 软件
查看更多>>