在泰国曼谷做开发是怎样一种体验?

在这篇文章里,我将要分享我在这里度过的典型的一天是什么样的。如果你对一个自由开发者的生活随想不感兴趣,我提醒你看到这里就退出去吧。

这个“典型”的一天是广义上的一天,在我实际经历中,跟我描述的事件顺序可能会有些出入。如果你想变成一个软件工程师,你可以看看实际中我们的日常生活是怎么样的。

自我介绍

在开始讲述我的日常生活之前,让我自我介绍一下。我的名字叫 Thibault Denizet,我是一个法国人,现在居住在泰国。我目前在Playlab(泰国一家移动游戏开发商)工作。在我的职业生涯开始之前,我在法国波尔多的 Ingesup 学校攻读硕士。我大约在六年前就开始做开发了,但是我在最近三年才成为一个全职的开发工程师。

在空闲时间,我在自己网站“Samurails(武士)”上写一些文章。也会写一些关于创建模块化应用的书。(比如《Rails应用的组成原理》),所以如果你正在研究这些就别犹豫了,快来看看我的书吧。

我住的地方

像我之前说的那样,我在泰国的首都曼谷生活和工作。这是一个适合生活的美丽城市,而且这里的科技也在持续发展。看到这些变化我非常高兴。这里需要越来越多的开发工程师,所以如果你正在找工作而且你喜欢亚洲,来这里试试吧!

我第一次来这里是五年前,后来由于实习,回去了一阵子。最后在两年前,我彻底移居到了泰国而且一点也不后悔这个决定!我爱这里!这里的人和生活都非常美好,在这里我有机会做我想做的事情——创造!

我的工作

要搞明白我接下来要讲述的一天,这部分很关键。我工作在一个叫Playlab的公司,我现在是一个后端软件开发工程师。Playlab是一家手游公司。如果你喜欢消除类的游戏 ,你应该听说过“Juice Cubes(水果方块)”。这就是我们公司做的!

后端团队的工作就是为手游创建接口,处理运行任务,开发可用的分析工具。我们使用的语言工具涉猎很广,包括Ruby on Rails、纯 Ruby、Node.js、PostgreSQL、Cassandra、Docker等等。

Playlab是一家不错的公司,面向上百万的用户,充满挑战,环境很棒!

典型的一天

介绍很多了!是时候“参观”我的一天了,旅途愉快!

07:45

由于我比较懒,我经常在7:45—9:00之间醒来。因为我的工作时间是灵活的,所以在头一天睡的很晚的时候(当然是去聚会啊!)第二天10点去上班也是没问题的。

我从来不早起,所以我几乎没时间做别的,一起来就去工作!我乘坐BTS——曼谷的地铁去办公室。不幸的是,车站有点远。不过不用担心,我可以乘坐计程摩托车5分钟到达。正好它超便宜(大概半美元)。噢!不过它也非常危险!

09:00——一天开始了

每当我到了办公室,我就会拿到一份由很多水果蔬菜现榨的新鲜果汁,加入了胡萝卜、芭乐、番茄、甜菜根、菠萝和苹果。这是我的能量鸡尾酒,是我美好的一天的开始!

然后我坐电梯去办公室。先开机检查邮件。当然,邮件里没什么有意义的东西,因为整个公司都用HipChat(工作宝,一个移动协同办公平台)交流。除了机械式的报告之类的东西,邮件没什么大用。我们遵循Scrum(一种敏捷开发框架)项目管理理念,使用JIRA(项目跟踪管理软件)来追踪每个人做了什么。我们直到最近才开始使用Trello(一种协作办公工具),我非常喜欢用Trello。然而Trello没有燃尽图和场估计,所以我们又迁移到了JIRA。

读完无聊的邮件后,我通常会查看下JIRA,看看别人都在做什么:知道你的同事在做什么是个很好的习惯!它能让我看到等待审查的的代码合并请求。这就是通常我接下来要做的事情!

合并请求审查是Playlab公司的开发流程中非常重要的一部分。它不仅提升了代码质量,还有助于整个团队的合作!

接下来,我要真正的开始工作了。我的开发任务一般都和我们的微服务或者分析系统的维护相关。我基本上完全使用 Ruby 来开发,但是我们使用的语言不局限于 Ruby,我们只是选择最适合的语言来开发。不管我们的任务是什么,我通常会先为我要写的代码绘制一个基本的草图,找到实现它最好的方法。在这个画草图的过程中,最好的方法就会显而易见。在我真正写代码之前,我会先写一些规格参数说明。

测试用例是非常重要的。以前我不写任何测试用例,所以我不知道怎么避免在后续维护的过程中破坏其它代码。而且,你所在的团队越大,参数规格说明就会变得越重要。由于你担心破坏系统的安全性,你不敢贸然重构或者升级代码。写测试用例可以避免这些问题,能确保你在重构或升级代码的过程中不会破坏系统。所以不管你的这块代码重要不重要,都要写测试用例,总之写就对了!

新建了一些Ruby类后(我喜欢到处使用PORO),写参数,重构代码确保我的代码能让我看着舒服,然后提交到Github上,创建一个代码合并请求并进行简洁的描述。当有人提交一些东西或者创建代码合并请求的时候,人们通常会在HipChat上收到自动通知,但是提醒一下那些项目专员也是极好的。

好吧,这一个小时描述了很多事情,因为我想尽可能准确地解释我正在做的事情。但是我没办法把我的实际编码过程讲得太具体因为它每天的内容都是不一样的!

10:00——完全清醒了

10点到了,合并后的代码的修改进行了一半。没有什么大的改动,但是确实做了一些能够改善代码的优化工作。

