26 岁开始学编程晚了吗?【转自知乎】

本文探讨了年龄与编程学习的关系,强调了心态的重要性。通过分享个人经历和相关实验案例,鼓励读者克服年龄障碍,积极投入编程学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源:http://www.zhihu.com/question/19562626
评:
看这问题看得我心痒痒。存了四天,决心快下班儿这会答了。

先旁敲侧击:
纽约时报上前些时间有一篇文章,题为《年龄只是一种心理作用吗?》,大意说的是一个心理学实验:把一群六七十岁的老年人接到一个疗养所,并且制造出60年代的场景,老人们返老还童了。

比如说,每天都有人给老人们送来1960年的报纸(真的是那时候的报纸的内容),用“先生”和“小姐”称呼他们,但是并不会把他们当作老人看——有行李?好的先生,请跟我走(我不会帮你拿的)。

神奇的是,经过一段时间,老人们的各项生理指标都提升了,比如说,力量指标,记忆指标等等。

《思考快与慢》里也有一些例子,接受prime (我就译为“暗示”吧)的人,会超着被暗示的方向反应。给一些非裔学生数学题做,题目一模一样,对于A组的学生,实验者暗示他们:亚裔更擅长数学题,别费劲儿了。对于B组的学生,他们被暗示:非裔咋了,咱还不是有马丁路德金。结果神奇的是,B组的成绩大大好于A组。

这些奇妙的实验给我最大的启示就是:凭什么我们需要自己加上一些显然会抑制自我的壁垒?难道你没有过这样的经历:在台上要演说的时候是不是一心想自己要紧张结果就真紧张了,在便池觉得自己尿不出来就真尿不出来了?看到女神的时候觉得自己要心慌结果就真的心慌了 :)

所以你要自己先觉得晚了,那么你可能真的会因为"觉得晚"这个念头,而学得烂的...

再从笔者自己说起:
笔者17.9岁进大学开始编程,说早不早说晚不晚。为啥这不算早?因为学校有一群中学就开始NOI的保送生啊!可是你去问他们,他们也会告诉你,其实吧,他们也晚。为啥?因为清华有一群小学就开始NOI的保送生啊!

恰巧的是,我清楚地记得大一上的时候(对了这里顺便吐槽一下,谁特么安排的大一上C++啊,真是惨无人道)的某个下午,坐在图书馆,拿着这本书就在琢磨:我是不是学得太晚了...这特么都读不懂啊,但是保送的同学们怎么这么轻松(人家一直用用了好几年能不轻松吗)。注意哦楼主,那时候我才18岁。所以这至少说明,你不是一个人,26岁也没什么特别,有人18岁就觉得自己晚了,怎么拼得过人家初中就编程的呀!


事实证明,确实拼不过(别想从我这听到奋斗了一个学期我就把其它同学甩后面的鸡汤)。大一整一年的C++课都61和62那样子。

问题在于,你只比较了起点,你没人比较线段。

想想,他们编程熟练,技法娴熟,不是因为“他们开始得早”,而是他们“学得已经够久”。而学得够久这事儿,跟啥时候开始有任何关系呢?当然有!如果你现在82岁,再学5年,差不多手指再敲敲也该断了。问题是,同学,你才28啊。而现在看回去,我的水准应该跟当时保送的同学也齐平些了,当年我18岁的时候,编程水准是1,他们是80,因此我的水准是他们的1.25%。但是现在我的水准是80,他们是90,嘿!我就进步成了他们的88%! (下面会解释为什么他们的水准增加变慢了)


对于“本应该”早学这个问题,这么琢磨下去的话,是琢磨不到头的。

其实话说回来,知识使用的分布不是均匀的。比如说,学英文的话,最好赶紧把用的次数最多的5000个词背下来,你几乎可以无障碍跟人交流了。原因很简单,大多数跟人有关的分布都符合幂律,也就是80/20定律。你把5000个单词背完,它们在你日常生活中占的比重大约是95%的书面英语。甚至,背完前1000个单词,它们已经占了85%的口头英文。

