在泰國曼谷做開發是怎樣一種體驗?

百焱發表於2016-07-13

在這篇文章裡,我將要分享我在這裡度過的典型的一天是什麼樣的。如果你對一個自由開發者的生活隨想不感興趣,我提醒你看到這裡就退出去吧。

這個“典型”的一天是廣義上的一天,在我實際經歷中,跟我描述的事件順序可能會有些出入。如果你想變成一個軟體工程師,你可以看看實際中我們的日常生活是怎麼樣的。

自我介紹

在開始講述我的日常生活之前,讓我自我介紹一下。我的名字叫 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

到睡覺的時間了!明天會有新的“冒險”,再見!

結束語

就是這樣。這就是一個在居住並且工作在曼谷的程式設計師“典型的一天”。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

在泰國曼谷做開發是怎樣一種體驗? 在泰國曼谷做開發是怎樣一種體驗?

相關文章