[访谈记录] 自身兴趣和实作 在工作上找到归属感与成就

章节连结

AlphaCamp 第二学期的第三份访谈,幸运的请到一位自高中时期认识的神人朋友,来聊一下他的程式学习历程。

interview laptop cafe


相关访谈


1.什么契机下开始接触程式?

小学的时候有去资策会上过 RPG 制作大师的课程,使用这个软件来制作 RPG 游戏,算是写程式的入门吧。其中我觉得比较重要的是“开关”、“事件”系统,让同一个 NPC 能因应玩家的游戏进度,而有不同的应对。除此之外也有参加国语日报举办的 Visual Basic 课程,这才算是进入比较正式的程式设计的领域。Visual Basic 在 UI 接口设计上的所见即所得相当直觉,很适合作为 GUI 应用程式的入门。
虽然高中的电脑课有教授 C++,但是真正深入学习程式设计应该是大学之后了,其中让我印象最深刻的应该是网络与多媒体实验。它是系上十选二选修实验中份量最重的实验之一。我在这个实验中主要使用 C# 进行开发了一套即时通系统、Windows Phone 手机游戏、Kinect 体感互动游戏,让我对于 GUI 程式设计开始有比较深入的认识。而我也以此为基础,开发了一些 Windows Phone 的应用程式并且上架让人下载使用,获得了些许的成功。
硕士班的时候加入了分布式系统实验室,毕业论文也是分布式系统相关的主题,主要是透过规划快取的方式让加速分布式系统的资料处理速度。一般来说,处理已经存在于内存内的资料相对于处理在硬盘中的资料速度来得快,因为内存的速度远快于硬盘,但是内存的容量有限,因此如何有效的运用内存空间便成了重要的课题。在我的硕论中提出了如何有效规划快取的方式,而也成功的减少了资料运算的执行时间。

2. 目前工作的产业及职务内容?

目前仍在学,故以之前在 Facebook 的实习为例。我在 Facebook 内属于后端的组别 Realtime Data Team,其主要工作就是监控 Facebook 内部的软件服务、硬件资源。举个例子来说,我们会在内部服务中蒐集数据,例如服务的 CPU、内存用量等,将之显示于即时图表上,此服务开发者可以设定一些警告,例如当 CPU 用量达到 90% 以上时就会发出警告等。我们组内有很多服务跟工具来进行整个 Facebook 基础设施跟内部服务的监控,我们的工作就是维护这些服务、并且进行更进一步的开发和修正。

3. 坚持在工作上的动力是什么?

除了薪水(笑)之外,大概是成就感吧。不论是从无到有把一个服务、产品做出来,或是针对现有程式在效能上、使用上的改进,每达成一项任务都是很有成就感的。


4. 你认为大家普遍对工程师工作的误解是?

或许台湾人对软件工程师的外表普遍是这样理解的:
engineer IT

不过在美国(尤其是硅谷)的软件工程师大概如下文所描写的:T-shirt、帽T和牛仔裤,且热爱他们的工作的一群人。
“The T-shirts, hoodies, jeans — you still see a lot of that, especially with coders and engineers,” said one tech contractor who works in Silicon Valley. “They’re really proud of where they work, so there’s a lot of company logos.” Lee, A. (2019). The Evolution of Silicon Valley Chic.

5. 前职需要与他人大量接触或是合作嘛?

大量合作应该是不太会,但是和组内的合作不会少。首先先介绍一下开发流程:
1. 写一段新的程式/修改一段程式
2. 测试
3. code review
4. merge

通常在开发新的服务或是在现有的程式中要引入别组开发的服务时,往往最快上手的方式就是直接去问要如何将他们开发的服务整合进来。Facebook 有个员工专用内部网站,可以直接到不同组的群组中发问,而该组在 oncall 的人会负责回答。除此之外,如果修改到别人的程式码时,在 code review 时往往会需要原始作者加入来确认修改不会影响到现有的功能。

6. 如何认定自己已经掌握一个新技术?

我自认没有掌握过什么技术,只能说有这些经验而已。
我觉得要能够掌握一个技术,应该是要从最底层到最顶层都要能完全了解,而最好的方式应该就是从头开始自己土砲,毕竟全部都是自己写的。但现在的环境有太多现成的东西可以使用,从头自己土砲相当于重新打造轮子,不但没必要且费时。
不过在使用这些现成的轮子时,往往会有很多细节藏在你看不到的地方。毕竟这些轮子并非自己所写,常会有意想不到的状况发生。

按赞加入粉丝团

延伸阅读