这个时候大部分Playlab里的成员都到齐了(工作时间灵活),我通常会一边喝咖啡一边跟一些后端团队的成员聊天或者告知游戏的产品设计师已经完成了他要求的一些更新。

11:30——每日站会

我们遵从Scrum方法论来评估和提升团队质量。说实话我不是特别信任整个Scrum的理论。我接触它有一阵时间了但是我做不到完美地应用它:我们最后总是沦为了Scrum-but形式。我简直不确信它真的有帮助。可能因为我们同时工作于多个项目,涉及到各种不同的事情:运行、分析、服务……如果你有一些应用Scrum的经历,告诉我你的感受是什么!

然而我觉得Scrum一点好的地方就是每天的站会。去听听别人在做什么,是否他们遇到一些问题是非常好的。这是快捷有效的!

12:00——免费的午餐

到了中午就是吃午饭的时候了。此时此刻谁都不想晚去,每个人都冲向餐厅去抢厨师烹饪的美味的泰国菜。我们通常吃米饭(欢迎来泰国)和两三个泰国菜。这里还有沙拉区。

午饭后,有很多有意义的活动:小憩、打乒乓球,玩PS4(游戏机)……或者只是返回电脑旁继续工作!

13:00

休息过后,是重新开始工作的时间了!我们在13:00安排了团队代码审查,所以这个时候该走进会议室讨论代码了!

团队代码审查是不长于一小时的会议,团队中所有的成员都要去审查一个新的项目或功能或者一些大的更新。这通常是一个提前安排好的工作所以每个人都能很快地了解项目的具体情况。这个会议中经常会提出一些改善项目的新点子。

14:00

我今天上午安排的任务被团队中的一些成员审核通过了,所以现在是合并代码的时间了。这是这个功能的开发中第一次从我创建的分支上合并代码。 我们在使用持续集成工具,这意味着一旦我在开发中合并代码,我就需要把代码上提交到预演环境准备被这个平台的团队审核。为了能自动地测试和提交代码,我们使用CircleCI(一个开发测试平台)。

CircleCI负责创建运行应用程序的Docker(一个应用容器引擎) 容器。Docker一个非常好的工具,去看看吧!

因为我的代码现在部署预演环境上,我要把我的任务从JIRA上迁移到预演环境栏。接着我要通知平台团队的一些人这个功能在预演环境上可以运行,然后他们可以在有空的时候去测试它。

15:00

测试这个功能需要等一段时间,不过不用担心,我还有很多其它任务。然而当我正打算开始一个任务时,一个产品设计师找我商量一些关于安装游戏分析工具的事情。关于这个问题我们已经进行了修改,修改后的成果会在下次(第二天)我们的分析流运行的数据中体现出来。他问了我一些问题,我们聊了一会儿关于分析结果的问题。

16:00

这是我幸运的一天!平台团队已经通知我这个功能可以正常工作,Q/A团队现在正在测试它。在接下来仅仅将开发代码合并到分支上就能把它发布在生产环境上。太棒了,持续集成工具!

17:00

我最后在抽空做一个关于创建我们Ruby on Rails软服务的Dockerfile 的新任务。Dockerfile 用来生成Docker容器而且在应用容器被提交到我们的服务之前被写下来。我不经常做运维相关的工作(我们有专人做这个)但是我们团队最近开始努力地拓展我们的知识面尽量不去打扰运维组的朋友,尤其在简单的事情上。

因此,我正在创建一个Dockerfile 。那可能不是最有激情的工作但是它非常重要,有时我们必须要做这些事。正好,我可以在其它Dockerfile 中重复使用一部分东西,所以这个也不难。开始做这个,我只需要更新项目中的CircleCI配置,定义应用应该部署的位置同时需要建立一个Docker容器。现在这个应用在预演环境上可以运行了,我启动服务后可以很快地看到“fleetctl start myservice.service! ”

18:00

好了,我的一天结束了,我明天将要部署一个新的应用在生产环境。是回家的时候了,所以我又花了30泰铢乘了一个计程摩托车、乘坐BTS回到我的公寓。我的第二天仍将从这里开始。

我一回到家,我会戴上我的武士帽,开始写文章!但是首先,我喜欢检查分析器去看看博客流量,获得一些动力。我也会回复我收到的所有邮件或者检查我的博客上的内容。

19:00

这个时间没有什么关于技术方面的有趣的事情。我经常会吃晚餐((像 bami moo deng,泰国的一种美食 ),看一些电视节目。

บะหมี่แห้งหมูแดง – Bami Moo Deng

20:00

接下来的两个小时,我会继续在Samurails上写东西。可能在博客上写一篇新文章,回复一封新的邮件或者写一本新书(比如说《掌握Ruby网站接口》),这些内容每天都不一样,根据我的日程计划来。

22:00

一天在办公室和家的辛苦工作后,到休息的时间了。我通常会用我的ipad读一些文章或者看一本书。也可能只是玩一些游戏比如 Super Smash Bros(任天堂全明星大乱斗)或者玩一个叫 Dungeon Link(地牢链记)的神奇的手机游戏——这个游戏让我上瘾!

我也非常喜欢创造!这些天,我喜欢玩单片机,但是我也喜欢玩高达模型或者玩乐高积木!这可能听起来有点幼稚,但是这是让我有机会远离电脑创造真实的东西的一种方式。(同软件相反……)

我在睡前喜欢读一些小说。这些天我喜欢弗兰克·赫伯特的小说《沙丘》。

00:00

到睡觉的时间了!明天会有新的“冒险”,再见!

结束语

就是这样。这就是一个在居住并且工作在曼谷的程序员“典型的一天”。

本文文字及图片出自 伯乐在线

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注