2018年6月27日 星期三

系統的維護與監控

好久沒發文就來分享一下最近在弄得東西覺得比較有趣了

最近在幫公司維護系統時最主要發生的問題就是


  1. 老闆很煩,整天問奇怪的數據分析,例如我們這個月有多少使用者用了這個功能,我們最近有多少人有High Memory, High CPU, 大概是多少,平均是多少
  2. 系統出錯只好拿log看看發生什麼事情
  3. 系統出錯了不知道
對工程師來說,後面兩點可能才是我們在意的

但對上層來說,第一點才是他們最愛問的

假如是平常寫的數據蒐集程式碼很難完美應付老闆整天變來變去的奇怪問題

每多一個新的數據,就必須要改code, compile, deploy 也是蠻麻煩的

再來就是系統也是出錯的時候才可能會送出通知,不清楚是什麼時候出錯的

要知道的話就必須要去拿Log來看看,又花費了寶貴時間在分析訊息

這時候有一個最近比較紅的東西就可以幫助了

所謂的 Time Series Database,專們存取時間性資料的資料庫

有了這個候我們就可以把各種單純的系統資訊都丟進去

例如:
CPU Usage, Memory, User Event, Request Hits
或是其他功能性相關的數據

資料庫就會幫你蒐集然後有提供很好的視覺界面和Query可以做出各種用途的Dashboard











像是上圖那樣,且可以為不同職位的人做出不同的圖出來



這種系統監控的Project可能平常在大公司工作的除非剛好碰到

要不然應該也沒什麼機會需要用到

而系統太小的話可能也還不用特別做一套監控框架出來

算是最近做的比較有趣一點的東西了吧


其他有幫助的還有如何有效率的運用系統Log

原始方法是要叫個Developer來看

好一點的可能有特別的爬檔程式來抓關鍵字

現在流行的是一種Machine Learning + Big Data的 Stack

ElasticSearch

我最近也要開始嘗試用用看,其實還蠻有趣的

他可以直接把原始檔案直接送到他的資料庫裏面

然後就可以用它做快速的搜尋和建立Index

然後也可以基於這些搜尋結果和Index也做出一個好看的Dashboard

算是整天看Log 苦不堪言的工程師小小的福音吧!




2018年4月29日 星期日

開發技術的選擇

由於公司人數少,對於新Project或是怎麼改進系統

我最近也可以參與討論和做決定了

最近我們討論最熱烈的就是

要自幹還是用現有的技術來解決問題?

吵來吵去最後的決定通常還是要回歸現實問題

哪一個決定可以帶來最多的Business Value?



不過撇開商業上的考量 (通常也不是我們工程師該考慮的問題XD)

到底哪一個決定好呢?



自己開發一個系統或是技術

好處就是最能符合自己的需要

使用上也符合公司的開發文化

可能上線的時間會縮短許多 (沒有了研究和整合的時間)

但壞處就是需要自己人去維護他

相當於多了一個需要工程師維護與觀察的系統 (工作量增加...)

還有就是可能開發的不夠彈性,功能只侷限在現有的問題

還有最重要的是,以後跳槽了別的公司沒有這項技術XD

假如其他公司都用某個熱門的開源技術,那就對職業發展有些不良影響


所以我個人覺得假如可以的話,現實情況允許的話

還是盡量選擇現有的開源技術或是熱門技術來解決問題才好

這樣才可以把資源都妥善運用在公司擅長的業務上

而不用花精力去維護多出來的一個系統

(我們有個笑話就是開發了一個Support Tool後我們還要再對這個Support Tool做Support Tool)

但當然假如公司夠大人手充足

願意花長時間好好規畫設計出下一個熱門技術

那當然還是自己幹一個比較好囉!


但假如是小公司或是新創公司

前期假如都是為了趕快趕期限

而使用了一堆自幹出來的技術

那最好要有精美詳細的Wiki或文件

要不然當員工來來去去

要重新訓練一個新人時

就會感到困擾了....


2018年4月11日 星期三

團隊與管理

今年開始工作上的內容也變了

很幸運被公司升為了小組長也開始帶人了

這可能就是在小公司工作與大公司工作的差別了

人力不足很容易就有貢獻可以升上去(但薪水沒怎麼變就是了...)



總而言之開始帶人後就發現這真不是一個容易的事情

好像也很少聽到別人分享這方面的經驗

我們工程師,對岸俗稱碼農,唯一會的事情就是寫Code了

叫我們面對2D人物還應對自如

當角色升維變成3D就開始很難溝通了....

尤其用英語更是很難表達出自己的意思啊!



當開始管理一個團隊時候,每一個人的能力各不相同

所以妥善分配事情讓團隊有效率的運作是不容易的事情

(現在真的自己寫Code的時候比以前少了87%了)

