首先你得明白,一个人的能力就像一个池塘,不断的输入又不断地输出,水池的容量以及水的质量决定了输出的高效与否,输入大于输出,你的池塘就会不断扩大,换句话说你会的技能就越来越多,只输入不输出,你的池塘就是一滩浑浊不堪的死水,一实操就bug满屏。

所以想要提升自己,就得同时做好输入和输出这两块。而输入又在输出之前,要想提升自己,首先就得做好输入,学习更多的深度知识。

总之,程序员要想学习效率高,学习效果好,只需要做好下面两点最基础的事情:

·学习基础知识

·巩固基础知识

其中学习基础知识,又有两点要注意的:找对方向、用对方法。说的更直白一点就是学什么以及怎么学。

学什么?

首先要将基础打牢固,最基本的算法和数据结构一定要滚瓜烂熟,拿起来就能用。

比如下面这些个算法和数据结构类型就一定要熟练掌握。

10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;

不要小瞧了这小小二十组词,展开了去学,怎么都得花你个一年半载,例如单单排序算法就又可以分为以下十种:

然后,当将这些基础知识吃透了之后,注意是吃透,至少得做到要用到的时候就能直接用不用回去再翻书,你就可以去学习一些更深入的内容:

比如:

·编程框架是如何运转起来并输出“Hello World”的?

·如何让自己更正规,更有章法地使用Mysql呢?

·Key、List、Hash、Set、ScoreSet各自的使用场景有何不同?

·主流的编程框架都和设计模式相关,那他们有没有共通性?

当你把这些问题想清楚了的时候,你的程序员进阶之路就走了一半了。

怎么学?

每个人的学习方法都不一样,有的人喜欢边做项目边学习,有的人则喜欢学一段时间做一个项目,有的人喜欢看书学,有的人喜欢看视频学,这些都不是问题,重要的是找到适合你自己的。

但是以下的方法我i觉得会让事倍功半,建议大家就不要这样做囖。

1.一味的对着别人的代码去敲。

刚开始不会做只有跟着别人敲,这不是问题,问题是跟着别人敲了之后你要自己理解自己记忆把它变成自己的东西。照着别人代码敲一遍两遍哪怕三遍,除了让你看得仔细点,练了打字外并没有其它任何帮助。

因为模仿复现不是关键,思考才是关键。你要能做到思考学习别人思路后,脱离书本和博客,完全自己实现功能。只有这样,你的学习才是有效的。

2.想着一口气吃成个胖子

这一块的情况稍微少见,但也不是没有,有的人急于求成,学习只学个大概只求个会用,没有做到知其然还知其所以然。

技术这玩意儿,不是看了个大概能照着做就会了,一口气吃不成个胖子,必须得扎扎实实地把事情做好。所以不要试图一次性解决所有问题,这里给个建议:可以将每天的学习过程拆分成小块,分阶段学习,这样的效率会更高些。

说完了第一点如何学习基础知识,接下来说说第二点如何巩固基础知识。方法千千万,最有效的我认为还是刷题,有方法的刷题。

下面这个刷题方法很普通但也很实用,推荐给你:

第一遍:可以先思考,之后看参考答案刷,结合其他人的题解刷。思考、总结并掌握本题的类型,思考方式,最优题解。

第二遍:先思考,回忆最优解法,并与之前自己写过的解答作比对,总结问题和方法。

第三遍:提升刷题速度,拿出一个题,就能够知道其考察重点,解题方法,在短时间内写出解答。

在这里,给大家推荐两本书还有一些学习网站,能够让大家学得更轻松些。

书:

1、《代码大全》激发你的思维并帮助您构建高品质的代码。

2、《程序员修炼之道》全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。

网站:

  1. GitHub — 开发者最最最重要的网站:https://github.com,能学习但不只是学习。

  2. W3school — 最适合新手的网站:https://www.w3school.com.cn/:免费而且全面。

3.实验楼 — 一个在线编程学习网站: https://www.shiyanlou.com/courses/,很方便实用。

  1. Code School — 一个英文学习网站:https://www.pluralsight.com/codeschool,支持分阶段挑战。

讲完学习基础知识和巩固基础知识,咱们就再回到咱们刚开始说的那个池塘,现在水的输入讲完了,池塘里有点东西了,但只进不出还是一潭死水,接下来就系统性的讲讲如何输出。

三种方法:

1.做一些实操性强的个人项目,自己练练手

田纳西大学助理教授奥斯汀·亨利结合自身经验,给出了一份“程序员都应该尝试的挑战性项目”清单,包含下面六个项目,我之前做了一遍觉得还不错,推荐给大家:

·文本编辑器

·2D游戏-太空侵略者

·编译器-Tiny BASIC

·迷你操作系统

·电子表格

·电子游戏机模拟器

每一个项目都存在不同的挑战,比如文本编辑器就要求在不使用GUI框架中内置的文本框组件的情况下,搭建支持光标移动、选择、插入和删除操作的文本框并将文本文档存储在内存中。

如果你能解决掉这些项目中的这些问题,然后把项目独立完整的做出来并且运行成功,你的能力肯定能再上一个台阶。

2.写技术文章

大家想必都知道费曼技巧,这也是其中的一种应用了,把你自己弄懂的东西教给别人,让别人也能看懂,在这个过程中你肯定还是要把一个完整的项目给做出来的,一整套下来,你会将自己理解的东西掌握的更透彻更深入。

也算是一种不错的实操方式了,能让你的基础更加牢固。

3.接一些开发兼职

这是三种方法中实操性最强的一种了,没有之一。

而且不用说,这也是最快最有效的方法了,毕竟编程这件事,光有理论是不够的,动手实践才是关键也是最终目的。

