Posts Tagged ‘職場’

【碎碎唸】當SOHO與上班族的差別

Wednesday, January 19th, 2011

今天一早,發生了三件從來沒發生過的事:
1. 第一次有使用者在我開發的iPhone App留下評價及建議
2. Google總公司的HR找上了我,想要建立聯繫
3. 過了15年之後,再次跑到籃球場打籃球

自從去年12月毅然決然離職了後,就一直在家休息(or 工作?)到現在。這段當米蟲的時間,跟過去一樣在當米蟲的我已經有很大的差別。大學畢業後那一年為了等兵單,在家整整當了一年的米蟲過。那段時間我除了吃飯、睡覺、出去覓食,剩下的時間就是整天打星海、魔獸、CS。看起來過的挺爽的,但是當時並沒有什麼人生目標或想法。現在回想起來,的確是有點浪費人生~ 過了10年了。10年,對一個人來說真的不算短。很多年輕時說不想做或永遠不會做的事(例如:結婚、開瓦斯爐…~”~),結果都發生了。到今天為止,剛好當了一個半月的米蟲,跟過去當過一年米蟲的時間相比差遠了。但是,我在這一個半月過得很充實、很開心,並不是漫無目的就渡過了。

從以前,我就一直很想當SOHO。為什麼? 答案很簡單 – FFFFFFFRRREEDOMMMMMMMMMMMMMMM!!!!!!!!!!!!!!!!!!!!

人若失去了自由…… 那還剩下些什麼? 噗~ 這樣講是有點太嚴重了啦… :mrgreen: Any way,自由,對我來說真的很重要! 大概是我遺傳自我那藝術家老爸的性格吧,不喜歡被綁手綁腳的。今天早上起床後,照往常一樣去看看Facebook粉絲專頁和iPhone App的銷售數字。銷售數字一樣是很難看 XD,不過去點了我的iPhone App的下載頁面看看,居然看到第一次有使用者留下評價,而且還是5顆星! :shock: 。這讓原本幾乎想放棄繼續做App更新的我,又重新燃起了希望。不是因為App終於有賺到錢了,而是因為有使用者真的覺得這App對他有幫助。這代表什麼? 這代表我真的達到我的目的了 - 做一個對人類真正有幫助的軟體/服務。這個目的聽起來有點太偉大了點,但我是真心這麼想的。

由於我不生小孩,所以常常被爸媽或朋友這樣問:「你不生小孩傳宗接代,那你到底想做什麼事? 老了沒人照顧怎麼辦?」。
我幾乎都是這樣回答:「我想做一個對人類真正有幫助的事,一個軟體,一個服務。例如寫了一個有趣的應用程式,如果有使用者在心情煩悶的時候因為用了我的程式後,變的很開心把煩惱暫時全部忘掉。那我就達到目的了。」。

這個想法,我也說了好幾次了,很慶幸我老婆沒有笑我在作白日夢,而是還蠻認同的。這對我來說蠻重要的,如果連身邊最親密的人都覺得這只是一個蠢想法的話,我想我也不會有勇氣與力氣繼續走下去。親愛的老婆~ 謝謝妳!! :cry: 我並沒有覺得自己像國父孫中山那麼的偉大,要發動革命,改善人民的生活。又或是像愛迪生發明了燈炮,讓人類永遠不再陷入黑暗之中。我想做的只是一點點對人類小小的貢獻,但即使很小,它仍是個貢獻。所以,我想當SOHO,做我自己想做的事,我覺得對的事。

看到這位App使用者的建議留言後,我覺得可行而且也不難改。二話不說就在一個小時之內,完成了修改、測試、上架了。我很重視使用者的建議和評價,即使今天這款App並不是賣的很好,但如果有使用者真的喜歡它而買了它,我就該誠心誠意的付出,做出令使用者滿意的功能。也許有人會覺得我很傻,幹嘛為了只有幾個人在用的東西花這麼多心血? 又賺不了什麼錢。但我不想讓我做出來的東西是個半調子,我應該要對自己的作品負責。我沒辦法忍受明明自己做的到卻擺爛的東西,這也是為什麼我很討厭接案的原因。因為,接案有時間壓力,做的不是自己的東西。有時候真的沒辦法,覺得這樣做並不好、很蠢,但還是得這樣做。沒辦法,總是要交差、要糊口,有些事要睜一隻眼閉一隻眼。但,我並不想成為那樣的一個人!! 我相信自己的能力雖然不敢說有多強,但應該有水準之上,至少我有不斷自我學習的心態。所以,我想當SOHO… 一個不接案的SOHO。我沒有什麼錢,沒有什麼顯赫的家世,沒有什麼人脈。我有的,就是我的熱情,我的能力,我的態度。

