京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者 | PRESSone
来源 | 怀左同学
先给你讲个故事,看看你有没有类似的经历。有一天,你去参加同学聚会,和老友们举杯畅谈,他们告诉你,不学编程就要 out 了,从全球趋势来看,编程这把火已经烧了很多年。英国早从 2014 年 9 月起,就规定 5-16 岁的学生都必须学习编程,苹果 CEO 库克表示全世界各地都应该开设编程课程。回到家中,你辗转反侧,觉得自己跟不上时代潮流,扼腕叹息:“廉颇老矣,尚能饭否?”焦虑之余,你开始疯狂搜索编程,百度、知乎、搜狗,你方唱罢我登场。一顿操作之后,你的嘴里念念有词:“Wow,会编程的人好酷,牛逼,都是大神。”感叹之余,你觉得不能纸上谈兵,临渊羡鱼,不如退而织网。
于是乎,你开始了自学编程之路。
听人说,算法是编程的核心,学好算法可以一招鲜,吃遍天。别人说在嘴里,你听在心里,马上买了一本《算法导论》,打算死磕算法。你没日没夜的攻读,‘算法基础’那一小章,你鼓捣了大半个月,还是云里来雾里去的。然而,心高气傲的你是不会屈服于‘算法基础’这只拦路虎的,你开始逛各种论坛,CSDN、博客园、简书、知乎都在你的常逛 list 上。你充分利用一切碎片时间,上地铁刷一下,吃饭时刷一下,睡前刷一下,刷得不亦乐乎,刷不完的果断收藏。
等到收藏超过100篇未读的时候,你终于发现收藏=永不再读,这让你沮丧。
更让你沮丧的是,你买的那本《算法导论》已经在书架上躺了好久。为了弄懂‘算法基础’,你把《算法导论》打入了冷宫。比这更残酷的是,从你信誓旦旦说要学编程以来,你连一行代码都没敲过,一个程序都没跑起来。你越来越焦虑,终于有一天,你彻底崩溃了,自怨自艾道:“老子骨子里就是个文科生,赶什么时髦?学什么编程?学来学去老是做无用功有意思吗?安安静静地写文章不好吗?”写文章的人不一定学不了编程,作家王小波就是中国早期程序员,曾经自己编了一套DOS下的独立输入法。真正阻止你学编程的也不是深奥的算法,而是你错误的学习方法。自学编程不等于做无用功,盲目、焦虑地自学才是。读到这里,你肯定满脸疑惑:“我到底哪里做错了?”
首先,自学的初衷不是焦虑、盲目,而是解决问题。
李小龙当年刚回香港,在《欢乐今宵》上节目,节目组请来了一名拳师,想考验他能不能推到对方。拳师也摆好架子等他来推,结果李小龙一拳打在对方脸上。李小龙想表达的是:在真实的实战中,没有人会等你摆好架势,只冲着你规定的地方打过来。学习也是同样的道理。在真实生活中,环境和知识都一直在动态变化中,你不可能像学校里一样,系统的学好、学完一门知识,然后坐在教室等着不超纲的考试。
大部分时间,生活会先给你一个考试,然后你根据问题,自己找出关键词,开始学习。所以,学习的起点不是某人在酒桌上蜻蜓点水的一句话,也不是某人在朋友圈晒的一本书、推荐的一篇微信文章、更不是这个行业的一个经典教材引发你的焦虑,而应该是你真实遇到的一个问题。遇到问题,动手写,犯错、改正,再犯错、再改正,这是学编程最重要的过程。其次,自学尤其是自学编程往往不是线性的。
我们从小到大在学校学习,都有一本教科书,往往按着预习、听讲、练习、复习的路径学习,所有的教材也如出一辙:每个章节所涉及的知识点之间,全都是线性关联,第一章学好了,才有基础学第二章。而社会的知识结构不仅不是这样的,而且几乎全都不是这样的。
工作中、生活里充满了各式各样的“提前引用”,即想要理解当前的知识点,需要依赖你未来才能理解的某个或某些知识点。如果还是按照校园时代的线性思维来学习的话,很有可能就像故事中的主人公一样,最终学不下去。拿编程来说,动不动啃《算法导论》的人,要不是有很深厚的数学基础,肯定吃不消。
生活很少教我们按部就班,它给我们的测试往往是超纲的,这就要求我们不断更新和迭代。互联网的发展给我们带来的最大启发就是迭代,从门户到搜索,从搜索到移动互联,从简单的网页交互,到如今热闹的小视频社交,技术和生态一直在更新和迭代。
同样,自学也是一个不断更新和迭代的过程。编程是一门活到老、学到老的手艺,有些很抽象的概念,一开始看不懂没关系,先脑子里有个大概的印象,然后依葫芦画瓢写几段代码,自己动手实践,写完之后再总结、归纳、整理、组织相关的知识点,实战经验多了,再回头来看最初的难点,你自然能够豁然开朗。
比如说 python 中的 return,很多初学 python 的人,对 return 疑惑不已,字面上是返回,那它到底返回什么,又返回到哪里呢?有人可能会给你解释:“return 语句就是将结果返回到调用的地方,并把程序控制权一起返回。”对于初学者来说,这个解释也不好理解。
没事,先实践起来。
拿下面这四行代码来说,你可以想象你开了一家工厂,雇佣工人来干活,这个工人(worker)在你的指导下,用a、b、 c 三个材料,装配出了 x 和 y 两个成品。但是程序里的装配和工厂不同,用过的材料不会消失。这样,这个工人手里就有了a、b、c、x、y五样物品。他怎么知道你要的是哪个呢?
所以 return 的作用就是,在这种时候告诉工人你到底想要什么东西,是一个iPhone 手机壳还是整台 iPhone。毫无疑问,return x 和 return y 是完全不一样的结果。return x 是当你让这个工人帮你干活时(调用函数),他最后会把产成品x交到你手上,而当你输入return y 的时候,干活的工人会把产成品 y 给你。
举个例子,worker(1,2,3),return x 的结果为1+2=3,return y 的结果为(1+2)*3=9。这样实践一下,你对于return是不是有了更深的理解?def worker(a, b, c): x = a + b y = x * c return y看完我的分析,蓦然回首,你是不是觉得道路明朗了许多,你肯定很想问:怎样自学才高效呢?在自学过程中,有个方法特别管用,就是用输出倒逼输入,你逛论坛、刷文章、看视频教程都没问题,关键是要有输出,光有输入可是不行的。而最好的输出就是实践,把自己听到的、看到的、读到的,转化为你独立编写的一个个程序,岂不妙哉?
文章开头故事里的主人公就陷入了盲目输入,却无输出的泥潭。他的输入表面上看上去渠道很多元化,然而这些输入并没有带来有效的输出。还有一个很多人都不知道的点,你的输入很有可能是制约你进步的紧箍咒。
输入也是有讲究的,盲目输入会带来信息超载。全世界每天有 4000 本书出版,超过 4 亿个字;纽约时报一天的文字量等于牛顿同时代的人一生的阅读量;一个专业领域,每天大概有有近4000篇文章正在产生。就算你火力全开,疯狂地输入相关知识,也还是难免有漏网之鱼。
而且,在茫茫的信息汪洋中,信息质量参差不齐,保不准你输入的就是一些边角料,反而让你裹足不前。这儿分享桥水(全球著名对冲基金)创始人瑞.达利欧在《原则》一书中阐述的观点:“正确的决策很多时候需要依赖可信度加权。”学习同样也需要可信度加权,不是所有的资料都全盘接收,而是有选择的相信,用老祖宗的话来说,要取其精华,弃其糟粕。信息爆炸时代,最重要的不是增加信息,而是筛选和删除信息。除此之外,要勇于跳出舒适区,刻意练习。
刻意练习这个概念由美国心理学家安德烈.艾莉克森博士提出,即有目的的学习,指的是把要学习的内容分成有针对性的小块,对每个小块进行重复练习。在武术训练中,非常强调分解练习。
首先你要把整套动作过一遍,看教练是怎么做的。然后把它分解为多个动作,每个动作分解为多个步骤,一个一个地练习。在这种训练中,动作一定要慢,只有慢下来才能感知动作的内部结构,注意到自己的错误。画家要采风、棋手要打谱、律师要学习案例、政客要读历史、科学家要看论文、马拉松运动员每周至少要累计150公里的跑量。
大部分的学习都不是一蹴而就的,往往是练习-反馈-练习-反馈-练习-反馈-学成。刻意练习的关键是随时获得有效的反馈。拿自学编程来说,这是一个很容易获得反馈的领域,当你写的程序跑不起来时,意味着你要 debug,你得把你写的代码分成一小段一小段,逐句检查,直到找出 bug。当然,鼓吹刻苦的鸡汤想必大家都喝腻了。事实是,很多人即使整天坐在书桌前埋头苦学,时长达到甚至远超学霸,实际效果却远远达不到学霸的水平。问题的关键在于你的思维和学习方法,在于你的学习时间是否得到了高效利用,是否能通过高效学习把知识转化为你真正的实力。
只是如果你注意力涣散,身在书桌前,神游天地间;如果你好不容易学完了,转眼又忘得一干二净;如果你写了很多代码却不会举一反三,同一个知识点换了个问法又被难住了;如果你对于你所学习的领域缺乏好奇心和探索精神,只是当一天和尚,敲一天钟,没有刻意练习。那么,花费再多的时间,又有什么成效呢?
扪心自问一下,你上一次坐下来长时间专注于学习,是什么时候呢?
似乎这件事变得越来越难以做到,因为我们的生活已经有太多的干扰:必须要点的微博、朋友圈点赞、支付宝蚂蚁森林收能量……诱惑源源不断,切割了我们在学习上的很多可能性。我们接受了太多无效输入,自然也不会产生高效的输出。读到这,你可能又要问我了:“该怎么办才好呢?”比起一味地延长学习时间,更‘刻意’地学习更重要。
学习从来都不是一个阶段的事,更不是一件轻松的事,但是我们可以优化我们的学习路径,比如给自己创造一个干扰项少的学习环境。拿自学编程来说,你需要的就是一台电脑。在学习的时候,你最好离手机远一点,并关掉电脑版微信、QQ和一些乱七八糟的应用。不过,自学之路从来都不是轻松的,这也才显得它的专业性和独特性。愿你学成归来,已然成了一名大神!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据分析中,“正态分布” 是许多统计方法(如 t 检验、方差分析、线性回归)的核心假设 —— 数据符合正态分布时,统计检验的 ...
2025-10-28箱线图(Box Plot)作为展示数据分布的核心统计图表,能直观呈现数据的中位数、四分位数、离散程度与异常值,是质量控制、实验分 ...
2025-10-28在 CDA(Certified Data Analyst)数据分析师的工作中,“分类变量关联分析” 是高频需求 —— 例如 “用户性别是否影响支付方式 ...
2025-10-28在数据可视化领域,单一图表往往难以承载多维度信息 —— 力导向图擅长展现节点间的关联结构与空间分布,却无法直观呈现 “流量 ...
2025-10-27这个问题问到了 Tableau 中两个核心行级函数的经典组合,理解它能帮你快速实现 “相对位置占比” 的分析需求。“index ()/size ( ...
2025-10-27对 CDA(Certified Data Analyst)数据分析师而言,“假设检验” 绝非 “套用统计公式的机械操作”,而是 “将模糊的业务猜想转 ...
2025-10-27在数字化运营中,“凭感觉做决策” 早已成为过去式 —— 运营指标作为业务增长的 “晴雨表” 与 “导航仪”,直接决定了运营动作 ...
2025-10-24在卷积神经网络(CNN)的训练中,“卷积层(Conv)后是否添加归一化(如 BN、LN)和激活函数(如 ReLU、GELU)” 是每个开发者都 ...
2025-10-24在数据决策链条中,“统计分析” 是挖掘数据规律的核心,“可视化” 是呈现规律的桥梁 ——CDA(Certified Data Analyst)数据分 ...
2025-10-24在 “神经网络与卡尔曼滤波融合” 的理论基础上,Python 凭借其丰富的科学计算库(NumPy、FilterPy)、深度学习框架(PyTorch、T ...
2025-10-23在工业控制、自动驾驶、机器人导航、气象预测等领域,“状态估计” 是核心任务 —— 即从含噪声的观测数据中,精准推断系统的真 ...
2025-10-23在数据分析全流程中,“数据清洗” 恰似烹饪前的食材处理:若食材(数据)腐烂变质、混杂异物(脏数据),即便拥有精湛的烹饪技 ...
2025-10-23在人工智能领域,“大模型” 已成为近年来的热点标签:从参数超 1750 亿的 GPT-3,到万亿级参数的 PaLM,再到多模态大模型 GPT-4 ...
2025-10-22在 MySQL 数据库的日常运维与开发中,“更新数据是否会影响读数据” 是一个高频疑问。这个问题的答案并非简单的 “是” 或 “否 ...
2025-10-22在企业数据分析中,“数据孤岛” 是制约分析深度的核心瓶颈 —— 用户数据散落在注册系统、APP 日志、客服记录中,订单数据分散 ...
2025-10-22在神经网络设计中,“隐藏层个数” 是决定模型能力的关键参数 —— 太少会导致 “欠拟合”(模型无法捕捉复杂数据规律,如用单隐 ...
2025-10-21在特征工程流程中,“单变量筛选” 是承上启下的关键步骤 —— 它通过分析单个特征与目标变量的关联强度,剔除无意义、冗余的特 ...
2025-10-21在数据分析全流程中,“数据读取” 常被误解为 “简单的文件打开”—— 双击 Excel、执行基础 SQL 查询即可完成。但对 CDA(Cert ...
2025-10-21在实际业务数据分析中,我们遇到的大多数数据并非理想的正态分布 —— 电商平台的用户消费金额(少数用户单次消费上万元,多数集 ...
2025-10-20在数字化交互中,用户的每一次操作 —— 从电商平台的 “浏览商品→加入购物车→查看评价→放弃下单”,到内容 APP 的 “点击短 ...
2025-10-20