网志好读版:https://studio1729.tech/2020/05/turning-swe/
大家好,我是 C。大学读管理,在毕业后进到软硬整合厂做供应链管理相关的工作。虽然
如愿进到科技业,但开始工作以来一直觉得不开心,台湾硬件制造以加班闻名,而我就职
的公司也不例外,从入职开始便常常加班到晚上八九点,回到家多半处于筋疲力尽的状态
,只想躺在床上当烂泥。除此之外,因为生产时程需要跟着工厂走,又常常会遇到物料采
购的问题,多数的时候是处在压力大的状态。
这样的生活久了,觉得人生好像除了工作还是只有工作;最终决定不能再让自己这样,于
是我开始利用周末的时间参与一些科技的社群,也在参加活动时因缘际会接触到史丹佛大
学教授写的《做自己生命设计师 Designing Your Life》这本书,也参加了相关的课程。
在书中有一项叫“奥德赛计画”的工具,是要大家练习写下三种截然不同的未来五年。三
个计画没有谁好谁坏没有谁好谁坏,每个都是好计划。其中,第一种人生规划是目前做的
事 (现在的人生的延伸);第二种人生则是万一事情生变,你会做的事;第三种人生是假
定钱不是问题,面子不是问题,你会做的事。
在写下截然不同人生后,我问了问自己“假如真的那么不喜欢现在的生活,那为何不试试
看过个从没有想过有可能的人生? 大不了最差就是回到现在这样”。因为这样的想法,加
上朋友的鼓励,我决定做一个以前完全不曾想过的职涯决定 — 转职软件工程师。
#为什么是转职工程师?
因为大学读管理学院,是在传统台湾教育被归类成“文组”的科系,所以即使在高中时数
学是拿手的科目,我也从没认真觉得自己可以成为工程师。但在参加一些科技的社群后,
我很清楚地意识到我对工程思维很感兴趣,也喜欢工程师务实解决问题的工作型态。
特别是做营运与管理类的工作,很多时候不是想法好就好,权力政治才是决定谁说话大声
的关键。工作时常常因为觉得主管交派的方法不是最佳化,但反应了也没办法的无力感。
相比之下,工程是黑白分明,相对来说更靠实力说话的职位,是我更向往的。
除此之外,因为之前在台湾传统软硬厂工作的生活实在让人受不了,想要转换、想要出国
到有更好品质的工作环境,是一直都种在心中的想法。而工程师的国际移动能力是相对其
他职位更好的,所以各种考量下,最终决定已转软件工程师为目标前进。
当然决定这个目标不代表一切就会自然到位,对于传统文组生转职软件工程师之路最多人
会遇到的一个大难关 — 自我怀疑,也是我最开始的心魔。好在当时看到《工程师作家的
转行人生》,看到粉丝团版主从读创意写作转行成功的例子 (她还是在要养女儿的同时转
行,真的无比佩服,推荐想转工程师的人,一定要追踪!),给了我许多的信心,也让我
相信“我能做得到”,而能坚定地跨出第一步。
#如何开始第一步?
决定转职后,我先上《工程师作家的转行人生》推荐的 freeCodeCamp 上学习。
freeCodeCamp 是透过一个个小关卡,带领你一步步学习最基本的网页开发,包含 HTML、
CSS、JavaScript,由于是完全免费的,相当推荐还不确定要不要真的转职的人,无成本
学习。除了 freeCodeCamp,有另一个很类似的网站是 Codecademy,接口比较美,但有部
分的学习内容要付费。
在最开始的阶段,我常常在吃午餐或晚餐时,会顺便看一些软件工程师相关的 Youtube
影片,例如 Clément Mihailescu、TechLead、Code Drip 的影片。这些影片协助我更了
解软件工程师的生态、各种名词,例如前端是做什么、后端是做什么。因为不是太硬的技
术内容,但对初学者又算有知识含量,配饭还算刚刚好。
#有了初步认识后进一步学习
在 freeCodeCamp 的关卡都做完后,我进一步学习的路径有分成两个部分,一部分是全端
网页开发 (后来我都集中在前端),以及基础的电脑科学与运算思维。
全端网页开发我有买过一个月的 Treehouse ($25 美元一个月的那个,不是 $199 美元
的 TechDegree),也有买《工程师作家的转行人生》推荐在 Udemy 上的 Andrei
Neagoie:The Complete Web Developer in 2020: Zero to Mastery。
Treehouse 的优点是在一个月内可以内容看到饱 (除了全端网页开发,也有算法、资讯
安全等等不同主题),但相对地假如是在职的人,可能就没那么划算,因为下班后能看的
时间也不多。而 Udemy 则是买了课之后就能永久看。对于想要跨入全端网页开发的新手
,我觉得 Udemy 的课已经非常足够了,假如是在职的人,可能一个月也看不完一堂课。
Udemy 课程的另一个好处是老师很多,同个主题妳可以有很多不同老师,加上有三十天内
不满意退费的机制,我觉得对初学者很友善。毕竟学程式这种艰涩的东西,找到频率对的
老师很重要。虽然我一开始是看 Andrei 老师的课,但后来发现不太对频率,所以改买了
另一个同样在 Udemy 的 Angela Yu : The Complete 2020 Web Development Bootcamp
课程,就发现频率很对。虽然两个的内容差不多,但频率对了就学得更顺手。可能上面这
两个都跟你频率不对,但没关系,Udemy 很多老师可以选,选适合的才是最重要的!
除了全端开发之外,我也看了哈佛大学的 CS50 课程,来打电脑科学与运算思维的基础。
只能说实在太爱 CS50 的教学了,不论是 David Malan 教授教得主课程,还是 Brain
Yu 讲师教的 CS50 Beyond (偏前端网页开发) 与 Web Programming (偏后端网页开发),
都是非常精彩、深入浅出。
#辞职专心冲刺
在开始看 Udemy 与 CS50 后,由于已经很确定自己要转职,我就辞掉工作 (不然本来的
工作实在太耗神) 全职冲刺。在全职冲刺的期间,我写了两个专案,一个是电商专案,一
个是 CRM 专案。因为这时候很确定要往前端发展,所以也开始学 React (前端最多人用
的框架之一)。我是透过 Udemy 上的 The Complete React Developer Course (w/
Hooks and Redux) by Andrew Mead ($300 台币) 课程,搭配 Youtube 上的 Net Ninja
Complete React Tutorial (& Redux ) 课程学。
边学边试着用 React 来写我的专案,不会的、卡住的东西就上网查 (基本上就是靠
Google 与 Stack Overflow 来找)。举例来说,想要在电商专案中做购物车功能,我就
去 Google 上搜寻 “shopping cart react” 这类的关键字找教学来看。
当初之所以决定做这两个专案放到我的作品集,是因为我先找了几间自己很感兴趣的公司
,了解他们用什么技术与语言,了解他们的产品,然后想我的作品集有什么样的专案,会
让他们觉得我是即战力,最终才决定要做什么。
#面试准备的自我怀疑时期
花了两个多月边学 React 与做专案作品后,在开始投履历前,我花了两周多全力准备面
试。面试分成三部分准备,专案作品、JavaScript/React 考古题,以及算法刷题。
专案作品就是要对自己的专案了若指掌,用了什么样的技术,为什么选择用该技术,都要
能说得出来。JavaScript/React 考古题就是上网找“前端面试题目”、“React 面试题
”等关键字找题目,题目看到后来都大同小异,这些题目多半也都能在网络上找到人分享
答题。其中我非常推荐 Huli 的部落格,里面写的超多篇都是在回答面试必考题 (例如
浅谈 JavaScript 头号难题 this:绝对不完整,但保证好懂、我知道你懂 hoisting,可
是你了解到多深?)
而算法刷题就是大家耳熟能详的 LeetCode 题目。刷题前我有买一本资料结构与算法
的书来读,但后来发现网络上的资料也都写得差不多,也有许多 Youtube 频道有相关教
学 (例如这个 CS Dojo),所以后来觉得没有特别买书的必要。实际刷题我主要是刷
Easy 与 Medium 的。每次遇到新的题目会先自己想,真的解不出来才会上网看别人怎么
解。
上面这些或许有点轻描淡写,但其实在转职时,有好几度觉得自己撑不下去、怀疑自己没
办法做到。不论是专案卡关,或是刷题时怎么都不懂。事后回头看,我觉得建立良好心态
很重要,不要期待所有观念自己马上就会懂,慢慢来,有些观念看了好几天才懂,也是常
发生的事。上面提到的 CS50 有教一个 C 语言的指标 (pointer),我是重看到第五遍才
懂,但那没关系,最终有弄懂才是重点。
求职的最后阶段是投履历与面试。作为一个传统定义的文组生,我的经验是求职时没有太
吃亏。我开始投履历后一共投了十多家,其中九成有一面,完全没有因为学历是文组而拿
不到面试机会。拿到面试的也有七成有二面,没有二面的也是因为白板题炸掉,不是因为
自己的背景。开始投履历的第二周拿到第一个工作机会,在拿到第四个工作机会后终止了
剩下的面试。
回顾整个过程,我认为文组生转职最大的障碍是自己的心态。能不能熬过自我怀疑,能不
能在第一次没弄懂后继续坚持下去学习才是重点。转职之路不容易,确定是自己想要的方
向才是重要的。假如在过程中发现当工程师实在不是自己的路也没关系,所学的不会白费
,就像也有同为文组的朋友,学了程式后转产品经理,虽然没成为工程师,但依然转到自
己理想的职涯。
希望这个经验分享对正在读的妳与你有帮助,也祝福大家都能顺利发展出自己理想的职
涯