用自己方式存在的工程师 - TonyQ [中]

Bernard:有人说,当一个工程师,就要不断的学习。但现在可以学、要学的东西这麽多,单是前端框架就三、四个。对一个 junior 来说,应该如何选择要学什麽?是要更专注、还是要有更广的技能?

TonyQ:我一直都在学,但念书的时候学得多,累积得快,现在学得少,累积得慢。但现在学的是我以前学不到的。其实我觉得西瓜依大边,还是新手的必要之路啦!但有件事情要讲,我以前每一年都觉得我把能学的东西都学完了,但真的我到觉得好像都学完了,差不多是我开始写程序以後十年左右的时间,大约 2014 年吧。 其实写程序就跟穿衣服一样,每一季会有些不同设计不同款式的衣服,你可以几年换一次衣服,也可以每季甚至每天都换一次衣服,有点浪费就是。但穿衣服的品味,材质的选择,对潮流的敏感度,这些就是累积下来的东西。以此刻的市场来说。新手最重要的还是找到自己能作为基础的一亩三分田,啥都要学是不切实际的,找到一个 scope 约一到三年左右的一个小领域,足够应用到能找工作,同时也不会发散到过於挫折,我觉得是重要的目标。但真正重要的恐怕不只是技术,而是去思考你出社会这五年,你要在哪些商业领域打滚,台湾能做的事情跟以前比起来我觉得变少了,现在就是电商、博奕产业,演算法或工具软件的比例越来越低。我觉得职务的想像正在扁平化, 而且从业人员也多了,以前做这行的人没这麽多,讲起来都很特别。现在多了,要怎麽差异化就是个有趣的问题。

其实写程序就跟穿衣服一样,每一季会有些不同设计不同款式的衣服,你可以几年换一次衣服,也可以每季甚至每天都换一次衣服,有点浪费就是。但穿衣服的品味,材质的选择,对潮流的敏感度,这些就是累积下来的东西。

Bernard:那接下来这个议题是,我们碰到满多我们 ALPHA Camp 的校友,就是从一开始认识到现在已经三、五年了,他在业界也做到某一个程度,可能是一个senior,甚至team lead好了。他们很多时候就觉得,code 写得差不多,每年可能有些新的project 或新技术,去年用 Vue,今年老板要用什麽,我就去学。

TonyQ: 可以理解。

Bernard:这样好像有在学习、有在成长。但是感觉还是不踏实的。他们觉得自己还是在做类似的东西。因为我自己也走过。当年我第一份工作是 IC Designer。但当了四年我就不想当。相对於每天碰到的技术问题,我发现我对人更有兴趣。但是要离开自己的专业,事实上是困难的。当时我觉得有三条路可以选择:一、继续走下去,看看能不能往上升,从 senior 到 Team Lead 到总监再到 CTO。另外一种就是完全转行,去读个 MBA,然後就从此没有再做工程师。

TonyQ: 理解。

Bernard:最後,第三种好像比较像你,就是继续使用你的核心能力,例如你的程序能力,但是你去换个场景去做这件事情。我觉得这个是蛮有趣的选择。不知道你有没有碰过一些後辈,说写 code 写了四、五年了,自己也觉得差不多了,老板要他当manager,但他也不确定,有可能他觉得不太想管人。

TonyQ: 可以理解,有或是他觉得当管理压力比较大或什麽的。

Bernard:对,写 code 是最单纯。你打开电脑就是把自己想做的东西写出来,创造出来。

TonyQ: 哈哈,这要看工作。

Bernard:对。最近我们碰到还满多校友在思考下一步是什麽。他们一开始来 ALPHA Camp 的时候有点迷惘。後来成功转职成为工程师。但再快转五年之後,又开始有这种「我可以干嘛?」的疑问产生。你自己又经历过这种情况吗?对於这些人,又有什麽建议?

TonyQ: 我比较没有办法回答这个问题,这是因为我是一个对社会探索充满了好奇的人。如果你看我过去的经验,我常会做一些 side project,但会一不小心就把它们做太大。我其实也没有什麽期待,就是好玩。像我以前有一个曾经有四十几万人用的产品,是那个 Facebook 的广告社团检查器。以前不是会很常邀请人去广告性社团吗?

Bernard:是。

TonyQ:2012 年左右,卖鞋子的、卖衣服的,特别流行创造一些广告性社团,导购产品。有一次我在讲课时谈到 Facebook 的 API 可以干嘛,当时突然想到用 Facebook 的 API 可以做广告社团的监控。就是我们建立了一个公开的社团清单,如果有人发现哪些是广告社团,就把它标签起来。那不是就可以把所有广告社团过滤出来?然後喔就可以告诉你,你有多少个广告社团。就是一个非常简单的概念。那一天下课後,我就把它做出来。大家觉得这超有用,贴到八卦版,就一堆人进来,还把我主机搞挂。当天晚上就上苹果日报,接着那三天有四十几万人涌入。然後据说,隔了三个月之後听朋友传话说,因为我有把 API 分享出来,所以後来 Facebook 使用那个 data set,去训练他们的 model,然後就开始检查这些广告性社团。

这只是一个例子。我对世界充满了好奇,程序、工程能力是一种外骨骼,虽然我会说自己是个工程师,但我觉得我是有工程能力的人类。我做行政的时候,我是个能写程序的行政;当我做 manager 的时候,也是一个能写程序的 manager。就算是我去买票看演唱会好了,我也是个可以用程序能力去抢演唱会票的歌迷。

我对世界充满了好奇,程序、工程能力是一种外骨骼,虽然我也会说自己是个工程师,但我觉得我是有工程能力的人类。