當SOHO的好處是,我不必看別人的臉色。不必經過漫長的開會、討論、修正、再開會這樣的循環。我要做的事很簡單 – 評估,做或不做,小改或大改,完成。我應該是十足的工程師性格,一切喜歡簡單、有效率,不想跟一堆人勒賽勒半天。也因為流程是如此的簡單,所以可以在一個小時內就完成可能在一般公司要花兩到三天才能完成的小修改。但我並不是要說,在大公司上班就不好。在大公司上班也有它的好處,好處是有比較多人可以討論、給予意見,資源也比較多(這是我的痛處 :sad: )。但意見多,代表要多花時間過瀘可行的辦法,資源多代表要花更多時間與別人溝通,各有利弊。另外,在大公司上班的話,就沒辦法像我東西做到一半,想跑去籃球場打籃球,就去了。在公司上班不可能這樣,就算表面上說可以,可能也會遭到其他同事、主管的異樣眼光,覺得你是不是上班都在打混。這就是我在前一家公司雖然說有提供騎馬機、按摩椅、Wii等,上班時間累了可以自己去玩,但我從來沒看過有人去玩過的道理。大家都不想被白眼,雖然明明這是公司的福利沒錯。在台灣,我不相信有公司真的可以開放到這樣,也許是我沒見識到吧。如果真的有,我想大概也只有 – Google 吧。

在很久以前,就在科技雜誌上看過有文章介紹Google這間公司,他們的企業精神是…….. 呃… 抱歉! 我只記得一條,也是我印象最深的一條 – Don’t be Evil(翻成中文是,”不要犯賤”,阿~ 不是啦,是”不要作惡” XD)。說真的,有誰會去記公司的企業精神標語啊,除非有老闆會緊迫盯人随時會抽問員工吧 XD。可是,Google這條特別的企業精神”Don’t be Evil”,我真的記得了很久,而且常常會想起。例如去年有一陣子Apple要告台灣宏達電Touch Panel技術侵權時,我就想起了這句話”Don’t be Evil”。很顯然地,在Apple並沒有這個企業精神,他們遵守的應該是”會賺錢的人,才是老大”。”Don’t be Evil”這句話告訴了在這間公司所有任職的員工,不管是總經理、PM、工程師、Sales、打掃的阿桑一件事 – 無論如何,不要作惡!! 即使你知道某件事這樣做會對公司的銷售數字不好,股價會下跌,產品時間會Delay,你還是要”Don’t be Evil”!! 做你認為該做的事,對的事,晚上睡覺不會作惡夢的事!! 我很佩服Google有這個Guts敢用這個企業精神標語,所以我真的蠻欣賞這間公司的… 因為這句話。即使他在網路界被Facebook打到有點喘不過氣,在手機界被Apple打到亂七八糟,在OS界被Microsoft壓的死死的,即使我現在雖然在寫Apple的iPhone應用程式,但他仍是我最愛、最支持的一間公司 ;-) 。他是一個好公司,我深深地這麼覺得…

