前言

首先声明只是不建议而不是反对 ! ! ! 顺便给出建议自学编程最好的途径,没有之一。那就是去本语言的官方文档学习。

学习方法

OK,先来谈学习方法,既然在这里遇到了 , 那就相信很多同学已经不是第一次从入门到放弃再到入门如此往复了,但是这是编程学习大忌,编程是实操性超强的一个学科,相信你也有这样的感受,昨天学的方法函数,今天就忘了,或者说学习的时候一听就会, 但是自己上手写代码一写就废 , 这都是大家学习的时候遇到的问题 , 归根结底就是方法不对, 方法不对, 万事白费 .
编程绝不仅仅是看看书 , 听听视频就可以学会的东西 , 而是需要掺杂大量的练习 , 如果做一个比例图, 那么看视频吸收输入耗时占比最多是20% , 而练习时间占比在50% , 最后就是纠正优化代码耗时30% , 有人就会问啦, 那我学习视频+大量的练习就是了, 最后那个纠正优化是什么鬼 ? 这里你要明白一件事情就是你在学习过程中大量练习占比时间很重, 但是在企业实际生产环境中 , 你对代码的优化, 性能的优化, 以及查错改错的时间可能占据了你职业生涯百分之六七十的时间, 程序开发过程中复现功能只是初级的需求, 真正要做到的是对程序代码的三高, 也就是高可用, 高并发, 以及高性能 , 如果在这三点上的能力没有提上去,先不说入职之后挨骂的次数以及加班的次数了, 可能你在项目面试这一关都过不去 .
OK. 这就衍生出了学习方法也就是输入+输出+纠正 :
首先输入就是看视频或者看电子文档纸质书籍等等这类的, 进行一个吸收的过程 , 但是在这个吸收的过程我们有一个很大的误区 , 就是我们在学习一项技能或者一门知识的时候, 倾向于反复阅读, 以及大量笔记 , 我们在上学时候一定做过这样的事情 , 用荧光笔画了各种各样的漂亮的线 , 早自习在学校公园墙角一遍一遍的背诵或者深夜一遍一遍的抄写 , 这看起来是很努力了, 但是你要知道这种学习方法会让你产生了一种已经记住了的错觉 , 是达不到真正的精通和持久记忆的 . 当你在上课期间或者看书期间把大量注意力分散出去进行勾勾画画 , 写写记记的时候 , 这时你大脑里的元认知会占据上风 , 所谓元认知就是对知识掌握情况的判断, 在重复中和大量笔记中误以为自己已经掌握所学 . 元认知欠佳之后就很容易出现偏差, 会让这些看起来很勤勉的方式出现两个误区 :
1 你不知道你学习中最薄弱的地方 , 不知道需要在哪些地方需要花费更多的精力才能提高你的水平,
2 会逐渐开始爱使用那些让自己产生错觉的学习方法 , 在大量笔记的过程中 , 你的注意力分散, 对于老师的讲过的知识点只是走马观花的过了一下耳朵, 然后把它记在了笔记中 , 并没有真正的去理解 , 去进入到你大脑的记忆区 , 这就是为什么有些时候再翻笔记的时候会茫然"哎? 上课讲过这个知识点吗" . 输入最好的学习方法是上课的时候全神贯注的去听老师讲的知识点以及对于业务逻辑的处理思维 , 在每一个知识点需要记忆的地方快速在笔记上做一个简单的标记 , 然后当一堂课听完或者把书本合上之后 , 试着用自己的话对今天学习的概念定义以及知识点进行复述, 复述完之后你就会发现你已经遗漏了什么, 然后打开自己的笔记 , 看一下你遗漏掉的地方 , 是你不懂的还是当时没有记住的 , 如果不懂的再去翻回去看或者是上网查 , 这一步解决完之后呢 , 再试着把今天学的知识点和之前已知的联系起来 , 或者找找书本之外的知识案例 , 去用你已知的东西解决你未知的困惑 . 当然学习的过程不仅仅是输入 , 你还需要进行输出检索 .
所谓输出检索就是你要为自己的知识链打上记忆结 , 不断的去检索自己学过的知识 , 我们的记忆就会在检索输出的过程中得到很好的强化, 那检索最好的方式自然就是作业考试也就是练习 ,
怎么练习呢, 相信你上学的时候一定不会在考试的时候拿本书在那里翻或者说是做作业的时候完全抄答案 , 众所周知这样的练习是完全没有用的, 因为抄写的过程中并没有对你的大脑记忆区域进行检索 , 你做的工作只是肢体上对文字的搬运 . 我们放到编程学习上 , 你的输出检索应该是这样的: 上课或者书本中学习的案例和代码, 对其大致逻辑以笔记的方式简单快速记下来 , 当你完成输入的工作之后, 开始复现代码 , 第一次可以根据自己的笔记去一步一步跟着逻辑复现代码, 第二次的时候那就要合上笔记 , 根据案例需求自己写出过程逻辑, 然后复现代码, 第三次的时候就是自己或者是让别人给你去提出类似需求 , 然后编写逻辑过程, 进行复现, 实在想不出来不要去抄源代码, 回到输入上仔细思考今天的知识点 , 然后再先去勾勒你复现这一个需求的每一步 , 比如说今天学了爬虫的数据解析知识 , 要求是让你爬取某个网站租房数据, 那你第一步肯定是先登录该网站查看页面源代码 , 如果源代码中存在数据 , 第二步自然就是通过requests获取到该网站的页面源代码 , 获取到之后第三步自然就是利用数据解析工具xpath也好, re也好 , 去解析出你需要的数据 , 解析到之后第四步再去保存到你的数据库或者是csv文件中 , 每一步勾勒好之后利用今天学到的知识直接去套就可以了 . 经过多次反复检索 , 那你对今天的知识一定会有一个很好的掌握 , 最后的输出步骤就是将今天的知识在不看笔记不看书的情况下做出思维导图 . 最后将思维导图课程知识进行核对做最后的补充 .
输出说完了就是最后一点纠正了 , 编程不同于我们语数外这种学科类的知识 --只需要记住知识点, 然后能够解出答案即可 , 编程在开头我们已经讲了是要考虑代码的泛化性能 , 也就是高可用 , 什么叫高可用 , 就是你这段代码:
1 并不单单是仅仅能实现这个功能 ,
2 你的每一个代码模块之间也不能是紧密贴合的 ,
如果与需求功能贴合太近的代码 , 后续其他类似功能实现的时候你除了重写别无他法 , 即使是改动也是非常庞大的工作量 , 而代码模块之间贴合太近那你后期的维护工作量是非常巨大的 , 因为一个项目中你可能代码要写几千上万行 , 如果代码实现太贴合, 一旦出错, 你需要改动的地方将是巨大的 , 那如何实现高可用的代码 , 这一点单单通过输入输出是很难练出来的, 毕竟这是一个经验论 , 而大多数人的固定性思维很严重 , 就是在没有真正参与过生产并且踩过坑是很难想到如何进行更优解的优化的 , 这是高可用 , 高并发 , 高性能与此类似, 就是要求你的代码在实现功能的时候并不仅仅是实现功能, 而是要考虑到你们家的服务器承受并发访问的限度, 以此优化你的程序 ,当出现并发访问的时候你应该如何分流 , 如何解决 , 前提还不影响用户体验 ,或者是你的程序跑起来之后如何能快速检索返回数据 , 比如一个42亿的数据量 , 你总不能一个一个去数据库中检索, 这个时候就需要用到二分查找等等算法来优化你的程序性能 , 而这些需要纠正的东西一定是需要专业的人士去指导你 , 人类之所以近百年文明高度发展 , 一定是站在前人的肩膀上看世界, 就比如如果现在让人类再回到蒸汽时代, 不依靠后世学的经验知识去一步步探究出交流电 , 相对论 , 计算机 , AI等等 , 先不说能不能探究出来, 即使能那走到现在科技程度起码又是一个百年, 那还是你知道有这么一个东西存在的情况下, 如果你不知道呢? 你知道你不知道你还可以学 , 但你不知道你不知道你怎么学 .

