Day 28 - 从大学肄业,联成电脑,到 Microsoft MVP 得奖,从零开始的软件工程师

前言

各位 iThome 的观众朋友们大家好,我是 Che-Chia。感谢大家点进来,阅读这篇文章。

2020/10/01 我收到来自 微软的最有价值专家(Most Valuable Professional) 奖励项目,作为我个人软件从业的一个里程碑。我用这篇文章回顾从 2011 年从业至今的所作所为,描述我做了哪些事,帮助我获得 MVP 奖。

->欢迎参观我的 MVP 页面<-

这篇文章不是标题杀人,写这篇的目的,要告诉软件业从业人员,我做了哪些事情,最後获得 MVP (Most Valuable Professional) 奖项。

更精确地说,我想要描述一个努力的方向。如果你自认是个努力的人,想要为自己的未来多出一份心力与时间,这篇文章很适合你。这篇文章不是万灵丹,未必会给你一个明确的作法,例如做了 A B C 最後一定会得奖 (人生没那麽容易XD),但的确会提供你一些思考的方向。我会清楚地描述我个人从离开学校、入社会、一次一次的转职、如何提升自我、选择职涯,最後回顾过程中完成哪些事情,终究获得 MVP 奖项。

成为 MVP,可能不会因为获得 MVP 从此人生一帆风顺,也应该不会立刻大富大贵,甚至是照了步骤做了,最後也根本没成为 MVP。然而依照这个方向努力,确实可以达成某种程度的成就,而且是对自身很有帮助的成就。

关於 MVP 获奖的条件,需要完成的任务难度,这点也想先说明:真的没有很难。不是指这件事很容易,而是说过程中执行事情都不是什麽高科技、或是需要高智商、或是需要家世背景。没有,只要努力与坚持,你与我都很有机会。我可能不笨,但也不是什麽聪明人。绝大部分事情你我都做得到,成败掌握在自身而不是天分、家世、或是其他无法改变的背景条件,只取决於愿不愿意付出时间与心力去执行。

文章实际的内容是

  1. 从踏入职场,到成为 MVP 职涯发展,我做过的选择
  2. 做了哪事情帮助我成为 MVP
  3. 我的故事,你也绝对做得到
  4. 「你很有机会」的各种心灵鸡汤 XD

我不是开玩笑的,你很有机会。可以让你证明自己、从中获益、并在过程中帮助到许多人,改善整个大环境。前者对个人发展很有帮助,後半则帮助了技术社群--这是我想要透过这边文章达到的。

动机

所以这篇文章,不要读者来粉专按赞或留言,获取个人的利益。只要千百个读者中,有一两个人看了我的文章,愿意试着往这个方向努力,最後获得了属於自己的成果,甚至让世界多一个 MVP,在台湾社群发挥影响力,纵然我不认识,也没有什麽直接利益关系,但却增加技术社群的整体影响力,光是这样就有说不尽的好处。

成为 MVP 的客观条件

上面的简介有几个关键字

  • 努力
  • 方向
  • 社群

让我们看一下 MVP 项目官方文件描述的 What it takes to be an MVP

这里举了几个范例

  • Contributing code to Projects: Daniel Marbach 贡献超过 100 个开源专案
  • Helping Others: Vinicius Mozart 回答 MSDN/TechNet 上的问题,发过数千个回答,每年有 5 万余人看过他的发文
  • Creating Content: Takae Sakushima 技术作家与部落客每年有 2 百万点阅。
  • Speaker: Heather Downing 知名讲者,参加全球技术研讨会,听众累积超过 10,000 人
  • Live Coder: Layla Porter 直播主,直播 live coding,累积破万观众

以上都是各自领域的佼佼者,MVP 项目放在首页上给大家作为模范。

退一步说:你不用跟他们一样杰出,但至少要

  • 对其他工程师有相当影响力
  • 喜欢且持续从事这些事情

才有机会获奖。

看起来很难,是不是? 所以我要开始讲我的故事,来提升你们的信心 XD,因为我的故事开头并不怎样。你们看完可能会想:

「哇这种程度最後也能获奖 MVP,那我也行」

记住这种精神。

我的教育背景,从零开始软件工程师

先说,我的教育背景。让大家知道我出发点在哪里,故事的起源。

我的教育背景是,我没有教育背景 XD

什麽意思?!

我是台大机械系肄业,念到大三因为太混成绩太差被学校退学。同学穿学士服拿毕业证书,我领肄业证明跟失业辅助。

