京公网安备 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
在数据分析实战中,我们经常会遇到“多指标冗余”的问题——比如分析企业经营状况时,需同时关注营收、利润、负债率、周转率等十 ...
2026-02-04在数据分析场景中,基准比是衡量指标表现、评估业务成效、对比个体/群体差异的核心工具,广泛应用于绩效评估、业务监控、竞品对 ...
2026-02-04业务数据分析是企业日常运营的核心支撑,其核心价值在于将零散的业务数据转化为可落地的业务洞察,破解运营痛点、优化业务流程、 ...
2026-02-04在信贷业务中,违约率是衡量信贷资产质量、把控信用风险、制定风控策略的核心指标,其统计分布特征直接决定了风险定价的合理性、 ...
2026-02-03在数字化业务迭代中,AB测试已成为验证产品优化、策略调整、运营活动效果的核心工具。但多数业务场景中,单纯的“AB组差异对比” ...
2026-02-03企业战略决策的科学性,决定了其长远发展的格局与竞争力。战略分析方法作为一套系统化、专业化的思维工具,为企业研判行业趋势、 ...
2026-02-03在统计调查与数据分析中,抽样方法分为简单随机抽样与复杂抽样两大类。简单随机抽样因样本均匀、计算简便,是基础的抽样方式,但 ...
2026-02-02在数据驱动企业发展的今天,“数据分析”已成为企业经营决策的核心支撑,但实践中,战略数据分析与业务数据分析两个概念常被混淆 ...
2026-02-02在数据驱动企业发展的今天,“数据分析”已成为企业经营决策的核心支撑,但实践中,战略数据分析与业务数据分析两个概念常被混淆 ...
2026-02-02B+树作为数据库索引的核心数据结构,其高效的查询、插入、删除性能,离不开节点间指针的合理设计。在日常学习和数据库开发中,很 ...
2026-01-30在数据库开发中,UUID(通用唯一识别码)是生成唯一主键、唯一标识的常用方式,其标准格式包含4个短横线(如550e8400-e29b-41d4- ...
2026-01-30商业数据分析的价值落地,离不开标准化、系统化的总体流程作为支撑;而CDA(Certified Data Analyst)数据分析师,作为经过系统 ...
2026-01-30在数据分析、质量控制、科研实验等场景中,数据波动性(离散程度)的精准衡量是判断数据可靠性、稳定性的核心环节。标准差(Stan ...
2026-01-29在数据分析、质量检测、科研实验等领域,判断数据间是否存在本质差异是核心需求,而t检验、F检验是实现这一目标的经典统计方法。 ...
2026-01-29统计制图(数据可视化)是数据分析的核心呈现载体,它将抽象的数据转化为直观的图表、图形,让数据规律、业务差异与潜在问题一目 ...
2026-01-29箱线图(Box Plot)作为数据分布可视化的核心工具,能清晰呈现数据的中位数、四分位数、异常值等关键统计特征,广泛应用于数据分 ...
2026-01-28在回归分析、机器学习建模等数据分析场景中,多重共线性是高频数据问题——当多个自变量间存在较强的线性关联时,会导致模型系数 ...
2026-01-28数据分析的价值落地,离不开科学方法的支撑。六种核心分析方法——描述性分析、诊断性分析、预测性分析、规范性分析、对比分析、 ...
2026-01-28在机器学习与数据分析领域,特征是连接数据与模型的核心载体,而特征重要性分析则是挖掘数据价值、优化模型性能、赋能业务决策的 ...
2026-01-27关联分析是数据挖掘领域中挖掘数据间潜在关联关系的经典方法,广泛应用于零售购物篮分析、电商推荐、用户行为路径挖掘等场景。而 ...
2026-01-27