为什么不建议小白自学

好了学习方法说完了 , 来说说为什么不太建议转行就业的同学自学, 咱们开头也已经说了, 只是不建议而不是反对, 而且也给出了最好的自学建议的途径 . 为什么不建议自学,
1 编程是一个综合类的学科 , 学编程不仅仅是一门编程语言的问题 , 你的程序写出来需要上网吧, 那你就需要学网络编程的知识, http协议, tcp管道协议 , socket等等 , 那你的数据来源需要调用数据库中, 那你还要学关系型数据库mysql , 非关系型数据库MongoDB , Redis等等 , 国内互联网公司项目都是部署在linux上 , 那你还需要学习linux的知识 , 一个项目开发每个人负责的模块不一样 , 那你们的代码怎么实时共享, 实现协同办公, 那你还需要学习git或者svn , 你要提高你的程序的三高性能, 那你还需要学习算法数据结构 , 对于搜索字段需要进行正则匹配, 那你还需要学习正则语法 , 现在对于开发人员的技能要求不是你是后端还是前端 , 前后端交互 , 那你是需要对前端知识有一定的掌握的, 最起码的html+css+js三剑客要会把, 最常用的jQuery库要会把, 最火的vue框架你的会把 , es6 es7语法你要了解一点把 , OK , 这些是你要学习的知识, 但是你的简历上没有一点项目实战经验你可以看看你的简历受邀程度 , 这个你现在就可以测试 , 上网查一份简历模板 , 然后不写项目经验, 只写你会什么什么知识点 , 投递试试, 看看回复几率有多大, 不要怕人家邀请你, 只是做一个实验 , 人事又不懂技术 , 就是这个不懂技术的你看看没有项目经验的情况下会不会回复你 . 这是需要学习的东西 ,
2 就是学习渠道, 很多人说我去b站学, 去看书 , B站我们也上传自己的视频, 有时候也会看一下其他家的视频 , 说实话, b站你搜一个python基础能出来一堆 , 但是很多都是阉割版, 更着更着没有了 , 为什么 ? 相信大家心里多少清楚 , B站的视频就是各个机构的引流视频 , 一来你分不清每个视频是真的从0讲的 , 而来找到一个之后只会讲到函数就没有 , 就不说其他串联的linux , 前端的知识了, python的都只是讲了个基础, 然后你再去找另一家 , 找到了从头看把 , 前面听过了, 不从头看吧 , 有些地方讲的还不一样 , 可能这家先讲输入输出, 那家先讲变量, 数据类型 , 时间就花费在这里了, 基础找完了, 还要找面向对象的, 面向对象完了, 迭代器闭包 , 生成器推导式之类的, 完了再去找串联的其他学科的, 然后还有框架Django等等等乱七八糟的 , 很多时候你可能只找到了1, 然后直接就蹦到5上了 , 然后又找到3 , 耗费的时间精力这成倍数提升不说, 关键是人是很容易乏的 , 当长时间无法得到需求满足 , 很难坚持下去 , 而且这还是理想状态下, 你13524678都能找到 , 如果每次找到的都是阉割版 , 最后只能是白白浪费自己的时间, 这是B站自学的 ,相信应该有这样的感受, 再一个看书 , 很多人说这个书不错那个书不错但是那是针对已经有很好的底子的 , 百战归来再读书 , 从书中继续提升 , 如果一个小白, 光光是书中很多的专业术语就够你头疼的了 , 而且有很多的作者为了彰显自己的学识, 还故意把一些简单易懂的词语写的很高端 , 让人看着一阵茫然, 真正的好书一定是用你已知的去解决你未知的困惑而不是用你本来未知的东西去阐述你未知的, 那结果只能是让你学着一片四顾心茫然而且由于文字和篇幅的局限性 , 一本书很难把所有的东西概括到 , 可能有的对于目前不重要的地方给你长篇大论 , 为什么叫目前不重要, 因为有些东西可能你需要做几年之后到达那个位置才能用得上 , 那你这个时候学完全是浪费时间, 但是对于一个小白转行需要学的地方作者看来很简单, 草草带过 , 最后该学的没学到, 不该现在学的没学会还是到头来, 时间白白浪费 , 而且也因为书本的局限性 , 比如说最最简单的输出print() , 实际视频中讲解, 告诉你是输出, 直接代码示范 , 包括对于其中的参数等等代码一运行加上老师讲解两句你就懂了, 但是你想想放到书上要怎么阐述 , 要用纯文字去表现意向本身需要的篇幅一定比实验中要多 .
3 在学习过程中对于实际生产环境的了解不足 , 基于12的前提 , 我们是可以知道并且感受到一件事的 , B站视频就不说, 这家号称今年最新版, 那家也号称今年最新版, 进去一看 , 麻蛋 , 疫情之前的 , 想想也能知道, 那就是人家的引流课 , 任何机构个人都是要挣钱的, 核心有价值的怎么能给你放出来 , 相信不少同学现在各个机构老师应该加的也挺多 , 透过现象看本质应该能懂点什么 ., 那这种视频里很少给你讲实际生产环境的事情 , 课程老套技术老套还无法贴合实战 , 你品… 再一个看书, 一本书从作者编写, 到出版再到书店再到你买到 , 最少也要一年了吧…与上同理. 那除了无法学习到实际生产环境的知识之外 , 你还很难学到别人的东西, 什么叫别人的东西 , 就是有一些很旧或者很新的东西你都没有学到, 但是在实际生产环境会有人用 , 毕竟不是你一个人写代码, 这个时候如果你看不懂别人的代码, 你想想会遭来什么样的际遇, 这样造成的结果就是很多本职程序员特别看不起的野生程序员, 工资低, 待遇低 , 地位低 .
4 所以如果要自学去官方文档是最好的自学方式 , 但是要知道在实际生产环境中 , 并不是所有的知识点都可以用到, 面向企业学习才是最快的转行途径 , 在转行这件事情上一定是宜早不宜迟, 不要觉得时间充裕, 哪怕是系统学习也需要少半年的时间,更何况是不系统的学习 , 不系统也就算了还需要自己去找不系统的资料 ,时间长度自己可以算算 , 就好比我们现在骑行驴友从北京到南京在有导航有路标的情况下需要四五天 , 但是明朝考生从北京到南京提前三个月就要动身的原因一样 , 在此过程中他还要确保没有走错 , 难度系数都是指数级的 . 而对于转行就业可以思考这样一个逻辑 , 你毕业两年然后开始学习, 又学了一年两年 ,你离毕业已经4年了 , 大概年龄二十七八 , 而一个刚毕业的大学直接通过系统学习达到和你一样的技术水准的时候, 你们两个你觉得公司会要谁 , 谁会嫌弃一个年轻干劲足还不需要养家糊口的小可爱呢不是 , 而在后续的发展中也会因为一步落下步步落下, 毕竟人生黄金选择期就那几年, 你耗费了就没有了 . 同样的道理, 你27的20K薪资和二十三四的20K薪资 , 时间线拉长之后 , 哪怕就是在同等30岁的时候 , 就已经不是一个级别了 , 越年轻越有可塑性, 你27 20K , 三十的时候涨到30K差不多了吧 , 而且三年时间能走到中小层管理就很厉害了 , 但是如果二十三四 20K的呢 , 在到30的时候有六七年的发展期 , 30的时候做到项目组长 , 做到中层管理的可能性都是非常高的 , 时间差就不一样嘛 .

