非本科系有办法学程序吗?

Photo by Arif Riyanto on Unsplash

文章同步发布於:https://kaochenlong.com/2021/09/19/does-cs-background-matter/

「我不是本科系的,有办法学写程序吗?」
「不是资讯相关科系,是不是之後会学不好或是发展有限?」

讲的好像本科系毕业就一定会写程序一样...

首先,没有人是所谓的「本科系」,就算是那些所谓的本科生,大多也是上了大学之後才开始的,在这之前也是非本科生(还是有人从一出生就开始打键盘的?)

大家一样都是半路出家,差的就是四年的大学教育的距离。所以,是不是本科系对写程序来说重要吗?怕各位没耐心往下看,先讲结论:

重要,但这跟有没有办法学会程序以及将来的发展没直接关系。

同样为避免讨论失焦,我这里定义「本科」指的是指资工系或资管系毕业,学校是不是顶大没关系。虽然我觉得资管系不太算,不过我一开始的程序就是资管系的朋友教我的(而且还教我 FreeBSD 怎麽用),多少有沾到一点边就一起算吧。

有些职业的确是需要本科系没错,像是医生或律师,而且除了科系外,还得参加国家考试取得证照,像我虽然是营养系毕业,但我没有通过国考的话也不能执业。但就以学习程序来说,不需要是本科系毕业,自己买书或线上课程或是参加几个月的培训班拼一下,加上现在网路资源很多,有关键字就能找到一票答案,要转职当工程师好像没那麽难?

是啊,没很难,没也没那麽简单。而且,本科生还是相对有优势。

本科生的优势

我先假设每位本科学生在学校的时候都有认真乖乖上课,该交的作业都有交,毕业专题也不是只有负责跑腿影印或买鸡排奶茶而已。本科生因为在学校有完整的知识体系的训练,像是计算机概论、演算法、作业系统等,所以在面对问题时,特别是没遇过的问题,本科生的反应通常比较快,或是知道该用什麽关键字去找答案,而且就算学习新技术也会比一般的素人来得快。

相对的,非本科生不论是透过自学或是培训班,因为时间通常很短,在有限的时间内光是学完程序语法或框架就差不多饱了,所以对基础的认知有限,甚至很多时候就只是会用套件或框架的「套件仔」,遇到没遇过的问题,很容易就不知道该怎麽办,我想这也是同样都是工程师,但非本科出身自学或培训班出来的新手工程师就容易处在鄙视链的底层,就觉得你们这种半路出家的就是不行。

大部份的公司在面试人的时候,如果遇到差不多资历的面试者,公司为了避免踩雷的风险,大多会选择相关科系的学生,这是事实。

所以本科生在找工作的时候就一定比较占优势吗?这倒也未必。大学教育的目的与培训班或职业训练所不同,大学教育是打地基,速度虽然慢但稳固,而大部份的自学者或培训班,从一开始的目标就是转职就业,所以学习的内容跟方向都针对「就业需求」,看看业界什麽比较红或是公司需要什麽就学什麽,而且这些技术很多时候本科生在学校也都没教过。

别的不说,就拿我自己比较熟悉的版本控制工具 Git 来说,这已经是目前业界几乎首选的版控工具,但我知道很多学校并没有教,不少毕业的同学也是毕业之後要找工作才开始学的。

另外,我们也都读过大学,也知道大学生活是怎麽一回事,上课会乖乖去点名就不错了,有认真上课、交作业的应该是少数了,所以我想一个班上真正的战力大概就是前 1/3 的同学吧。其它过的比较自由自在生活的同学,大学四年毕业後真的能写程序的可能没有想像中的多。

所以,本科生的起跑线虽然比较前面,但我认为没有到追不上的情况,就算真的是非常非常认真的学生,需要追的距离也就是 4 年的努力而已,而且这还是很努力的学生才需要追 4 年。

不务正业其实也没那麽糟

我记得我老爸(还是老妈?忘了)跟我讲过「你如果要做资讯相关工作的话,那你读大学不就浪费了吗?」

学以致用很棒,但有多少人一开始大学科系选的就是自己喜欢的?当年我可是差点没学校读的,营养系本来就不是我的兴趣,我几乎每科营养学相关的课都被当过一轮,我就是助教眼里不爱读书的小孩。没办法,我就没兴趣啊,所以我大学快毕业前有不少时间都是在篮球场打球,课堂只有点名的时候才会出现。

直到大四那年,第一次接触到网路,虽然只是龟速的拨接上网,但发现网路真的好有趣,所以就开始做自己的个人网站,放一些现在看起来没什麽营养的资讯到免费空间,觉得这样好有成就感。後来的故事大家就知道了,就是开始学 Photoshop 特效,後来因此进到学校电算中心开始跟老师学写程序。

