经历了大一一个学年,我摸索出了这样的经验

目录

  • 前言
  • 一、入学篇
    • 1.填志愿
    • 2.初入大学
  • 二、自学篇
    • 1.第一次自学
    • 2.了解黑客
    • 3.开始热爱编程
    • 4.第一次体验从入门到放弃
    • 5.又一次从入门到放弃
    • 6.初入ctf
    • 7.学习二进制
    • 8.学习Java
  • 三、计划篇
  • 四、建议篇

前言

不知不觉上了大学已经快一年了,这一年我的改变非常之大。我和大部分学生一样,上大学后,我也迷茫过。但我很庆幸,我在编程之路上开启得很早。在这里分享我的编程探索之路并且在后面分享一些编程方面的个人建议。来这里的堵着门看看我是怎么过来的,取长补短,避免在编程中走更多的弯路。

一、入学篇

1.填志愿

我在福建晋江的一所一级达标高中上学,从高一就非常努力,但是很不幸,高考分数并不是自己理想的。填志愿时,想选计算机专业,但是迫于无奈,只能选了计算机相关的偏硬件专业,电子信息工程。我对计算机的好奇,就是从填志愿开始的。但是暑假并没有花任何功夫在编程上,那时我对编程并不了解,也不知从何学起,对计算机的好奇马上又消失了。三个月的暑假是漫长的,9月16日,终于迎来了入学。

2.初入大学

对于每一个新生而言,大学是充满未知的地方,有很多事物等着我们去探索,当然带来的也有迷茫。

初入大学的军训期间,那时对硬件和软件没有一个明确的概念。学校里的各种部门和协会都迎来了新招,那时对加入部门和协会产生了浓厚的兴趣。

很多部门和协会的负责人都来过宿舍宣传,也不乏许多的兼职、推销和诈骗。他们每批人的宣传单我都留下了,每一份都有意识的去了解。但是,从那时候开始,我了解到了学校有程序设计协会和网络安全协会。

各部门协会的面试是集中在军训快结束的几天晚上,我去面了3个部门,最终进入了校电台办公室。但是后来发现,虽然自己也很爱与人交往、谈天,但那里并不适合自己,也许我更适合技术。然后我就通过宣传单混进了学校各大技术协会的群。

我通过群进入了实验室,在那里,我认识了一批学长们,包括那些在ACM竞赛中获得国家奖项的学长。

当时我很单纯,特别崇拜编程,也希望能行那些学长一样厉害。由于学校C语言课程还没开,我就先跟协会里的学长们一起学了皮毛点的C语言语法。

学校的C语言开课之后,我发现我们宿舍也有一个在暑假就学习C语言的伙伴,后来跟他一起做算法题,当时的第一感觉就是他好厉害,他好懂。

但是很多东西并没有这么容易坚持下来,因为我对“ 算法能干嘛?”这个问题特别纠结,虽然C语言基本语法已经懂了,但是学编程不是为了学软件吗?天天做那么多算法题干嘛?所以我就开始有意识的开始向软件编程方向开始了解。

二、自学篇

1.第一次自学

我一边学习学校的C语言程序课,一边用自己的笔记本电脑疯狂的百度和编程、C语言有关的东西,大一上学期在自己基础不扎实的情况下,尝试着用C语言写了第一个我觉得比较高大上的游戏,贪吃蛇。但是很遗憾,对于我这个小白而言,贪吃蛇的很多实现算法还不是特别清晰,看着B站上的视频学习,最后只能几百行代码,复制粘贴,开始运行,草草了事。这是我上大学以来走的第一次弯路。

2.了解黑客

我对新鲜事物非常的好奇,尤其是技术。有一天我在网上看到一篇文章,讲的是一个清华大学的神童为了不写作业,黑了清华的系统。那时我对黑客这个名词留下了深刻的印象。没过多久,我又在网上看到了一篇文章,某名牌高校的计算机专业大二女学生参加网络安全大赛中获奖,瞬间因她的高超黑客技术而出名。从次以后,我就幻想着能成为一名黑客大师,并且对软件编程产生了浓厚的兴趣,开始对硬件失去兴趣。