编程学习方法分享 以及谈谈为什么不建议转行就业的同学自学相关推荐

  1. mastercam数控编程经验分享,建议收藏

    mastercam数控编程经验分享,建议收藏 Mastercam动态刀路 加工 从材料外围进刀 减少螺旋进刀次数 全刃切削启用第一刀速率 降低第一道速率保护刀具,此时切削量切削速率可以给大 加工时若是 ...

  2. 【高效学习方法分享】费曼学习法

    费曼学习法 费曼学习法是美国著名物理学家理查德·费曼总结出来的一种学习方法.费曼学习法的核心是:"用转述.教给别人的方法巩固自己的知识".具体步骤包括四个步骤: 确定学习目标:将一 ...

  3. 针对不同基础学Java编程的人,提出的小建议?

    动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦! 今天小编给大家来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分 ...

  4. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  5. 一个正确的编程学习方法

    在我们十几年的求学生涯中,关于知识的获取基本上都在执行以下步骤:学习课本上给的教程案例,练习课后的配套习题,如此反复,直到通过考试. 自然而然的,很多人会把这种学习方式映射到编程上:学习基础语法,练习 ...

  6. 高考状元学习方法分享:学习三十六计

    第一部分 应用篇 学习可以比作打仗,为了达到更好的学习效果,必须有自己的战略和战术,应用篇就是从战略角度来指导大家如何更有效地学习,一共八计. 首先,明确目标.制订计划.合理安排时间可以给自己建立好空 ...

  7. 高中阶段学计算机,高中阶段计算机学习方法分享

    38 ·教育现代化 高中阶段计算机学习方法分享 蚌埠第二中学(233000)邵帅卿 [摘 要]新时代背景下,计算机技术已经得到了迅速的发展,它给各行业的发展带来了极大的便利.可想而知,我们高中生应紧跟 ...

  8. 关于第八届蓝桥杯单片机初赛----电子钟设计的题目分析和编程思路分享

    关于第八届蓝桥杯单片机初赛----电子钟设计的题目分析和编程思路分享 1.前言 蓝桥杯单片机比赛,对于初试者,比如那些没有接触51系列单片机,或者很少编程训练的人而言,确实很有挑战力.而即使对于有基础 ...

  9. 最快速的编程学习方法究竟是什么?

    最快速的编程学习方法究竟是什么?这是许多初学编程者的问题.1.不要放过任何一个看上去很简单的小编程问题--他们往往并不那么简单,或者可以引伸出很多知识点: 2.如果不是天才的话,想学编程就不要想玩游戏 ...

