昨天公司的一位实习生问我,该怎样提高学习能力和学习效率。他说,他想学习很多东西,但是都感觉学的很慢,很多技术的学习都要一步一步从基础知识开始学习,这需要耗费很多的时间,并且很多时候不能马上用于实践上,所以他感觉很迷茫和着急。我给他的建议是:这是正常的,也是必须经过的一个阶段,你有这样的认识说明你的学习方法是正确的,你现在掌握了更多的基础,就会越有利于以后学习其它的东西。现在学习速度偏慢,是因为你还没有掌握一种能力,就是学习能力,学习能力不止是体现你的反应能力,还需要你脑子里面基础数据库的支持。现在正处于创建基础数据库的过程,在这个过程中,同时也会锻炼你的思考能力。这个过程可能需要1到2年的时间,这个过程之后,你学习很多技术就会相对比较轻松。
其实不止是他,每年我都会接触很多毕业生,都会以我个人的经验给他们提一些建议。我几乎都会跟每一位毕业生强调一件事:毕业后的前几年,是自己打基础的阶段,未来的技术生涯走向如何,很大程度上取决于你这几年的努力程度。这些努力,直接体现的是你技术能力的提高,但更重要的是提高你的学习能力。这才是一个程序员立足的根本能力。技术都会更新,过时,甚至于淘汰,但唯有具备掌握了一定的学习能力才能这个适应这个技术不断更新的行业。
技术的学习能力需要日积月累,也可能需要自己走很多弯路,最重要的一点在提高分析问题和解决问题的能力。在很久以前,我看到有的程序员,总是简单的以解决问题为目的,而根本不去关心问题的根本原因在哪里。遇到问题,他们可能会通过网络,或者通过问别人来解决问题,一旦问题解决后,他们也就不会再去关心这个问题是由什么原因引起的,也不会尝试的自己再去分析调试一下在哪里引发了这个问题。也许通过你自己的分析,很多平常知识点,复杂的关系就会被你分析出来,并且加以掌握,下次再出现类似的问题也就容易分析和解决,这也就是举一反三的能力。
解决很多疑难问题,往往看MSDN,发贴寻求帮助也许都不是最好的选择。假设我们使用的技术够新,我们使用的方式足够特别,那就有可能会很少人会遇到你类似的问题,这时候如果你确定想从此路走,那也只有留下买路钱了。几年以前,我的技术博客,也一直都以记录我遇到技术问题和解决问题的过程,在这个过程也锻炼了我的学习能力和思考能力。这个过程也会培养很多很好的习惯,比如,遇到问题,我不再依赖于文档了,而直接会抄起Reflector就去挖最有价值的东西。但这只是一个过程,再后来,当我解决问题时,不需要再花这么多时间和精力的问题,我也就好像已经失去了记录的素材了。
昨天在跟一位面试者也聊到关于技术的学习问题,他也并不是一位科班出身的程序员,但是经过了几年的努力,自己也发展到了项目管理者的角色。我们有一个共识就是,技术的问题,只要你具备了适合计算机行业的思维逻辑,并且你喜欢钻研,你就可能做的更好。最近也面试了很多经验丰富的程序员,很多人给我的感觉是,在一定的项目基础上,积累了一套的开发方式,比如所谓的三层架构开发,然后就靠这套模板和代码生成工具吃饭。不管什么项目来了,都按这个模板做下去,这也是一个积累,但并不一定就是可持续的积累。你的眼界和思维就会被束缚在原有的工作方式上面,而不会去尝试更多新的东西。比如,在目前很多数据持久化不断成熟的情况下,做一个小型的网站项目,你仍然还要一步步的去写那所谓的三层,一个个的去手工写SQL语句,那么你就真的奥特曼了。
技术的学习能力,最关键在于钻研,并且你可能不需要花很长的时间就可以培养这种能力。相对于,你未来在技术上可能获得的成就,可能是微不足道的。所以,我建议新手入门一定要放下浮躁的心态,脚踏实地的做好每件事,学好基础,不仅在工作时间做好事情,仍然需要在业余时间花更多的时间研究你工作以外所涉及的相关知识。只要有时间,有精力,学习的东西不管是否对目前工作有直接作用,一定是对你自身有所帮助的。只要有付出就一定会有所收获。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述