今天早上發生的第二件事,也就是Google總公司的HR在Linkedin這個工作人脈網站,看到了我的profile,寫了一封信給我想與我建立聯繫。信裡說,未來如果有台灣地區適合的職缺,”也許”會找我去談談。前一晚睡覺時還在跟我老婆聊說看到我的profile這陣子有被一個在Google工作的人打開看過,不知道他們會不會找我去上班 XD。可是心裡其實是在想,應該不太可能吧,可能只是剛好路過看一看而已。參加過以前Google在2008年辦的開發者大會,看到那些在台灣Google上班的工程師演講者,幾乎都是待過國外名校的洋博士。看過資料,在Google上班的員工有接近一半是博士學位,一半是碩士,剩下不到10%才是大學畢業。所以,怎麼想都不會想到Google會有想找我去的念頭。我雖然碰過許多技術和領域,但在各個技術領域中只能稱的上中上的水準,應該稱不上頂尖。不過頂尖的定義,會隨著每個人的認知而不同。也許有人會覺得,在這個領域中懂80%以上,可以完成各種不同的需求,不管你用了什麼方法,這樣就稱得上非常好了。如果說我有過人之處的話,我想應該是我的創新能力、實踐力吧,但絕對不是技術能力。印象中,在Google上班的工程師不是像這個做出在Browser也可以玩Quake II的變態 :shock: ,就是像設計出Google Map那樣一大包完整API的可怕人物。我,跟這些人比,就像一隻螞蟻吧….. :shock: 。但,也許我也可以!!? 只是沒試過,所以覺得很難!? 到目前為止,在我前三家任職的公司裡,我的能力常常受到老闆、主管的肯定,總是做出令人Amazing的東西來(抱歉~ 不自覺想落落英文 XD)。如果到了Google,也許我還是一樣,可以做出讓大家Amazing的東西呢!? 套句金鋼狼他哥的話 – 「沒死過,你怎麼知道你不怕死?」 XD。

寫到這裡,我還沒回覆那封信,因為我想留到最後一刻,想的很清楚了,才好好慎重的回他。內容不用講,當然是我願意100%,無怨無悔的去Google上班,即使它在101大樓的八十幾樓,而我有懼高症,而台灣又常有地震…………………….. Orz (說真的,如果去的話,我想問說可不可以讓我在一樓或二樓低樓層工作? ~”~)。我真的不是全都為了錢,雖然我知道Google的高薪令許多人稱羨,但那不是最重要的。最重要的是,在那裡,我可以自由、完整、全心全意得實現我的理想。也許那裡並沒有我想像中的那麼好? 不然為什麼還是常常聽到有人從Google跳去Facebook、Twitter、自己創業…etc.。但,沒試過,怎麼知道? 不過,這一切根本都還沒發生,也許加完聯絡人、面試完後,就謝謝再聯絡了。但,至少這證明了一件事 – 我的能力、我的作品、我的經驗引起了Google的興趣。即使沒順利進入Google,我仍會更有自信、相信自己辦的到想做的事,讓我更有勇氣繼續往下一步前進。好了,不說了,碎碎唸太久了(已經寫了三個小時停不下來 :shock: ),我該去回覆那封信了。免得讓人家以為我太高傲或沒興趣不想理他。

That’s All~ It’s a good day to die! :mrgreen:

一個好的程式設計??

Friday, September 17th, 2010


電影「駭客任務」裡面有一句台詞,尼奧問: 「What is Martix?」,莫斐斯:「Martix is a CONTROL」。
而我覺得程式設計也是如此,一個好的程式設計 = 一個好的控制流程

今天在debug一個UI錯誤時,看到有一些code真的快讓我吐血。重覆的code出現了好幾次,一堆event跳躍式的控制寫法,一堆例外處理判斷。上面講的都是寫程式時的大忌。

一個好的程式碼除了要段落分明、格式清楚外(這是基本),更要避免不斷重覆的code出現。如果一段類似的程式邏輯出現兩次以上,你就應該要把它寫成function。這不是每個寫程式的人都應該具備的基本知識嗎??…… ~”~ 為何我還是不斷看到這樣的code出現,這是要我…………. 怎麼教?? (教這個好像在羞辱人一樣….. ~”~)

而在處理event時,儘量要統一在一個地方處理。不要一下子換這段處理,一下子又跳到那段處理。這會讓人搞不清楚,到底這個event收到時,真正是在哪裡被做。如果是一個複雜的event處理邏輯,可以在class object內定義一個global flag變數去control,也總比到處綁callback function再拿掉好,雖然在object內用global變數其實也是不太好的做法。

而處理一段邏輯時,最好將所有的可能的情形先做分析,做一個統一並且一致化的處理或設計。才不會一下子漏了這塊沒想到,補一補,一下子又漏了那塊,再補一補。這樣補下來的結果,只會讓程式碼變得非常複雜難以理解和除錯。

除了上面提到的這些,在做模組化(Modulize)的設計時,要儘量避免不同的程式模組彼此相依的設計。若要溝通,最好透過一個中介層或API處理。這點尤其是在寫底層library時尤其重要。若一個模組的code切不乾淨時,也是會造成日後maintain上的困難。