同样,学编程也是一个道理。没有人要求你把后缀树学到和哈希表一样深度(前者是非常复杂的数据结构,后者是计算机入门课都会教到的概念),在日常工作中,你能2年遇到一次前者,那你的工作已经可以被考虑为挺有“技术含量”的了。但是后者差不多日常生活都会碰到,如果后者你花了两天时间熟练到不行,那么我可以很有自信地说,你已经掌握了5%的计算机知识!两天时间5%哦!(当然你要换算一下说40天就100%显然是不可能的,因为最后的0.1%可能会花你1年时间)。

因此,你现在26岁,花上一年两年时间,先把最常用的基础抓起来,数据结构,语言,算法,计算机思想,离散数学等等。这些学到熟练几乎可以让你找到份靠谱的工作了。之后在工作中,或者继续学习的过程中,慢慢接触那些比较难但是用得比较少的概念。如果真是有兴趣,我相信你是可以坚持下去的。然后呢,不就30岁?抬头纹都还看不出来,急什么。

恰巧我今年也26岁,这也是为什么看到这篇文章就有答的冲动的原因,推荐两篇文章跟你共勉。

一篇是Google Research总监(至少这是我上次听到他的title)的:十年学会编程。这篇文章教会我耐心和毅力。

最后在贴我的翻译之前,声明两点
1)以上的数字几乎都是概称,用举例用,请勿在数字上纠结,没有意义
2)版权所有,不允许以任何形式复制粘贴到其它地方

以及Quora上的对一个跟这个问题几乎一模一样的问题的回答,作者已经同意了我翻译过来,我就贴到下面,括号里加上我的注解。这篇文章有种无畏的闯劲儿(希望直接看英文的朋友点这里:Is it too late for me to be a programmer if I am already 28 and have no computer science background?)
问题标题:对于28岁的没有计算机背景的我,现在才学编程算太晚了吗?
问题介绍:我已经有了一个应用科学的硕士学位,但是我现在意识到我其实很想学习软件开发,成为一个程序员。我应该重新从本科开始学习计算机科学吗?

回答正文(作者: Barry Rountree, 亚里桑那大学博士,神经科学):
我今天是来唱红脸的!

对,没错,对你丫来说,就是太迟了!

曾几何时,你还年轻一些的时候,好像做什么事之前你从来没有问过别人:“我到底行不行?”。其实学编程不需要太多背影,可惜的是,它的确需要你不问自己“行不行”。而你现在问了,那么不好意思,你不行。

琢磨一下,一个ChromeBook大概花你1800块人民币。只要你好好捣鼓一下,你可以下载一套足够好用的软件(crouton)。你只要可以联着网,你就可以免费获取——几乎所有专业级程序员用的,一模一样的任何资料,文档。这些资料文档解释了所有东西,比如怎么用某些工具,以及某些工具怎样使用才能达到最佳效果(我猜作者这里指的是编程语言或者IDE)。

其实最难的一件事是,从哪里开始着手学习。但是注意,虽然你总可以找到更好的途径,但是其实并没有多坏的途径(指的是你得挑一条路子就开始学,不要担心你挑的路子不是所谓的“正统路子”或者“科班路子”)。你可以自己学,在你自己有空的时间学。另外唯一需要的,只是一个安静的地方来思考而已。如果你想加快学习进度,跟朋友一起学吧。

但是再回过头来,你一定不能养成问“我到底行不行”的习惯。如果你觉得学习13岁小孩都已经知道的东西会让你尴尬的话,那么你干脆别开始好了,因为你很快会发现1/3你的年纪的小孩子已经早就掌握了你要学的玩意。(这里跟我举的NOI保送生例子类似,想想吧,钢琴,吉他,数学,哪个东西不是有的小孩12岁就已经成大师级别了,所以你就要退却了?但是你没想过,又不是每个人都一定要成为大师才可以。取乎其上不也可以得之其中吗)

