致我们终将逝去的青春
江湖浪子(jhlz),专科计算机应用技术专业毕业,一个比较喜欢江湖和武侠世界的中二少年 (目前的年纪应该还算是少年吧!心理年龄永远 18 岁!😄)。大学玩了三年,当然,或多或少也学了一点点小知识。不是天纵奇才,也没有丰厚的家境和令人艳羡的背景。自我介绍非常羞愧,因为我并不是 “穷人的孩子早当家”。
小时候家里穷,没有什么眼界,也没怎么接触过电脑。只记得小学的时候自己和同学偷偷去网吧打游戏,了解也不多,当时比较常用的就是 Ctrl + Delete + . 。后来被父母发现,一顿痛打,后面基本没有再去过(大学的时候没有自己的电脑,需要制作一个 U 盘启动,去了一次)。
说来也奇怪,当年高考报志愿的时候计算机在最后一项,前面的几个专业都没有录取上 🤣。那时候填志愿事先也不知道分数(18),对于各大高校信息也不甚了解。当时周围的同学都说把自己认为十拿九稳的学校放在第一个,第一个有加分项或者说是好感,若运气好就可以被录取。
于是自己当时就只报了一个学校,该学校的专业也选了一些,有 3~5 个吧,计算机专业在最后一个,前面的是根据自己的兴趣选的专业。
大学期间在 B 站看了一位老师分享的很多报志愿的经验的视频,确实很有用,尤其是对于农村的学生,可以额外的获取很多信息,非常感谢这位老师提供的信息💖。但是我本人当时完美的错过😅。不过现在想来,即使不错过,我高考的分数也很尴尬,总体而言,对于这种信息,这个时候就是 知道总比不知道要好的多,还是非常推荐各位正在备战高考的少侠了解一下,尤其是没有什么背景的或者家境不是很好的同学,祝愿你们名满凤凰楼,冠盖满京华。
毕业的时候对人生充满了迷茫,不知道自己要做什么。于是就和一位舍友一起报了培训班,主要学习 Java。我还是蛮喜欢这门带我进入互联网行业的语言的,虽然写多了或者有经验后觉得 Java 并不怎么好,写法啰嗦、占用内存较大等缺点。其实语法层面的问题如果使用新版的 Java,你会发现其实它同我们一样,也在成长,新出的语言中有的特性,它也在慢慢支持,虽然步伐慢了一点儿,毕竟它发展了很长时间,有很多的历史包袱注定不能大刀阔斧的改革。
毕业后的一年里,是我真正提升技术的一年,学到了很多 Java 领域的知识,在这里我要非常感谢我的第一家公司,感谢公司的各位小伙伴平时对我的照顾。的确,还是我太年轻了,没有受过社会的毒打。
我在公司项目中主要贡献就是业务代码,个人感觉我的代码写的还是可以的,嘿嘿。业余时间会整理消化公司项目中使用的相关框架的知识,然后有其它时间的话也会再学一些其它的知识,然后去优化公司的代码。这些知识有些时候还能帮我解决一些开发的难题。
当然,还是会遇到困难的,经验不足的确是硬伤,解决问题非常耗时,偶尔还会手足无措,不知道怎么办,最好去向其它同事请教(再次感谢之前公司的小伙伴),遇到难题我们都希望有 “高人指路”。
所以如果各位少侠有可以进入大公司的机会,一定一定要去感受一下,这是人生或者是职业生涯宝贵的经历,即使自己什么都不会,进去看看也是好的。
接下来谈谈编程语言的学习经验吧,最核心的就是自己动手实践,还记得那句台词吗?“我就喜欢动手能力强的人!”,开个玩笑,实践是检验真理的唯一标准!
数据结构和算法放在开始说,这个属于内功/内家拳。内功是需要长期去练习、去积攒的,“拳不离手,曲不离口”,最终达到内力浑厚无比、充斥周天、绵绵不断的效果。所以刚开始学习的时候,算法可以不刷;但是数据结构是必须要了解的,这是非常常用的,尤其是数据结构的特性。很多的高级语言本身都提供了常用的数据结构,比如:集合、链表、散列等,当然你也可以使用第三方提供的数据结构的库,它们的实现更加优秀,比如 Java 的 Guava 集合库。实际运用中可以编写出占用内存较少、性能较好的程序,甚至获得同事的认可,何乐而不为?
浪子刚毕业的时候自己为自己不刷算法找了一个借口😔:写业务代码必须要会算法?不会一点儿也不耽误我完成业务功能,我要是算法特别好,为什么我不去应聘算法工程师呢?
后来不是现实打脸,而是自己总结的时候自己打自己脸。算法的的确确反映一个程序员的内功,而且非常的直观。它不仅能直观的反映出程序员是否具有编程思想,还能锻炼逻辑思维。可以这么说,只有算法底子好,去写复杂业务很简单的。不要认为有多难,成熟的程序员写代码之前都是深思熟虑的,当然,仅限于公司的程序。
默认所有少侠都掌握了计算机基础,有了解也是可以的。刚学习编程语言,和把大象装进冰箱里一样简单:学习基础语法,多多上手练习 => 集成库/框架,上手练习 => 复盘,总结。日常工作就是集成各种库,使用库去编写各种基础语法,这些片段组成运行的程序。
对于刚开始学编程的少侠,建议选定一门语言,选自己喜欢的或者随大流,全部的时间和精力都用来学这个即可,不要担心未来工作要转语言什么的,贪多嚼不烂。而且要明白一点:编程语言本身的设计和思想都是借用了已有的社会经验、社会工程学的概念,进而使用编程语言来体现。精通一门之后无论是学习新语言还是集成框架都会事半功倍,而且如果官方文档看的多,编程的大多概念甚至是相关英文都会记住,很多概念都是相通的,不要觉得有多难。
编程语言本身基本只有两大重点:语法、概念,如果再加一个,那就是为了解决什么问题(适用领域,不是那么重要,有些语言只适用与特定领域)。其余的就是编程语言的具体实现(API)了。
编程语言自身的源代码多看是很有益处的,阅读的时候你可能会经常感慨:哦 哦 还能这么写 还可以这么玩!当然,刚开始可能看不懂,没关系,编程思维需要一点一点慢慢培养。
至于集成框架出现的错误,记住一句话:官方文档永远是第一手参考资料。另外学习框架的时候尽量在出错的时候去读,带有目的性往往要专注一些。只是为了学习的话,效果不是很好,甚至看不懂,可以等后面有经验了再去看,会有不一样的收获。
之后提升、巩固自己的最好方式就是造轮子。工具如何使用是非常简单的,如果该工具的文档写的足够好,基本没有任何难度(所以写文档也是一门艺术)。只有自己去实现的时候,比如写一个实用的库或者一个小框架,才会发现自己更多的不足,通过造轮子查漏补缺,开源的话甚至可以为 AI 做一点贡献😂
关于各种语言、库、框架的版本的更新情况,这里给一句话吧:“学习新思想,争做新青年”。
以上就是自己到目前为止大概三年的编程经验总结,只是站在宏观的角度归纳,没有细致深入,因为里面的东西真的很多,都是需要自己动手实践的。最后希望国内的开源环境越来越好,也希望所有少侠都可以开心学习、开心工作、开心摸鱼、开心生活~
自己不能闪耀,就给那些闪耀的人以掌声鼓励,祝福他们不忘初心,越来越好。
想要学好编程,需要培养自己的编程思维,把内功修炼好,当然,这需要一个过程。希望我们都能经受得住时间的考验。