Bernard:哈哈,这是个很有趣的思考角度。所以从你的角度来看,工程师只是一个型态,更核心的是那个工程能力。

TonyQ:对!它就是是一种「能力」。

另外每个人在社会都有一个角色,而职业是角色的其中一种。工程师如果做三、四年,不知道自己要干嘛,我觉得换个工作、换个领域,去体会一下,就会有不同的想法。其实我过去做个很多不同的工作,也从这些工作中学到非程序技术的能力。像我在房仲业的时候,我学到的是:「 喔,这个叫靶机!」原来在外面贴广告,上面的门号都是抛弃式的,因为怕被抓,被抓会罚钱。房仲都会买别人的靶机,反正罚不到当事人。

而我在台湾大车队学到的是:「喔,原来确保司机跟司机之间不会互相猜忌是非常重要的。」因为司机跟平台也是有一定的竞争关系,是所以在设计 APP 时,我们要确保乘客不会滥用一些机制,去让司机与平台竞争去,从中获利。我们设计的系统里其实有各种不同的持份者,所以我们要从不同的角度去思考。所以系统其实是大家的角力得到平衡的部分。

每个产业都一样,选举也一样,电商也一样。

Bernard:理解。

TonyQ: 所以在大部分情况下,因为我们的技术能力,工程师去解决这些问题,是最快、最稳定、最安全。可是我在这些产业里所学到的是,重点不是技术能力,而是你产业里的持份者,以及他们各自在乎什麽。

所以如果说你做了三、四年,觉得对眼前的东西无聊的话,很大部分不是技术上让你感到无聊的,而是你对目前参与的这个领域感到疲乏了。这个时候你就该换个地方。有两种做法,一种是换一样的公司,看是否会有不同的想像。如果你再换一间公司,发现感觉没有改变,大家都想的一样,那你就要去探索是否该换个领域。

反过来说,如果对你的产业的 domain knowhow 本身没有好奇心的话,你就很难持续下去。

所以如果说你做了三、四年,觉得对眼前的东西无聊的话,很大部分不是技术上让你感到无聊的,而是你对目前参与的这个领域感到疲乏了。

Bernard:的确。而 Tony 很明显你的兴趣蛮多样的。应该都你有很高的好奇心与学习能力,从房仲业到计程车平台。如果你对你在解决的问题的本身没有兴趣的话,的确就很难去做。但我觉得这些感觉也是有时间性。我在雅虎做了三、四年广告产品,後来又在另一家广告投放平台当产品长。一开始觉得很有趣,想好好的去研究,广告系统是怎麽追踪你的行为,又是如何让你点击广告的。结合「心理学」、「行为学」、以及科技的结合。

但做了三、四年之後,就觉得我学够了。

TonyQ:因为都差不多了。就是你已经抓到了这个产业的要诀了,你已经看够了。

Bernard:没错。那回头来说,你自己的职涯有经历过什麽瓶颈吗?你又是如何克服的?

TonyQ:挫折是一直都有,但没有觉得会动摇自己在这条路上的信念耶。 我其实会做的事情不多,我以前会打保龄球,以前可以带团康,以前可以办活动,但现在很多技能我都落後了。 我可以说,我就最擅长写程序这条路,我可以一直写下去,但扣掉写程序,说真的我也不知道我还用什麽赚钱。(笑) 所以我没想那麽多,反正我就喜欢写程序,也写很久了,觉得可以惯性地写到我再也没办法碰键盘吧。(再笑)

Bernard:那麽你目前还在学什麽吗?

TonyQ:管理。团队管理、目标管理、工程管理。试着规划很多人的生活,决定很多人的目标,我觉得是一个需要兢兢业业,而且我还远远算不上成熟的工作。

Bernard:作为一个工程师,你个人觉得自己最骄傲的成就是什麽?

TonyQ:我觉得还没找到自己最满意的事情耶!我做的很多事情都影响很多人,我希望他们会由於我做的事情,变得更好。但同时也是有些人是没办法被照顾到,凡事都是取舍。我也不是真的很想要去追逐什麽成就,就只是觉得既然该做就做。(笑) 你问我的话,我目前对自己最满意的,大概是每天早上起来可以感到安心,睡觉前虽然常常觉得还有好多程序想写,但终究可以甘心地闭上眼睛迎接另一天。我觉得这样的日子很好,我很喜欢,也很自豪。

第二部分关於 TonyQ 对於新手与资深工程师的阶段思考,在此告一段落。下一段将谈,TonyQ 怎麽看学历、职涯规划与人生目标。


<<:  [DAY 27] 复刻 Rails - Routing 威力加强版 - 1

>>:  Day[-4] 今天我想来点Kibana的Map Chart -4

【Day26】Function Component 生命周期 & Hook (´・∀・`)

讲到Function Component 一定是会讲到Hook的! Hook 让我们可以不用改变Co...

Dat 27 Transformer

我们先来回顾一下,我们之前介绍了 RNN ,而它的架构就是输入一个序列,得到另一个序列。但是它有些致...

来做一个跟屁虫镁光灯

标题听起来很厉害(?),不过今天只需要认识一个 Web API - Element.getBound...

[day-7] 在正式开始写程序之前,先来认识电脑本身吧!(Part .2)

前情提要 昨天 [day-6] 大致介绍了,电脑的起源与相关发展史,相信各位读资讯或是商业领域的人应...

DAY15:玉山人工智慧挑战赛-中文手写字辨识(Pytorch 自订义资料集)

资料扩增 我们组的资料扩增这部分,因为第一次比赛,这个方法效果没有到非常好,采取的是用mask的方式...