前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员要怎么学习

程序员要怎么学习

作者头像
马拉松程序员
发布2022-04-26 17:38:01
2400
发布2022-04-26 17:38:01
举报
文章被收录于专栏:马拉松程序员的专栏

前言

“怎么学习”这个问题,从上幼儿园开始就在接触,到现在工作,也是一直在学习,子也曾经曰:学而时习之。

我对学习的看法就两个,第一个是态度,第二个是方法。换言之,就是世界观和方法论。世界观这个东西很大,很虚,一言以蔽之,就是不论做哪一行,尤其是程序员,要保持住终身学习的态度。其次方法论,用对方法确实事半功倍。

昨天公司部门的技术大佬分享一个学习方法的帖子,我觉得有几分道理,但是由于是图片的形式,而且压缩很严重,所以我根据图中的内容,整理了一下相内容,我个人在基础上稍加改动。

为什么

  • 世界观 我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。不少朋友每天都阅读技术文章,但是第二天就忘干净了。工作中领导和同事都认可你的沟通和技术能力,但是跳槽面试却屡屡碰壁。面试官问技术方案,明明心里清楚,用嘴说出来却前言不搭后语。面试官再问底层算法,你说看过但是忘记了。他不在乎你看没看过,答不上就是零分。正如男女相亲,男方谈吐潇洒才能吸引姑娘。可是男方紧张了,平时挺能说,关键时候却支支吾吾,姑娘必然认为他不行。人生充满了许多考试,有形的和无形的,每次考试的机会只有一次。 工作五年十年后,别人成了架构师,自己还在基层打滚,原因是什么?职场上无法成功升迁的原因有很多,没有持续学习、学习效果不好、无法通过心仪公司的面试,一定是很重要的原因。

把自己当成一台计算机,既有输入,也要有输出,用输出倒逼输入。

学什么

  • 基础与应用 近些年诞生了许多新技术,比如最时髦的AI,数学基础是初中就接触过的概率统计。万丈高楼从地起,不要被新工具或者中间件迷住双眼,一味地追新求快。基础知识是所有技术的基石,在未来很长的时间都不会变化,应该花费足够的时间巩固基础。

以数据结构和算法为例,大家阅读一下。Java的BitSet的源码,里面有大量的移位操作,移位运算掌握的好,看这份源码就没问题。Java同步工具类AQS用到了双向链表,链表知识不过关,肯定搞不懂它的原理。互联网大厂都喜欢考算法,为了通过面试也要精通算法。

以Java工程师应该掌握的知识为例,按重要程度排出六个梯度: 第一梯度:计算机组成原理、数据结构和算法、网络通信原理操作系统原理; 第二梯度:Java基础、JVM内存模型和GC算法、JVM性能调优、JDK工具、设计模式; 第三梯度:Spring系列、Mybatis、Dubbo等主流框架的运用和原理; 第四梯度:MySQL(含SQL编程)、RabbitMQ/RocketMQ/Kafka、ZooKeeper、Redis等数据库或者中 间件的运用和原理; 第五梯度:CAP理论、BASE理论、Paxos和Raft算法等其他分布式理论; 第六梯度:容器化、大数据、AI、区块链等等前沿技术理论; 有同学认为第五梯度应该移到第一梯度。其实很多小公司的日活犹如古天乐一样平平无奇,离大型分布式架构还远得很。学习框架和中间件的时候,顺手掌握分布式理论,效果更好。

  • 广度与深度 许多公司的招聘JD没有设定技术人员年龄门槛,但是会加上一句"具备与年龄相当的知识的广度与深度”。多广才算广,多深才算深?这是很主观的话题,这里不展开讨论。 如何变得更广更深呢?突破收入上升的瓶颈,发掘自己真正的兴趣。 大多数人只是公司的普通职员,收入上升的瓶颈就是升职加薪。许多IT公司会对技术人员有个评级,如果你的评级不高,那就依照晋级章程努力升级。如果你在一个小公司,收入一般,发展前景不明,准备大厂的面试就是最好的学习过程。在这些过程中,你必然学习更多知识,变得更广更深。个人兴趣是前进的动力之一,许多知名开源项目都源于作者的兴趣。个人兴趣并不局限技术领域,可以是其他学科。我有个朋友喜欢玩山地自行车,还给一些做自行车话题的自媒体投稿。久而久之,居然能够写一手好文章了,我相信他也能写好技术文档。
  • 哲学 哲学不是故作高深的学科,它的现实意义就是解决问题。年轻小伙是怎么泡妞的?三天两头花不断,大庭广众跪求爱。这类套路为什么总是能成功呢?礼物满足女人的物欲,当众求爱满足女人的虚荣心,投其所好。食堂大妈打菜的手越来越抖,辣子鸡丁变成辣子辣丁,为什么呢?食堂要控制成本,直接提价会惹众怒。 科学上的哲学,一般指研究事物发展的规律,归纳终极的解决方案。软件行业充满哲学味道的作品非常多,比如《人月神话》。举个例子,当软件系统遇到性 能问题,尝试下面两种哲学思想提升性能: 空间换时间:比如引入缓存,消耗额外的存储提高响应速度。 时间换空间:比如大文件的分片处理,分段处理后再汇总结果。 设计稳健高可用的系统,尝试从三个方面考虑问题: 存储:数据会丟失吗,数据一致性怎么解决。 计算:计算怎么扩容,应用允许任意增加节点吗。 传输:网络中断或拥塞怎么办。 从无数的失败或者成功的经验中,总结出高度概括性的方案,让我们下一步做的更好。
  • 英语 英语是极为重要的基础,学好英语与掌握编程语一样重要。且不说外企对英语的要求,许多知名博客就是把英文翻译成中文,充当知识的搬运工。如果英语足够好,直接阅读一手英语资料,避免他人翻译存在的谬误。