入行软件工程,也只是因为软件业缺人,政府有辅助就业,就靠着政府的就业辅助,去联成电脑上了网页工程师密集班,周一到周五,上了三个多月。

由於大部分的人大概都不清楚,所谓短期电脑补习班是什麽,这边我想描述一下当时联成电脑的状况:

  • 把失业的年轻人聚集在一起
  • 直接教 Javascript
  • 没有演算法、计算机概论、资料结构、电脑网路...,大学必修全都没有
  • Javascript 一个月,换教 Java
  • 然後就变成全栈工程师
  • 也别想讲师有多强,很多教的东西,出来工作都发现是老旧的观念

出来找工作时的程度

  • 良葛格的 Java 技术手册,看完。大概五成看不懂,怎麽办呢?就直接用默写,程序码全部手打一遍,能死背就死背
  • 写了一个 Javascript + JQuery + Java 的 3J 网站

所以标题不是抄袭很夯的动漫标题 XD,而是我的软件职涯,是真的从零开始的工程师。

我第一次找工作,职场的竞争对手是资讯工程本科毕业生,学软件已经有 4 年,如果是硕士则是 6 年。反观我自己,补习班硬凑,刚好满 4 个月 XD

所有应届竞争对手,基本上都领先我十倍功力 XDD,简直要在脸上写的惨字。广告说要赢在起跑点,我是输在起跑点还倒退噜。

然而,再惨,终究还是要硬着头皮出来找工作啊。第一份工作就是只求有工作,完全不管待遇。然而就算这样,还是非常不顺利:投递履历大多无声卡,面试了许多家,也无消无息。

後来想,技术能力跟经验实在没得比,就改变策略,想想还有什麽优势

  • 英文,我大学唯一学到的就是英文,有 TOEIC 945 证书,面试就一直亮证书
  • 作品。没学历怎办? 就把手上的作品一直做大,书上有的范例,都转成功能抄上去
    • 後来发现,作品是很有用的,至少表明你是有能力与毅力去完成一些事情,纵然只是微不足道的作品

最後幸运地被一家传产公司捡到,月薪号称 28 k,实领 25 k。那时租屋住在汐止,算是饿不死能活下去了,就从台中北漂台北,开始当一个软件工程师。

人生就是这样,很惨还是要努力,如果不能站好,至少要在地上像只蟑螂一样努力挣扎。或是选择躺好,我就是不想躺好的那种人。

第一份工作

先说说第一家公司,我在这家公司待了 10 个月,这十个月间,这家公司没让我成长太多,但至少也没让我饿死。

这是一家传产公司,做的产业以前毛利很高,但最近开始逐渐下滑,於是想要求转型,成立新创软件部门,我是公司第一个纯软工程师 XD,另外有一两个韧体工程师,剩下全是现场工程师傅。

那时主管是业务主管,完全不会写扣,唯一的软件工程师 (我本人) 又菜到不行 XD,公司也知道,所以就找了外包给认识的接案工作,然後我来帮忙,顺便应付客户的需求。

但很快发现自己工作过程中完全没有进步,工作心态也越来越差,其他同事也不是积极上进的类型,只是应付工作跟等退休。加上对於刚开始工作的新人,没有资深工程师带领、跟没有同侪一起进步,实在是太不利了。不久就萌生跳船的想法。

这时我的求职能力,除了英文以外,多了

  • 10 个月工作经验,但基本上就是屁
  • 我的专案成长了不少,吸收了从接案工作那边的素材,但是素质很差
  • 那时的程度只会用 Sublime 文字编辑器,先复制网路上的 php 范本,然後自己改
    • 是所有逻辑都写在 php 里面,最糟的那种 Orz,因为也没人教我正确的做法。也不会用 git、IDE、...

於是有时间就继续念书,这时还不会上网 Google 或是找 Github 或是 Stackoverflow。如果不熟悉软件工程的关键字,是通通查不到的。总之就是看书,然後把书本的东西抄出来、能背就背下来。

後来骑驴找马成功,就立刻跟老板提辞职了。

回想这段期间我有做对的事情,就是

  • 我有好好的整理我的 104 履历
  • 作品烂归烂,还是有用心整理
  • 工作经验乏善可陈,但还是要整理,至少面试时要讲得出来
  • 确立下间公司的期待,一定要学到东西
    • 我不要停在这个程度,我出生点这麽糟,一定要学习进步

「一定要学习进步」

这个想法,成为我後来找寻每份工作,唯一的指标。

第二轮面试

第二份工作顺利上工,虽然菜,但有资深工程师带,自己也知道认真好好学习。