其实不务正业也没什麽问题,本来就没什麽工作叫做「正业」,能够做自己喜欢的工作就是一件很幸福的事。

而且,非本科系也有好处,像是如果现在要我做一个营养评估系统,相同的技术背景下,我应该可以做的比一般的工程师好一些。或是有法律背景的工程师,在某些做法律相关的网站服务的时候应该也更有概念,专有名词也比较看的懂。

补强基础

在我大概写了一年程序之後,我觉得自己的基础很空虚,常常遇到比较复杂的问题只能硬干,虽然写的出来,但我也知道那写的并不好。所以後来我自己就跑去报名台大办的推广教育课程,报名了资料结构跟演算法的课程,在台上讲课的是一位台大的博士生,很厉害,但我课程几乎听不懂跟不上,我以为我已经会写程序了,原来还差这麽远...

几年之後,我记得是 2012 年,当时我在业界也工作不少年了,但我还是觉得自己程序逻辑有点弱,刚好看到一个叫做 FLOLAC 的暑期程序研习营就去报名了。想说我都写这麽些年程序了应该可以辗压同学,结果完全不是这麽一回事,去才发现逻辑跟我想的完全不一样,那些符号我好多都看不懂,老师上课讲的我也只能勉强跟上,但坐附近的同学一个一个都听的很开心...

那时候心里的想法是:

哇,这世界好多强者!

後来我才知道那些听的很开心的人的确都是业界的大大没错。

我说这些故事的原因,只是要跟大家说,非本科系的确技术底子比较弱没错,但拿到工程师的门票开始工作後,会慢慢的知道哪里不足,这时候也会认识比较多业界的朋友,知道该去哪边加强自己不足的地方,也知道怎麽挑选自己所需的课程。

一开始弱不是弱,不知道自己的弱点或是不思长进或是才是真正的问题。

所以,科系重要吗?

再补一次结论:

重要,但这跟有没有办法学会程序以及发展没直接关系。

有些单位在招聘的时候的确看科系或学历,也许就这样被刷掉那也没办法。但能不能学好程序,限制通常都不是你的科系,而是你的学习能力跟态度。关於将来的发展,天赋决定你的成就的下限,但努力才是决定上限可以撑到什麽程度。

心态正确加上努力学习,要拿到新手工程师的入场券不算太难。先拿到门票,然後慢慢变厉害。拿到门票後,就算工作上只是写 CRUD(资料的新增、读取、修改及删除的基本操作),也要额外花心思理解这些工具背後的原理。你可以不会做轮子,但至少要知道轮子怎麽做出来的,以及那些技术用到的关键字,不然连要 Google 找答案不知道怎麽找。

最後,不管是不是科班生,自学能力都很重要。本科生的起跑线比较前面,但就如前面说的,这个距离并不是追不上的,我认识很多目前仍在业界的大大也都非本科系出身,凭藉着兴趣跟努力同样可以可以在职场发光发热,而且还可能比很多本科生还亮、还要热。

我知道想要转职的人不少,想要快速转职,参加培训班就是一个比较简单的管道,因为他们可以就像考前冲刺班一样,让你在短时间内喂给你业界所需的技能,甚至教你怎麽写履历、举办快速面试或媒合职缺,达到成功转职的目的。不过参加培训班的同学如果转职的企图心不够强烈或是学习能力不足的话,很可能会跟不上上课的进度。每天掉一点点进度,最後就会掉好大一点,最後看到同学一个一个都找到工作但自己还在待转区练等,慢慢就会的想放弃了。这个学习以及心路历程又可以是另外一篇文章了。

...to be continued ✌️

文章同步发布於:https://kaochenlong.com/2021/09/19/does-cs-background-matter/


<<:  [Day 5] 排版布局Stack

>>:  Day 19 你有设定「排除关键字」吗?

【第七天 - Bubble Sort 题目分析】

先简单回顾一下,今天预计分析的题目: 如何利用 Bubble sort 进行排序? 我们要将下图六个...

蓝底白字错误讯息

最近Windows Updata有列印问题KB5000802, 而我是用Chrome进1111人力银...

Day 19 Libraries & TypeScript

前面中场休息的 Project 今天暂且休一天,来介绍一下可以在 JavaScript 跟 Type...

【Mac清理】如何找出与其他ios端同步後的重复图片

Mac 电脑里有很多重复的图片?有时候我们可能会重复汇入或下载相同的图片却没有及时清理掉。另外,如果...

Day 28 -资料库应用小程序 会员新增删除(内涵程序码)

废话不多说直接开始 我们点选注册按钮会连结到这个表单 首先是注册按钮内的程序码 string sql...