怎么学

  • 知识体系 体系化的知识比零散的更容易记忆和理解,这正如一部好的电视剧,剧情环环相扣才能吸引观众。建议大家使用思维导图罗列知识点,构建体系结构。如下图所示:
  • 克服遗忘 高中是我们知识的巅峰时刻,每周小考每月大考,教辅资料堆成山,地狱式的反复操练强化记忆。复习抗遗忘的唯一办法。大脑的遗忘是有规律的,先快后慢。一天后,学到的知识只剩下原来25%,甚至更低。随着时间的推移,遗忘的速度减慢,遗忘的数量也就减少。 时间间隔记忆量 刚看完100% 20分钟后60% 1小时后40% 1天后 30% 2天后 27% 每个人的遗忘程度都不一样,建议第二天复习前一天的内容,七天后复习这段时间的所有内容。
  • 碎片时间 不少朋友利用碎片时间学习,比如在公交上看公众号的推送。其实我们都高估了自己的抗干扰能力,如果处在嘈杂的环境,注意力容易被打断,记忆留存度也很低。碎片时间适合学习简单孤立的知识点,比如链表的定义与实现。学习复杂的知识,需要大段的连续时间。图书馆是个好地方,安静氛围好。手机放一边,不要看手机QQ微信,最好阅读纸质书,泡上一整天。有些城市出现了付费自习室,提供格子间、茶水等等,也是非常好的选择。 问怎么提升工作(学习)效率:把手机关机就好了!当前手机把你的时间切割的支离破碎,能控制住不刷一些无意义的信息,是一个自控力的表现。

用起来

  • 技术分享 从下面这张图我们可以看到,教授他人是知识留存率最高的方式

准备PPT和演讲内容,给同事来一场技术分享。不光复习知识,还锻炼口才。曾经有个同事说话又快又急,口头禅也多,比如“对吧、是不是”,别人经常听不清,但是他本人不以为然。领导让他做了几次技术分享,听众的反应可想而知,他才彻底认清缺点。 坚持写技术博客,别在意你写的东西在网上已经重复千百遍。当自己动手的时候,才会意识到眼高手低。让文章读起来流畅清晰,需要呕心沥血的删改。写作是对大脑的长期考验,想不到肯定写不出,想不清楚肯定写不清楚。

  • 造个轮子 我们经常说不要重复造轮子。为了开发效率,可以不造轮子,但是必须具备造轮子的能力。建议造一个简单的MQ,你能用到通信协议、设计模式、队列等许多知识。在造轮子的过程中,你会频繁的翻阅各种手册或者博客,这就是用输出倒逼输入
  • 实践 一定程度上讲,有木有目标是次要的,具有行动力才是更重要的。眼过千遍不如手过一遍,尤其是代码这种东西,只有敲起来,才有存在的意义。纸上得来终觉浅,绝知此事要躬行。比如我学习Python的时候就是自己开发租房信息的爬虫程序,这样从纸面到落地,才有实际的学习的意义,不然怎么量化出你学会了还是不会呢?

后记

老话说的话,穷学it富学金融,技术是个吃饭的工具,你可以一辈子的喜欢这个工具,但是不能靠这个工具生存一辈子。

路漫漫其修远兮,我是马拉松程序员,可不止于代码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马拉松程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档