這些,學校老師不一定會教,我也是這幾年工作慢慢累積這些經驗的。這些原則,說起來沒什麼,可是很多人往往就是做不好。我覺得一個好的軟體工程師要自己會去想,自己去反省過去寫過的code的優缺點,這樣程式的功力才會進步。最好要時時刻刻把這些準則放在心裡,不要想說為了貪圖一時的方便,而用比較投機的寫法,這是不對的。

最後,發表個感言:
如果你問我:「程式設計對我而言是什麼?」
我會說:「程式設計對我而言,是一個帶領人們進入神奇國度的東西,是一個好的控制,一個控制的藝術」

新工作

Tuesday, April 7th, 2009

4月1號,我進了現在這間新公司。選這個日期不太好,是愚人節。但這並不影響我對這家新公司及新工作內容的期待。這家公司是做網路資料搜尋、訂閱的軟體,有跨國的Business,是間還不小的網路公司。進來的第一天,跟老闆、主管、Leader、Team Memeber一起吃了飯。從聊天中感覺出他們都是還蠻好相處的人,不會有那種老闆、主管的架子。第三天禮拜五的下午,跟著Leader一起開了個中型的Project Meeting。見識到每個人敬業的態度,也認識到老闆是個怎麼樣的人。老闆是個蠻有威嚴,說話有條理的人。而且就算員工有一些做法有問題,也不會直接當場破口大罵,而會尊重員工的想法,給予一些建議。姑且不論公司的產品賣的好不好,從這次會議可以感覺到,這家公司的每個人都是很戰戰競競的面對自己的工作,扮演好自己的角色。當時心裡的OS是:「嗯! 我果然沒進錯公司」。

今天禮拜一,下午開了個慶生會。全公司的人都集合到一間大會議室,桌上擺著玲瑯滿目的餐點,有竹筒飯、肉包、宜蘭蔥花餅、綠豆湯。而我根本忘了還有新人要自我介紹這件事。被人事小姐叫上去自我介紹時,一時間頭腦一片空白。只想到:「我是xxxxx的新手下,我喜歡打電動」的這種怪介紹 XD。害得大家你一言我一語的談論起我來…。不過,any way…我的目的有達到了,我想給大家知道我是個蠻隨和、會帶給大家歡樂的人。除了慶生會外,今天一整天主要是主管幫我上了整整一個下午的課。主管喜歡講東西講到一半會自己笑了起來,有時候會令我不知道怎麼反應好,只好陪著笑。不過,還好,主管感覺也是個蠻好的人。就拿他願意花整整一個下午幫我上課這件事來看,就不錯了。有些主管是那種丟了文件、程式碼給你,要你自己看自己摸熟。也不是說這樣的主管不好,只是會令人感覺難以親近的樣子。主管除了介紹公司的軟體、歷史、機制以外,還講了一些他們的經驗及做事的方法。So…主管給我的感覺是,他很Care每個進來的新人,一定要親自Traing。就算花再多時間,也讓新「手下」認識到整個Team做事的態度跟方法。

我的新Leader,是個程式功力也蠻強、有程式潔癖的人。看了一下他所寫的code,真的,很乾淨很清楚。幾乎每個function、每個變數都有寫詳細的註解。連我覺得自己對code format的要求已經很高了,還是比不上他。與我之前Leader的風格相比,還差蠻多的。而就程式功力來說,跟以前的Leader相比,老實說,我還不敢講誰比較強。我已經覺得以前的Leader非常非常厲害了,應該很難再找到一個可以匹敵的人。沒想到,新公司的Leader一下子就顛覆了我的想法。真是一山還有一山高,果然,這世界還是有很多值得我學習的人事物。這幾天觀察了一下Leader做事的方法及對待下屬的態度,感覺跟以前的Leader有點像,是比較開放型的。不過感覺得出來很多事情還是有他的原則在,像他覺得這個技術是下屬是應該要學會的東西,他就會堅持讓他用這種方法去做。對我來說,應該還蠻合我口味的,感覺很多想法我們都是蠻接近的。

進公司四天了,到目前為止,我覺得這家公司真的是一家不錯的公司,從各方面來看。我希望我自己能快點進入狀況,把Leader交代給我做的事做到最好。讓老闆、主管、Leader知道,他們找的這個人絕對是物超所值的。我會100%完全發揮自己的能力,證明自己的價值。That’s my wish…