从一篇约稿说起:

在 2021 年的 8 月份,工作中的我接到了淘系技术运营同学的约稿,邀请我谈一下“程序员最重要的能力是什么”。随后我根据自身经历,写下了回答,全文发表在淘系技术公众号的《程序员最重要的能力是什么?》中。

到了九月底,淘系技术运营的同学和我说文章发表出去的反馈不错,希望我能继续写一下具体的心路历程,于是就有了这篇文章。

希望能为和我一样,对编程感兴趣/犹豫转行/正在转行的同学们提供一点经验分享。

我的编程学习经历

我是转行成为程序员的,可以分享一下我的编程学习经历。

  在学习编程之前

在高中时,因为学不会物理和化学,我选择了文科,这也意味着计算机专业类对我关上了大门,不过在当时我也没有想到自己在未来会喜欢上写代码并以此为生。

现在回想起来,与编程有关的只有两件事情。

一是在繁忙的高中生活中,我一直订阅着《电脑报》,并通过它了解互联网的时事。二是当时的文科数学需要解一种流程图题,也是我最喜欢的题型,现在看来与代码流程其实是无异的。

流程图题

  从 C 语言开始

升学后,我就读的是人力资源管理专业。2015 年初,大一上学期的期末考试刚结束,距离回家尚有一段时间,因为闲着无聊便上网络学起了翁恺老师的《C 语言基础》课程,随后就被带入到了计算机编程的坑中,至今尚未脱坑并越陷越深。

记得当时的我,在 2015 年寒假一个月的时间内。开始了每天听课,思考。然后把代码输进手机慢慢运行的过程(那时候还没有笔记本电脑)。当时最开心的就是图片的这一段代码,一次性编译运行通过。

  从“年轻工程师”到阿里前端技术专家

往后的半年中,编程的学习也并没有像想象中的那样顺利。学习进度停滞不前。我还清楚的记得当时的自己:“会用20门语言输出Hello World!”,“别人一周就能上手的 BootStrap 我学了四个月” 等诸如此类的事情。

偶然的一个契机,我找到了愿意带我写代码的同学,并磕磕绊绊的完成了第一次 Ajax 操作。那之后的我仿佛开窍了一般,编程世界的大门,终于向我敞开,任我探索和遨游。

直到有一天,我遇到了瓶颈。

2016 年的前端,技术日新月异,当时的我颇有一些手足无措,总觉得时间不够用。于是在参加当年的 JSConf 时,遇见了当时前端圈的名人贺师俊(Hax),于是便壮着胆上去交流了一番。

对话的内容我只记得个大概,在交流结束时我向贺老致谢,他回复我说:“学东西不要有那么强的功利心,而且对于我来说,能帮你们这些年轻的工程师就非常好了。”

在那时候我发现,对编程的兴趣已经托着我从学生过渡到大家眼里“年轻的工程师”了。时间一晃眼已经过去了 5 年,当年的学生,也从“年轻的工程师”蜕变成了阿里的前端技术专家,身份在变、环境在变、技术在变,只有对代码的兴趣没有改变。

  从 Node.js 使用者到 Node.js Collaborator

由兴趣驱动的源动力,往往是纯粹且不掺杂利益的,而在软件世界中,兴趣驱动与开源精神是高度契合的。

在 2020 年冬季到来的时候,我遇到了新的瓶颈,想学习更多 Node.js 的知识却不知从何下手。

这一次我的选择是参与 Node.js 开源社区的协作。我开始阅读 Node.js 的源码,解决 Github 上的 Issue 等。在事后提名 Node.js Core Collaborator 时,我统计了一下,两个月的时间内我一共提出了 50+ 的 Pull Request。

现在回头来看,这些与实际工作“无关的兴趣”,最终支撑着我走的更远,现在的我在 Node.js 架构团队,全职负责着 Node.js 的工作,个人的眼界也开拓了许多。

转行的那些问题

转行并非是一帆风顺的。在这个过程中,最常见的问题莫过于如下:

  1. 非科班的同学,能学会计算机吗?

  2. 计算机专业学了 4 年,你自学的能跟得上吗?

  3. 出来后能找到工作吗?

  4. 转行的过程中需要做什么呢

  5. ……

这些问题从我学习编程时,就一直萦绕在耳旁,时至今日依然会有同学找我聊天,然后再问出上述的问题。也是借着此机会,我写一下我的想法。

  非科班能学的会计算机 / 自学能跟得上吗?

答案是肯定的:“可以的,没问题的”。

说起来,我从未纠结过自己非科班的出身。在学习编程的伊始,我就想清楚了,如果想要成为一名优秀的程序员,科班 / 非科班的身份根本就无关紧要,真正的关键在于个人的学习效率与投入的时间。