會遇到的人大概分成幾種


  1. 會思考的人 (Thinker)

    這種人就是會好好的想自己的工作該怎麼樣達成

    且會考慮效能以及未來擴充性

    假如團隊裡都是這種人應該非常強大

    可以迅速完成複雜的工作

    但通常這種人就是會比較不喜歡做重複的事情

    可惜一個Project 可能複雜的事情或是架構方面只占少數

    多的是實作以及無聊的工作

    所以要給這種人多一點能發揮強大實力的事情
  2. 一個指令一個動作的人 (Doer)

    這種人就是你叫他做什麼,他就做什麼

    你沒叫他做什麼,他就什麼都沒做

    所以假如你都把事情規劃好讓這位仁兄去做

    你就可以妥善的使用他了

    但期待你跟他解釋一個虛擬概念讓他找出解決方法就太為難人家了
  3. 不知道在想什麼的人 (Mediocre)

    這種人就很神秘了,你會不知道他到底來公司是幹什麼

    今天你跟他交代請完成A,過一陣子他會做一個B給你

    你覺得是基本的事情他拼命卡關問你

    你覺得是要詢問的事情他自己靈機一動然後做一個垃圾給你

    或是可能這個人常常不在狀況內到處打混摸魚

    且可能還會自我感覺良好

理論上大家的目標應該都是要成為第一類人

第一種人很聰明可以完成複雜的事情

這種工程師在有正常升遷管道的公司應該可以爬得很快

但事實上大部分的人應該都是會屬於第二類或第三類的人

(就算在大公司強者如雲的地方應該也是這樣
或是他們的第二類人在其他地方就已經是強者了)



這裡就要提到本篇主題,我老闆跟我分享的管理哲學

他覺得你的團隊不可避免的一定會是混雜的狀況

該如何好好運用所有人才是決定你的管理能力好壞的點

並且一個團隊的好壞

並不是取決於最強的那個人有多強

而是最弱的那個人有多弱




我覺得還蠻有啟發性的

畢竟一個Project 複雜的事情其實只要少部分的人去完成就好了

例如設計程式架構,可擴充性

或是說正夯的AI 所用的 Algorithm, Model

也是少部分的 PHD 去搞就好了

剩下的人就是要完成實作或是

Monitoring Tool, Clean Data,Saving or Parsing Data 之類的事情

所以假如團隊裡一直有一個人狂拖後腿

無法好好完成真正實作以及維護系統的工具

那整體效率可定是大幅降低了

2018年3月8日 星期四

工作之餘還能做什麼

很羨慕那些興趣就是寫程式的人

閒暇時間寫個程式做個side project當作休閒的人

我覺得才有可能成為所謂的技術大神


我反而下班回家就懶了

不如打打魔物獵人或玩LOL

想了一些點子想要作但又覺得有點複雜麻煩

或是進度非常緩慢


最近回台跟朋友聊天

他建議我沒事幹也是可以經營部落格之類的

他起碼會友情幫我按讚

聽到這句話感覺就熱血沸騰了....大概一天


不過想想也是繼續這樣魯下去好像也無法改變什麼

之後希望能真的稍為打起精神做自己的神祕project

順便記錄下來

雖然沒什麼人看

但可以自嗨也是好的

學校申請與準備

關於學校申請與準備,我以前太懶了所以準備得有點遭

幸好最後還能申請到學校....

最近剛好有參與一些分享活動發現了一些有趣得現象


老學長姊的建議通常都是:


  1. 在校成績一點都不重要
  2. 要看你興趣在哪直接去連絡教授,表達你的熱情
這些建議老實說是對的,但假如你不是想申請PHD

這些建議能起的作用非常小

所以參考了我上次與我朋友的討論,我們覺得應該要往這方面考量

(一) 假如你還是大一大二生

恭喜你,你還有很多時間可以好好地衝高GPA

在校成績真的非常重要,很多學校門檻都是要有個基本GPA

就算是PHD,很多教授還設標準要3.8以上

衝高GPA同時,也有很多時間可以好好的準備英文

把托福考高分也是很重要的

假如還有空的話看看能不能死纏爛打進入某個教授的實驗室

最好有辦法掛名一個論文成功發表出去

那申請學校的資料就很強大了

(二) 假如你已經快畢業了

GPA對你來說已經是定數了,人生不像遊戲無法重來

這時還是好好準備英文吧,考個托福破百接近滿分是非常有用的

英文這種東西還是要常講常看才能進步的

為了衝高托福成績,還是去補個習吧

(三) 準備好申請資料

基本上申請資料應該要相輔相成

推薦信的重點和讀書計畫的重點要能一致比較好

最近幫人看了申請學校的準備資料

有一點關於英文寫作的點可以講一下

在推銷自己時不要過於沒自信,讀書計畫裡面最好描寫得有自信一點

不要單純地用台灣人自謙的語氣直翻成英文

看起來非常的奇怪

(四) 聯絡教授

基本上我覺得你假如不是要寫論文或是要申請PHD

這個步驟應該根本沒用,但是人生會發生什麼很難說

多試一招也不會影響什麼

說不定剛好給你寄到評審委員之一他很欣賞你的積極也說不定呢