最新文章

  1. Nginx 进阶 (ssl、fpm、rewrite、cache配置等)
  2. python3.6.1安装教程-ipython安装(python3.6.1)(转载)
  3. 系统试图将驱动器合并到合并驱动器上的目录_系统小技巧:“徒手”创建可启动的VHD系统...
  4. 手把手详解堆排序,堆就这么难懂?没有人看一遍学不会的,如果学不会,那就两遍吧
  5. python_sting字符串的方法及注释
  6. 【独家揭秘】阿里怎么做双11全链路压测?| CSDN 博文精选
  7. 《Effective Approaches to Attention-based Neural Machine Translation》—— 基于注意力机制的有效神经机器翻译方法
  8. 卡在linuxctrld进系统_电脑系统出现问题怎么办?学会这七招,电脑系统问题不求人!...
  9. android 路径中含有中文的解决方法
  10. Window 7下给Rails3.1安装Rmagick
  11. C语言:用条件运算符的嵌套完成此题。学习成绩=90分的学生用A表示,70-89的学生用B表示,60-79的学生用表示,低于60分的学生用D表示
  12. 活动: 北京Xamarin分享会第6期(2017年9月9日)
  13. python获取无忧网的招聘数据
  14. 身份证号码识别(python)
  15. 联通光纤宽带获取管理员密码和公网ip
  16. 免费好用的IPv6之远程管理路由器-OpenWrt上uhttpd的使用介绍
  17. c语言西华大学陈晓亮,计算机与软件工程学院
  18. linux su命令卡顿,linux su特别慢问题排查
  19. 图像分析之直方图分析
  20. 用python让excel 飞起来(数据处理与分析操作)

热门文章

  1. conda 安装 tensorrt8
  2. outlook 2010共享日历
  3. 超市管理c语言程序,《C语言 超市管理系统源程序》.doc
  4. 7_24homework
  5. 初学Python第三天写的一个PC版模拟微信自动给好友发送消息
  6. SCSI命令下发方式续:对NVMe硬盘如何实现SCSI命令转换?
  7. 使用 qiankun 集成 Vue3、H5 应用【主应用(hash)+ 微应用(hash)】
  8. 【Pytorch教程】使用lr_scheduler调整学习率
  9. 调戏微信朋友圈定位算法,巧用图片位置信息更改朋友圈定位信息
  10. VBA获取汉字拼音首字母的函数