而在大学中,我投入了大量的时间,平均每天编程 6h,这样的生活一直持续到毕业。而在毕业时,我已经完成了大约十几个项目,写过十几万行代码,也有一个十几万字的博客。

博客统计

大学时写的一个项目

Commit 记录

换言之,我也认为,如果一名非科班的同学,学过计算机的课程,写过很多行代码,也可以顺利的完成项目,那么他就是程序员。

  出来后能找到工作吗

答案也是肯定的:“可以的,没问题的”。

计算机编程就业环境还是很好的,并不会卡死专业,而是通过过往的经历 + 笔试/面试来决定是否录用你。所以不用太担心这方面的问题。

这个问题我之前在知乎也回答过,所以就不再重写啦,可以看下面的截图。

  转行的同学要如何学习呢

这可以说是社区每天都能遇见的问题了。但授人以鱼不如授人以渔,我说一下我自学新领域所使用的方法。

方法很简单:上知乎,搜索 XX 入门(如计算机入门,前端入门),就会出现一大堆提问,你需要的只是耐心读完其中高赞的一些回答,并归纳总结分析,大概心里就有数了。随后选择其中你觉得靠谱的高赞回答去学习即可。

许多提问的高赞回答其实都回答的很详细也很好,认准教程后跟着学习即可,学习的过程中你又会遇到新的问题,这个时候继续再搜索即可。

这个方法很管用,时至今日,我在学习产品、设计、演讲、游戏等新领域时都是这样做的,在尝试和摸索的过程中,你的自学能力也会得到提升。

  • 我的自学方式

我在刚学习前端时,幸运的在知乎上看到了大漠关于前端自学的回答。

后面我还经历了这样的一过程,我思考过三类问题,并且将他们列在一起:
1.哪些知识点懂了?
2.哪些知识似懂非懂?
3.哪些知识不懂?
接下来有了这样的三份清单之后,就能非常清楚自己知道自己,然后先解决第二个清单中的list,再解决第三个清单中的list。
最后建议,学习这个过程是不断渐进的,整个过程把握:多看、多想、多问和多做。这也是我自己的四多原则。如果你时间允许,多写写东西,总结自己的知识。现多看看规范。

后面也针对自己的情况,画了一张思维导图,把似懂非懂的知识点列了出来。

后面在寒假里针对这些问题重点攻关,并写成总结的技术文章。

2016 年的文章

目前来看,找到自己“似懂非懂”的知识,学习,总结,分享是一个非常有效的学习方式,有兴趣的同学也可以参考试试。

我也一直坚持,学习方案的重点在于学习效果,而不是方案有多复杂和多详尽,适合自己就好。

  转行的过程中需要做什么呢

这里我的建议是:

  1. 多做项目

  2. 多写总结

  3. 多打基础

首先我建议多做项目,比起打下“扎实的基础”,对于转行的同学,培养起对编程的兴趣是更重要的。不同于科班良好的学习氛围与节奏,自学往往对自制力的要求更高,这时候培养起对计算机的兴趣,能让自己继续学习写代码才是更重要的。

其次我建议多写总结,总结是一个非常高效的学习过程,如果你要把一件事情给讲清楚,那么首先一定要弄懂这个知识。自学计算机的过程中,多总结不仅可以查漏补缺,也可以让自己在回顾的时候多一份积累的感觉。

最终则是建议多打基础,转行计算机的同学,计算机底层原理,算法等知识接触较少,但这些却实打实的是基础,可以帮助你未来少踩很多坑的知识,因此在学习之余也可以多关注计算机基础知识(至于怎么学习,可以参考上面的回答)。

回头看转行

时光荏苒,回头看已经写了快 7 年代码了。

回头再看自己的转行经历,与其说是文科生转行学了计算机,倒不如说是自己发现了对计算机的兴趣,并持续投入至今。

最后,送上我很喜欢的一段话作为结尾。

Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it. 」 — Steve Jobs

✿  拓展阅读

作者|繁易

编辑|橙子君

出品|阿里巴巴新零售淘系技术