怎麽面试上的呢?後来主管明说,公司当初请我近来也不是觉得我多好,公司也知道这样的薪水不是要超强的工程师,徵才只是要

  • 脑子跟逻辑清楚
  • 可以沟通跟合作
  • 能够学习进步

的年轻人。我从电脑补习班,到写得出作品,面试基本题答得出来,加上谈吐问答都正常。主管觉得这个人可以教,所以就收进来,让资深工程师带。

如果你没经验,表现出顺畅的谈吐、思维方式、自主学习的能力。

要表现出自主学习的能力,不是只是嘴巴说,每个人都会说「我很会自主学习」,面试官都听到腻了。

把读过的技术文章或书整理成笔记、整理成自己的专案、或是英文翻译成中文。如果白板题写不出来,至少用学习纪录证明你有学习。

站稳脚跟

说说这家公司,这是一间长居美国的台湾老板开的美商,在美国已经做了几十年的纯软件公司。之所以有台湾分公司,原因也很简单:就是希望 Cost down 降低成本,这点老板在员工大会上跟公司员工明说了,也确实反映在用人的方针上。

我当时的薪水大概是 40 k 上下,後来有多次加薪。我在这家公司待了一年半,离开时大概落在 70 k 上下,成长幅度不小。也是老板明理,虽然是 Cost down,但在一定的范围内,也愿意投资有潜力员工。

我的同事是其他年轻的工程师,有本科系学生、或相关科系转行,这个团队是实在的软件工程团队,知道自己在做什麽 XD。我从他们身上学到非常多东西,

  • 学会一堆工具 Git、IDE、linter...学了超多工具
  • 会区分烂 code 跟好 code,(开始跟同事忆起骂烂扣 XD),知道好坏、知道最佳实践,真的很重要
  • 知道工作流程的重要性,学会跑 Scrum 跟看板,以及优化工作流程的意义
  • 知道如何去找问题与答案
  • 知道如何有效率的跨国沟通与团队合作,与工作态度

当然,工作中也发现很多别人会,但是我不会的东西,例如本科生都会的演算法、资料结构、...等等,修的好坏看个人,但我发现自己通通不会。

「别人会的我也要会!」

我本身是很有竞争意识,上份工作没有同侪,这份有了一堆领先我的同侪,还有系上资优生,让我压力山大。但同时也给我极大的学习优势。

  • 我不会的东西别人都会,所以我很容易问到答案
  • 开始知道回头修大学的课、与开放课程网的课程
  • 学会去爬英文网站 Github、Stackoverflow、各个工具的官方网站,开始有能力吸收国外的资讯
  • 开始注意於做事的过程与方法,学会改善流程

热爱学习有几个面向

  • 自己学到东西
  • 别人会更愿意教你新的东西,如果你的回馈很正向
    • 相反,如果教东西,反馈的态度很差,之後就不会有人想教你

所以像海绵一样努力吸收各种东西吧!

回首这段期间,我非常感谢这家公司,技术能力大幅成长,知道自己在做什麽,可以独当一面。除了技术能力,在这家公司也交到许多好朋友。同事们都很年轻,也很谈得来,许多人离职後都常保联络,成为一辈子的好朋友。工作不只是养活自己,也结交人生的旅伴。

找到志同道合的人太重要了,他们会

  • 分享职场与人生经验
  • 他们的努力会激励自己
  • 会提供新知识与业界新闻,跟八卦XD

去交朋友吧,工程师们,可以一起上班工作、下班打电动的朋友超棒。

踏出舒适圈,走入社群

从业第三年,至此,我都还没有开始做任何 MVP 相关的事情,也还没有开始加入社群。

下一段,踏出舒适圈,筑梦的新创公司之旅


<<:  【Day28】为爬虫加上通知 - 用 axios 发出 LINE 通知

>>:  Day 28 / DL x RL / RL 不只会打电动?

Day10:时程安排

规划时间 开发时间 测试及验收 ...

iris的依赖注入

iris的依赖注入 本篇文章介绍一下其他语言也有的设计概念,就是依赖注入,以及在iris如何利用这种...

Day08-import/export

前言 以前我们可能会引入许多的JavaScript档案 而现在前端更多应用的时代,程序的庞大会让前端...

数据分析的好夥伴 - Python基础:资料形式(上)

在学习完SQL之後,接下来让我们进入下一个阶段:Python的学习! 先说为什麽你需要学Python...

[Lesson28] Kotlin - Generics

泛型就是参数化类型,将类别参数化。让你在定义类别、方法、介面时先不用决定型别,等到要实体化时再决定型...