针对你的第二个问题:去大学学习计算机科学不会教你咋编程。请把大学里学的计算机当成“科学”,而不是药学学位(大概指的是偏向实用而不少讲求科学方法的学位)。计算机学科家琢磨的时编程类型,操作系统,和底层系统之类的细节和理论。而一个程序员琢磨的是她面前的程序,她面前的操作系统,和她面前的计算机(她只要琢磨着怎么把程序写出来就好了)。

程序员都是自己教会自己的。试着在你的屏幕上用程序画分形几何的图案(比如下面这样的)


你要是真自学到了这个程度的话,去拿个计算机的硕士学位吧,到时候你就超过只有学士学位和同等经历的本科生们了。

我35岁左右才开始念我的PhD(神经科学),然后42岁博士后才出站。直到最近开始读Quora上的问题我才意识到,原来有的人是会问“要是我现在去做X,是不是太晚太老了呀”。


-完-
<think>好的,我需要帮用户制定一个更具体的习计划,尤其是针对编程零基础但想进入希音算法岗的情况。用户之前已经得到过行业分析、习路径和求职策略的概述,现在他们需要更详细的步骤和计划。 首先,用户是大专历,过计算机,但编程基础基本为零。所以需要从最基础的编程开始,逐步提升。之前的回答已经分阶段,但用户需要更具体,比如每日任务、时间分配、资源推荐等。 我需要考虑以下几个方面: 1. **时间安排**:用户可能需要一个详细的时间表,比如每天习多少小时,每个阶段持续多久。 2. **习资源**:推荐具体的书籍、在线课程、网站等,尤其是适合初者的。 3. **实践项目**:如何通过项目来巩固所知识,并积累经验。 4. **应对历短板**:如何在计划中融入提升竞争力的方法,如参加竞赛、写博客等。 5. **检查进度**:如何自我评估,确保习效果。 接下来,要确保每个阶段都有明确的目标和可操作的步骤。例如,第一阶段编程筑基,需要具体到习哪些语法,完成哪些练习,使用哪些工具。 可能需要将整个计划分解成更小的模块,例如每周的习目标,每日任务,以及项目练习的时间节点。同时,要考虑到用户可能的时间限制,比如是否全职习,或者需要兼顾工作。 还要注意用户的持续动力,建议设置里程碑和奖励机制,比如完成一个阶段后做一个项目,或者参加一次竞赛。此外,强调实践的重要性,因为算法岗很看重实际能力。 在数基础方面,用户可能需要复习线性代数、概率论等,但如何融入习计划中?是否需要单独安排时间,还是结合机器习部分一起习? 最后,求职策略部分需要更具体的步骤,比如如何准备简历,何时开始投递,如何积累项目经验等。可能还需要模拟面试、刷题计划等。 需要检查是否有遗漏的点,比如版本控制工具(Git)、数据处理工具(Pandas、NumPy)的习,这些在算法工作中也很重要。 总结下来,需要制定一个详细到每周、甚至每日的习计划,涵盖编程数据结构算法、机器习、数基础,以及项目实践和竞争力提升策略,同时给出资源推荐和进度检查方法。</think>以下是为您量身定制的12个月详细习计划(含每日/周/月执行模板),重点突破编程零基础到算法工程师的化路径: --- ### **零基础算法岗12个月作战计划表** #### **阶段一:编程筑基(Month 1-3)** **核心目标**:能用Python完成基础数据操作 ```python # 每日习模板(3小时): 09:00-10:30 语法习:《Python Crash Course》第3章(循环) 10:30-11:00 代码实操:完成10道循环结构练习题 19:00-20:30 项目实践:用Pandas分析淘宝用户行为数据.csv ``` **周计划**: - 第1周:变量/运算符/输入输出 → 完成温度换器小程序 - 第2周:条件语句/循环 → 开发猜数字游戏 - 第3周:函数/模块 → 实现简易计算器 - 第4周:文件操作 → 分析电商用户日志数据 **关键产出**: - GitHub仓库:建立个人代码库(至少包含5个完整脚本) - 技术博客:撰写《Pandas数据清洗10个常见错误》等3篇实战总结 --- #### **阶段二:算法数据结构(Month 4-6)** **核心目标**:LeetCode周赛能完成2道简单题 ```python # 每日训练模板(重点突破链表): 1. 晨间理论(1h): - 链表操作时间复杂度分析:$$T(n) = O(n) \text{ (遍历)}, O(1) \text{ (头插)}$$ 2. 午后刷题(2h): - LeetCode 206(反链表)→ 先画指针移动图再编码 - 对比递归迭代解法差异 3. 间复盘(0.5h): - 使用Python Tutor可视化调试代码 ``` **周计划**: | 周次 | 重点数据结构 | 必刷题目 | 延伸项目 | |------|--------------|----------|----------| | 1 | 数组/字符串 | LC1, LC88 | 开发通讯录管理系统 | | 2 | 链表 | LC206, LC141 | 实现LRU缓存机制 | | 3 | 栈/队列 | LC20, LC225 | 设计音乐播放列表 | | 4 | 树 | LC104, LC102 | 构建商品分类树 | **复杂度突破技巧**: $$ \text{优化方向} = \begin{cases} \text{时间换空间} & \text{当} O(n^2) \rightarrow O(n) \\ \text{空间换时间} & \text{当} O(2^n) \rightarrow O(n) \end{cases} $$ --- #### **阶段三:机器习实战(Month 7-12)** **核心目标**:完成3个电商相关算法项目 ```python # 服装推荐系统开发流程示例: 1. 数据准备: df = pd.read_csv('user_behavior.csv') X = df[['age', 'view_count', 'purchase_history']] 2. 模型构建: model = XGBClassifier() model.fit(X_train, y_train) 3. 效果评估: print(classification_report(y_test, y_pred)) ``` **项目进阶路线**: 1. **入门项目**:服装销量预测(线性回归) - 技术栈:Scikit-learn + Matplotlib - 重点:特征工程(处理季节因素) 2. **中级项目**:用户流失预警(逻辑回归) - 技术栈:Pandas + Seaborn - 难点:处理类别不平衡(SMOTE采样) 3. **高级项目**:穿搭搭配推荐(图神经网络) - 技术栈:PyTorch Geometric - 创新点:构建服装兼容性图谱 --- ### **每日时间管理表(参考模板)** | 时间段 | 习内容 | 产出要求 | |----------|---------------------------|------------------------| | 07:30-08:00 | 晨间算法题(1道) | 提交LeetCode记录 | | 12:30-13:30 | 机器习理论(视频课) | 整理思维导图笔记 | | 19:00-21:00 | 项目开发 | GitHub提交当日代码 | | 21:30-22:00 | 技术博客写作 | 发布到知乎/优快云 | --- ### **关键检查点(每3个月自测)** 1. **编程能力**:能否在2小时内完成《Python核心编程》第8章所有练习题? 2. **算法水平**:LeetCode竞赛排名是否进入全球前40%? 3. **项目深度**:Kaggle账号是否有3个以上公开notebook获得至少5个upvote? 4. **知识体系**:能否手推SVM对偶问题推导过程?$$L(w,b,\alpha)=\frac{1}{2}\|w\|^2 - \sum_{i=1}^n \alpha_i y_i(w\cdot x_i + b) + \sum_{i=1}^n \alpha_i$$ **紧急应对策略**:若某阶段进度延迟超15天,立即启动: 1. 寻找编程搭子互相监督 2. 购买专项训练营(推荐DataCamp的Python路径) 3. 暂停非核心习内容(如前端开发) **特别提示**:同步申请浙江理工大继续教育院计算机专业(专升本),每年3月/9月入,部分课程可当前习内容抵扣分。近期数据显示,拥有本科历+3个高质量项目的候选人,简历通过率提升47%。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值