从文科生到前端专家 - 在转行时我想过的问题相关推荐

  1. 前端开发人员转行的职业推荐:13个就业方向

    1. 全栈工程师 全栈工程师不仅需要掌握前端开发技术,还需要了解后端开发技术,包括服务器.数据库等相关知识.前端开发人员转型为全栈工程师能够扩展自己的技能栈,承担更多的工作内容,并在就业市场中获得更广 ...

  2. 阿里云前端专家冯军:前端用户体验该如何优化

    2022 年 9 月 28 日,阿里云用户组(AUG)第 11 期活动在深圳举办.活动现场,阿里云前端专家冯军,向参会企业代表分享了前端用户体验该如何优化?本文根据演讲内容整理而成. 大家好,我叫冯军 ...

  3. 前端开发审查元素时CSS样式有个横线(该CSS样式定义后无效) 的解决办法

    问题概述 关于这个问题,博主是在前端开发,样式调试的时候遇到的, 进行盒模型,CSS Debugger调试时,遇到样式设值后不可用的情况! 如下图: 解决办法 左看右看,上看下看,最终发现是前面在编码 ...

  4. [技术翻译]9个可以让你在2020年成为前端专家的项目

    本次预计翻译三篇文章如下: 01.[译]9个可以让你在2020年成为前端专家的项目 02.[译]预加载响应式图像,从Chrome 73开始实现 03.[译]您应该知道的13个有用的JavaScript ...

  5. 做程序员累了想要转行?我想给大家分享一下看法

    今天早上起床时,我看到有粉丝评论说关于程序员的话题,如果做着觉得累了,就会觉得自己不适合这个工作,想转行.我想给大家分享一下我的看法. 在我刚开始工作时,有人说我不适合做这个工作,但是我坚持了下来,做 ...

  6. access 战地1不加入ea_炒牛肉时,想要牛肉嫩滑又不老,只需加入1样东西,很多人都不懂...

    炒牛肉时,想要牛肉嫩滑又不老,只需加入1样东西,很多人都不懂 冬季滋补怎么能少得了牛肉,牛肉中含有非常丰富的营养成分,其中蛋白质的含量尤为丰富还有大量的氨基酸,能够提高身体的抗病能力,特别适合手术后或 ...

  7. [react] 给组件设置很多属性时不想一个个去设置有什么办法可以解决这问题呢?

    [react] 给组件设置很多属性时不想一个个去设置有什么办法可以解决这问题呢? es6展开运算符 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主 ...

  8. linux拷贝文件时如果想保留文件原有的时间属性,可以使用选项,Linux考试题完整版.doc...

    PAGE Linux基础知识 自测题 单选题(共计40题) 1. 查看命令cd的绝对路径,结果如下: # which cd /usr/bin/which: no cd in (/usr/kerbero ...

  9. 蚂蚁金服高级前端专家,我做前端这 10 多年来的感悟

    以下文章来源于微信公众号:前端早早聊 ,作者沉鱼 沉鱼毕业于浙江大学,2008 年的时候加入了阿里集团,之后又入职了蚂蚁集团.她先后作为 Node Web 框架 -- Chair 的核心开发.Base ...

最新文章

  1. 为什么自动化对于IT工程师是必须的?
  2. 人口预测和阻尼-增长模型_使用分类模型预测利率-第1部分
  3. go 二进制程序守护_图解 Go 程序是怎样跑起来的
  4. 从当前元素继续寻找_169. 多数元素
  5. Qt工作笔记-把文件逐行读到ListWidget中
  6. 浅谈oracle中for update 和 for update nowait 和 for update wait x的区别
  7. mysql 某列加全文索引_MySQL使用全文索引(fulltext index)---高性能
  8. vim-Complex repeats
  9. linux目录表及功能n鸟哥,鸟哥linux学习之-文件属性跟系统目录
  10. Eclipse 2017最佳20个插件
  11. mysql主键和候选键有什么区别?
  12. CSDN 迷你博客错误
  13. java调用python实现校验一串字符串是否为单词
  14. 无纸化会议转型,做可持续发展企业
  15. 华为Mate40Pro和华为Mate40Pro+ 哪个好
  16. compat-mysql安装_Centos7 rpm方式安装Percona Mysql 8
  17. Java Ftp客户端
  18. 高等数学:第五章 定积分(1)概念与性质 中值定理 微积分基本公式
  19. cadence allegro导入dxf文件
  20. Fail to execute goa; org.apache.maven.plugins:maven-complier-plugin:3.8.0:compile错误解决方法

热门文章

  1. Python数据可视化:高维数据图表可视化(基础篇—8)
  2. 【3d face reconstruction】综述阅读
  3. 人工智能学习教程笔记-5:数据清洗
  4. ElementUI中Tree组件兼容IE解决方案
  5. SWT Designer简介
  6. Forms表单登陆,动态获取web.config里面的cookies配置
  7. 满二叉树与完全二叉树
  8. 告别996-SAXReader读取xml配置文件
  9. STM32的SD卡与SDIO接口
  10. 物联网(IoT基本概念探讨)