但兼职也有很多坑很多小门道,你首先得注意项目是不是靠谱,像那种没有需求文档的就不要接了。

最后,在这个不断做不断输出的过程中,希望你能做到下面三点:

·让编程成为一种习惯。

·学练结合,从做项目中找知识漏洞。

·思考更深层次,更底端的东西。

因为只有这样,你的这方池塘才能生生不息,源源不绝。

程序员如何更好的提升自己相关推荐

  1. 半路出家的入门程序员如何更好的提升技能?

    最近几年遇到很多半路出家的程序员,大多从原来的行业呆过几年之后,通过技术培训,基于填鸭式的快速学习后直接上岗,这也得益于技术的成熟.短短三四个月确实可以将课程内容讲完,但能否消化完就有待考量.与那些专 ...

  2. 程序员如何正确的自我提升?

    程序员如何正确的自我提升 首先啊兄弟们,我只是分享一下我的一些学习方法,你可能有自己更好的方法,我只说适合于我的,并且确实有效果的 在开始这个话题之前,可能有些兄弟觉得自我提升嘛.学习,使劲学,这不就 ...

  3. 程序员如何在技术上提升自己

    程序员如何在技术上提升自己 发表于2014-10-29 09:48| 26529次阅读| 来源CSDN| 111 条评论| 作者钱曙光 社区之星访谈李运华程序员面向对象团队管理 allowtransp ...

  4. 从码农到工匠,程序员必备的两本提升自我修养的书

    软件设计不仅是"技术"(Technique),更是一门"技艺"(Craftsmanship),要想控制复杂度,防止系统腐化.我们不能只满足做一个搬砖的" ...

  5. 电商运营和程序员哪个更忙?

    在现代社会中,IT行业已成为了一个繁荣的行业.其中电商运营和程序员算得上是其中比较热门的职业之一,而他们都被称为高强度.忙碌的职业.但是,我们该如何选择?他们真的那么忙吗? 相较于传统商业模式,电商行 ...

  6. 自学python能干些什么副业-揭秘!女程序员为啥更赚钱?这4个大招,用Python做副业躺赚...

    原标题:揭秘!女程序员为啥更赚钱?这4个大招,用Python做副业躺赚 关于穷,去年有了一个更学术的说法:隐形贫困人口. 就是因为有太多"种草达人",让我们为了物质生活超前消费,再 ...

  7. 新入职的程序员如何更快的融入项目当中?

    最近,我们项目中新入职的程序员比较多,于是我们花上了15分钟,就"新入职的程序员如何更快的融入项目当中?"这个问题进行了讨论. 下面是讨论的结果总结,现在和大家分享一下,希望对新人 ...

  8. 程序员应当更有机会创富

    程序员应当更有机会创富 作者:赖勇浩(http://blog.csdn.net/lanphaday) 楔子 最近有两件事情,让我感触颇深: 1.  有一天在某博客看到有人讲起香港电影,正好那天整理硬盘 ...

  9. 科班出身和培训上岗的程序员谁更牛?

    高考分数下来一段时间了,又到了大学新生选专业的时候啦!想想当年从成百上千的专业中选择的纠结记忆犹新,那时想法就是当法医. 刚和家长说出想法一盆拔凉拔凉的水把我熊熊燃烧的小心脏浇灭了,家里告诉我不行,这 ...

  10. 程序员如何更好地获取用户信息?

    作者 | 菜菜 责编 | 郭芮 YY妹:菜菜君,我又来啦.菜菜君,我又来啦菜菜君,我又来啦 菜菜:又有什么事吗? YY妹:我按照你说的已经把网站认证写完了,而且效果还不错. 菜菜:恭喜你,下次面试又多 ...

最新文章

  1. 实战:手把手教你用朴素贝叶斯对文档进行分类
  2. linux日志手机,通过 shell 脚本 自动发送 log日志 文件内容 到手机邮箱
  3. 10 个 Linux 中方便的 Bash 别名
  4. 操作系统课设--系统调用
  5. python数据处理常用函数_Python大数据处理模块Pandas
  6. 不能断点调试python_为Python调试构建一个不间断的断点
  7. MFC工作笔记0006---#pragma warning(disable:4996)是什么意思
  8. python mmap_python标准库基础之mmap:内存映射文件
  9. Python编程之画圆
  10. 【51单片机】DS1302时钟芯片
  11. 小米路由器 mini 重新刷回官方固件
  12. Java基础(二)标识符、变量、数据类型、运算符
  13. ubuntu使用certbot给nginx添加ssl证书
  14. 线上事件处理流程规范
  15. 《人工智能》课程习题
  16. 后端工程师-软件类OPPO-2023届校园招聘笔试题-后端(A卷)
  17. 打包后自定义attr找不到_80后长沙文物修复师刘胄造“精绝古城”,修复实力连X光都找不到破绽...
  18. vue生成html页面,前端VUE页面快速生成
  19. Vue是什么?在前端学习中有什么作用呢?
  20. 谢希仁的第七版计算机网络--第四章总结概述

热门文章

  1. 如何写introduction
  2. 从gitlab迁移到极狐gitlab的方法 #JIHULAB101
  3. 【设计模式 三】实战工厂汽车代工之工厂模式-简单模式
  4. ie浏览器出现代理服务器没有响应
  5. 不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动
  6. 今天,IT女神们是怎么度过的(文末送礼品)
  7. 已解决WARNING: There was an error checking the latest version of pip.
  8. 笑是理想的热情与态度
  9. Ubuntu 16.04 显示器分辨率低
  10. [渝粤教育] 南通职业大学 艺术导论2021 参考 资料