3.开始热爱编程

大一上学期的课程十分简单,除了电工学,差点没过线,其它的都轻松过线了。我们迎来了寒假,我本来要在寒假好好计划学习与考研相关的内容,没想到,学了十几天后,我拷问了自己的真实内心,自己还是对编程更加感兴趣,就开始打开电脑,自学了起来。寒假时,我只会c语言和对黑客概念一点点的了解,至于这编程技能到底能干什么,不得而知,我花了很大的经历从网上搜索了有关计算机专业学生的就业和具备的技能。每次自学编程迷茫的时期,我都会花费大把的时间在搜索引擎上搜索,寻求学习资料,获取自己未来的答案。
我记得又一次在大一上的时候遇到过一个同年级的大佬,他早就在高一自学C语言,向我推荐了一个所有程序员都钟爱的网站——github。后来,我通过搜索引擎,了解了CSDN这个平台。
寒假期间,我C语言书籍翻得不想翻了,因为我想编一些高大上的软件,又正值python火热,我就去学了python语法。这是我的又一次弯路。我暂时抛弃了C语言,在python上十分执着,它是一个拥有简洁的语法和高效开发效率的脚本语言,我十分喜欢。大致了解了Python语法并且能支撑我进行简单编程后,我又了解了爬虫。这时候,我开始热爱编程了。

4.第一次体验从入门到放弃

在了解了爬虫之后,我就在github上不断寻找爬虫源码,在mooc网上寻找爬虫教程,收效甚微。因为,爬虫好像要一点Web方面的知识,我发现了自己广度太窄,就抛弃了爬虫,去学了Web知识。

5.又一次从入门到放弃

我从了解各种协议开始,开始学习HTML的简单语法,跟着B站上的老师制作了最简单的网页,慢慢的成就感,后来发现,制作一个好的网页还需要学习CSS、JavaScript等语言。但是实在没有耐心学下去,简单的浏览了CSS和JavaScript的知识大纲后,我又经历了从入门到放弃,把重心投入到了Web渗透上。当时的理解就是:Web渗透好像不需要太深入的Web知识,每个知识点都只要了解个大概。后来,我发现黑客、渗透、网络攻击这些名词跟ctf关系不浅,而我又曾经混进过学校的网络安全协会的群,不如以后就打ctf吧?

6.初入ctf

决定打ctf后,我了解到ctf有五个比较基本的题型:Pwn、Reverse、Web、Crypto、Misc,它们分别是漏洞挖掘、逆向工程、网络、密码学、杂项。我很喜欢这种比赛,因为我认为它注重攻防实战,实操性很强,比枯燥的算法题有趣得多。
我开始和群里面得过CTF奖项的学长们交流,他们把我拉进了他们的小队,我好像就成了ctf预备队员。一边跟着自己的脚步,一边领略他们的强大,再一边听从群内老师的鼓励,我开始了ctf学习。作为初学者,我开始做了一些杂项、Web、Crypto的一些题目,同时也得到了很多的新知识,时而不懂就问学长。我觉得我学到了很多,我开始梦想成为一名主攻Pwn和Reverse的ctf选手。

7.学习二进制

Pwn题和Reverse题在ctf比赛中占据了重要的地位,并常常作为压轴题,难度可想而知。它们需要庞大的知识量和精湛的知识深度,谁知我年少轻狂,一下子钻进了汇编语言和内存的学习中。在学习内存和汇编的过程中,要对内存有很深的理解,而C语言、汇编语言和内存息息相关,我又意识到C语言的重要性,特别是我对指针还一知半解,更没法支撑我继续学习二进制。所以,我一边二进制,一边又复习基础没打好的C语言。

8.学习Java

要想学好网络安全,特别是攻防方向,必须得要会几门编程语言,至少精通一门。黑客不就是技术的集大成者吗?我在学ctf的过程中,随着对IT行业理解的不断深入,我发现Java在这个时代也是主流开发语言,甚至不逊色于python。我梦想成为一名黑客,不希望成为脚本小子,所以不会点编程能力怎么行,Java语言没有C语言那么繁杂的指针,Java程序在各大平台系统上都可以运行,兼容性强。所以这个时代,程序员怎么可以不会Java?我从此开启了Java学习之路,但是ctf仍是我的梦想,这是我第一次出现了从入门到坚持。

三、计划篇

今天是2020年5月28日,我的大一还有一个月就要结束了,经历疫情的这几个月长时间宅在家,我的技术突飞猛进。虽然取得了长足的进步,但是梦还要追。
虽然我不知道我的这个计划会不会让我走偏,但是我还是要计划。
一年来,我涉猎了很多门语言,了解Web,入门Java,第一次打了ctf。
①未来,我希望我能在C语言、Java、python这三大语言上变得熟练应用
②我会继续打ctf,甚至是毕业后。
③我会一直写博客,只要我还在IT圈子里,我要建立起自己的IT圈,分享我的技术。
④虽然我是一名IT爱好者,但我热爱自由,我也想成为一名分享技术的自由职业者。

我不知道我会不会坚持下去,也许未来有一天我会发现我现在这个决定是错了,走了弯路,但是这是我成长道路上宝贵的经历,任何的经历都不是白费的,它都是能够带给自己很大的成长的。

四、建议篇

结合我这一年以来的经历,我给CSDN的一些编程初学者们一些建议。(千万不要走过我走过的弯路)
学习路线:
①C语言——>Java——>python
C语言学习所有编程语言的基础,万万不可忽视,学习了C语言熟练掌握之后,你学习其他语言就会十分容易。其他语言都是从C语言简化过来的,如果第一门语言先学Python,它可没有那么多与内存相关的知识,到时候你发现你的编程能力受限了,开始学Java和C语言,你会发现你还要入门重新学。而C语言和Java与内存息息相关,在编程中,要想精确的理解内存层面,十分推荐C语言和C++。如果想要写一些简单简短的脚本程序供自己用,python比较适合,这种脚本程序不需要强大的运行效率,我们通过python就可以开发得特别快速。如果倾向于就业,建议Java,这种语言应用范围特别广,解决广大程序员的就业问题,现在基于安卓系统上的开发都是以Java为主。

②千万不能只会一门编程语言
工作上的很多事务需要很多编程语言的结合,一个大型软件的开发往往也涉及到很多编程语言。最优建议是精通一门,熟练多门,并且会利用相关编程语言应用一些技术。

③千万不能忽视数据结构与算法
初入工作,你可能觉得算法没什么大用处,但是随着你接触代码的增多,你会发现数据结构与算法在软件开发当中起着无可替代的作用。你可能会写一些机械性的业务,但在软件开发最核心处,还是要交给那些算法工程师。没有算法工程师,软件也就无法完成。所有的程序员,都需要认真学习数据结构与算法来提高自己的竞争力,那是实力的体现。但是,数据结构与算法十分抽象,应用困难,学习过程中,不可囫囵吞枣,好的算法工程师,往往是经过了好几年的沉淀。

④在大学中适当参加一些与编程相关的竞赛
哪怕没有奖项,如果每年都有参加竞赛,也能大大增加我们的阅历和能力,如果在大学期间没有机会接触到项目实战,就更要参加,没有竞赛的支撑,想要在大学四年中成长为一个厉害程序员,还是有点难的。

⑤不能只参加竞赛,还要有一定的项目经验
竞赛是智力和能力的体现,但是在就业方面,需要我们一定的项目经验,项目开发有助于提升我们的知识应用能力,有了竞赛的沉淀,在项目开发中就更加有利。

⑥适当学一些相关的技术,利用相应的编程语言去实现
作为程序员,我们很需要不断地更新自己的知识,特别是在工作中,在就业前具备一定的技术能力,有助于我们职场竞争力的提高。

⑦不能码一辈子的代码,工作强度太高,再健壮的人也承受不住,工作之余,多多发展自己的副业。大多数程序员职场生活都熬不过35岁,请让你的副业在35岁之前发扬光大,让它能接替你的主业!

你可能感兴趣的:(个人经历和经验分享)