發表文章

當java程式設計工程師心得-專案經理篇(10)2017-滿8.5年

這次心得會分享工作、減肥、未來方向三部份,首先分享工作的部份。        今年二月大約過年前後,我開始思考要提離職,主因是對於目前工作內容已無成就感,對公司開發的產品沒辦法產生認同感,我無法發自內心向好友推薦這些產品及app有多好用的,此想法在心裡一直在擴散,直到6月底,公司也剛好想對部門進行業務減縮,趁這機會離開了長達四年半的工作,在這段時間裡經歷了許多事,體重也一路往上飆,健康也亮紅燈,在去年11月公司辦的體檢,拿到健檢報告後,非常的慘不忍睹,因此決心開始減肥,減肥下一段文章再細說,回到工作話題,在這裡從一錄取進入時心態是想說待在傳統產業養老,不要出頭,領個薪水就好,但是偏偏就遇到了能擦出火花的同事,一起從4 、5人小組一起打拼到整個團隊成立為部門,人數擴編到22人,中間經歷了無數加班的夜晚,當然最後有做出對部門貢獻的成果,因此也被認可升上了專案經理,讓我又有再次一機會可以擔任管理帶領團隊,我曾在帶人方面失敗過,此次機會我不想再失敗,當然剛接手時也是一陣慌亂,要面對10個人不同的個性,不同的溝通對應技巧,如果讓每個工程師對自己心服口服,又能支持我,大家一起努力,在6月底時把最後一個專案完成,順利交接工作,部份同事離職後也有繼續聯絡,讓我實實在在體會到在工作上要重視人際這塊,因為有緣就再遇到一同共事的,離開了公司,對曾共事過的人只有感謝,對前公司也是只有感謝,只是現在的方向理念不同罷了。      減肥對我來說比debug還難,比開發新專案還難,我花了很多時間在看減肥文章,也曾經節食減肥過,但後來又胖回來,不過胖回來主因是工作時間長到常錯過晚餐時間,太晚回家就會餓到吃2份餐,例如去小7買1個便當+1個水餃,久而久之就變胖,因此此次減肥約半年多,前4、5個月先調整飲食,讓自己吃飯吃八分飽,少米飯多蔬菜的三餐,這樣做之後,並不會讓自己一直處於飢餓狀態,之後1、2個月搭配每日快走1小時,時速6公里,慢慢的大腿變瘦、肥肚也變平了,減肥真的沒有速成,只有堅持以及可以讓自己不痛苦的減法,節食是最要不得的減法,容易變成溜溜球效應,有心減肥的人先從飲食下手吧。      至於未來方向呢?目前我還在找工作中,也有找了幾間面試過,對於自己想做的工作、認同感是重點,有不有趣也是一項考量...

當java程式設計工程師心得-專案經理篇(9)2016-滿8年

       又到了每年寫入行心得的感觸時刻,不知道之前發的幾篇又有幾個過路客看過,這篇又會有幾個人看過,有幾個人能體會發這篇文的心境呢?       就先說說這一年來上任專案經理的部份吧,去年發的那篇最後有提到我要把人帶上來,以及汰換掉部份掉隊的人,沒錯,這些都達成了,花了近一年,我帶的人大約10個左右,分為android team、iOS team,一年中讓每個人都有機會獨立負責一個專案,並讓每個人能夠學習如何從頭到尾進行專案,而非只是會寫程式而已,當然細節就不在這多寫了,在過程中,我深刻體會到要在這行業有所成長,不是學歷好、也不是能力好,而是在工作時完全投入,並積極的像海棉一樣吸收一切,將工作中所見所學佔為已有,當然這樣會付出相當大的精神力,為何我會這樣說呢?當然除了我自身是這樣經歷過以外,去年年末也找了我帶領的工程師,每位都進行約談(其實就是聊聊天),有被我認可的幾位工程師,我有問了他們對於自己去年的表現如何,他們都一致認為自己已付出全部精神來處理每次的工作,並認為已做到最好,但每次都會被我打槍,但他們還是會再次收拾好心情,再次找我回報,最終被我認可,這對他們與我都是對工作的一種尊重,而不是只是單純來上班、寫code、下班。       去年下半年有來一、二位新人,我後來也試著讓我認可的工程師(入行約2年多),讓他試著去帶1位新人,也教他如何帶人,在去年年末與他的訪談中,他也要提到他在那新人身上看到自己過去被帶時的感覺,才了解自己之前是如何不好帶,這滿有趣的,被帶的變成帶人,心境上會轉變,也會更了解如何跟其他人共事,對團隊來說是一種正向成長。       上面也有提到有部份工程師抱著上班、寫code、下班,這並非不好,每個人有自己對工作的認知以及想要投入的程度,我也尊重每個人自己在工作與生活的百分比分配,每個工作也都需要有人做,就算是一位工程師只打算照著文件(類別圖)按圖寫code,不想參與分析設計,我也能接受,每個工程師都有自己的喜好。       最後寫點這些年來的對於戀愛感情的想法,話說這故事要從我讀夜校高職時提起,我讀夜校高職時很幸運的認識了一個在租漫畫店打工的日校女生,因為常常去租漫畫進而認識...

當java程式設計工程師心得(8)2015-滿7年

      過去一年裡,我在android、iOS開發上都有獲得滿多知識,也在一年裡面試了許多要嘗試寫android或iOS的面試者,有些有趣的發現,相同年資與技術來比較薪水方面兩邊差距滿大的,若是想寫手機app,以技術上來評估,我個人覺得iOS與android在開發上android還是比較難的,且薪水也比較低,但可獲得比較多困難的技術跟資源,而iOS與前面相反,另外我想給走入行寫app的人一些建議: 1.深度要有,把一種語言的本質、特性札札實實的學透徹,像java有ocjp(scjp),真正的去懂各種容器、語法熟用、理解,開檔、寫檔等等,一些基本的SDK、甚至要熟用常見的design pattern、排序法。 2.廣度要夠,當自己達到了第2點時,應開放自己心態,不要讓自己只會寫一種語言,甚至有些工程師會設定自己只會寫UI,會調畫面、按鈕事件就好,在專案會議討論時會發言說出非常極端,以UI角度觀點提反對意見,例如:那效果不好寫啦,畫面不好刷新啦等等,這些是對整體專案沒有任何實質幫助。 3.綜合1、2點,再往上提升一個層次,讓自己保持著積極的心態,虛心接受各平台上的技術應用,不要閉門造車,不要讓自己只會寫iOS或android、甚至可以去學js、server等等,這些在手機上都會有機會用到。 4.自願挑戰專案各位置,讓自己的配合度高,以我們公司部門專案,在app開發程式部份會分為web api的sdk、db的sdk、app架構整合、再加上此次專案需要用到的功能拆功能寫library,ui實作,基本光是程式部份上會由1~3人合作,每人需要熟各部份的實作。       隨著我現在公司部門從我進來時只有5個人,一直到現在2x個人,裡面人混雜的能力高高低低,強跟弱的能力差大10倍以上都有,但不管能力差或強,但差別最多的是工程師的心態問題,滿多人沒有達到上述幾點認知,又或者以前待的公司並沒有人教導應讓自己朝這方面學習,以致於在目前我們公司有些磨合,甚至磨擦,三年過去了,一路上碰碰撞撞,也感覺到了些有人並不適合團隊合作,曾經花了近一年時間,要調整那些人的心態,但最後失敗收場,只能重新調配工作分配,讓那些人做簡單的工作,這將會是管理的問題,非程式設計方面問題。      這篇文章也是我純做工程師...

當java程式設計工程師心得(7)2014-滿6年

     今天是今年最後一天了,提早下班回家來寫入坑滿6年心得,我是從2008年入行的,有看過前面幾篇的讀者就會知道了,那一年台灣經濟超慘烈的,而我在那一年退伍入行,一切從政府的22k開始,我也是受害者之一,進入這行業時的第一個月薪水是23k(未扣勞健保前),現在的薪水是當時的2~3倍,我入行時心中有一個目標想達成,我想在工作滿第一年時達到月薪40k,當時不知道是中邪還是被附身,每天狂寫程式以及思考寫的程式是不是有什麼地方沒考慮到的,想表現出積極性跟讓寫出來的程式穩定,拼了1年才達到29k,在第2年中間曾經想過打開104,但看到每間公司都要求2~3年經驗,我就放棄了這種想法,之後想著做滿5年再離開,慢慢的公司方向轉變,我也覺得自己做的工作開始在重複了,重複的設計server架構、元件設計來應用於一再重複的專案上,一切都變的乏味了,因此我選擇了離開,也在這個下了這個決定之後,技術主管(副總)與我聊天,他想不斷的說服我,想留我下來,提出要把我月薪從35k加到40k,在那公司主管認為台灣中部rd頂只能到40k,雖然這是我第一年的目標,花了4年才有機會觸碰到,但最後我還是選擇了離開。      我想表達的是,對於程式設計師這工作,我追求的是rd魂,我想做我覺得有興趣的工作,但工作是不可能100%都是自己有興趣的工作,不然就不是工作了,我能接受70%有興趣,30%乏味,而當你目前的工作已經讓自己覺得沒有養份了,也提不起興趣了,那就表示你該走了,否則只是讓自己的熱情消滅而已。      今年我在工作上最感到困惱的反而不是技術研究或不同程式語言的學習,而是不同團隊之同的合作問題,我目前所在的部門分為server組、android組、iOS組、美術組,原本在android組的工作模式,每個人所負責的部份都很契合,因此產出的app給大家的評價有80~90分,但一樣的人數,一樣的工作模式套用於iOS組,卻套不上去,每個人都自己做自己的,有自己的寫法,有自己的堅持,最後同一iOS組產出的多套app一個比一個慘,光是一個app開發了1年,bug多達200多個,而且一直解不完,還有大量的第三方不熟悉的library套入,目前主管請我(隸屬android組負責設計架構&會寫obj-c)介入ios組,...

當java程式設計工程師心得(外傳2-Team work)2014-滿5.5年

      從事程式設計工程師也好幾年了,合作過的程式工程師也很多人,那就再來發一篇我對於團隊合作的心得吧。       一個研發團隊最理想的狀態就是可以互相支援對方對方60%~80%的工作,舉例說,有工程師A與工程師B,不論年資,只單純看能力,若是A對於B負責的功能或專案有80%的熟悉度,反之B對A也有80%,那好處就是當A突然有事請假,那專案進度並不會delay到,又或者業務臨時急件要拿B的專案去demo,那A可以馬上處理解決,這樣可以讓整個team給其他部門有好的印象,不會讓人有這部門怎麼什麼都不行的感覺,當你自己有自覺寫的程式不是代表自己,而是代表整個團隊時,那自己就要主動去跟團隊裡每個同事學一下技術,或了解相關進度,這絕對對自己有好處的(若是你想在短時間內有急速成長,並在多年後成為神(註1),就一定要這樣做)。       雖然是理想,但在現實上要達成是有很大的難度的,我目前待的研發團隊正面臨這個難題,整個團隊也為了這件事開會討論過,當一個團隊出現了有人能力跟不上,甚至會造成對個團隊進度負成長(註2),團隊裡就會開始有不好的氣氛,會有人開始抱怨,每個人對於這種負成長根源解決方式不同,我是把android team的人都找出來,之後用引導對方式向那位上班不集中的工程師問他原因,問他為什麼一個功能只要1小時可以寫完,他需要花上1天,並且我也直接跟他表明目前這個團隊需要的是可以跟上進度,有能力學習、不拖累別人的強者,之後他也承認他上班時都在玩,沒有認真寫程式,當然最後也有請主管與他談,後來他向主管承諾會改善,但這問題並發只有一人,別的小組也有這情形,但那位工程師被主管約談之後,他自己也覺得拖累大家,當天就決定離職了。       對於團隊合作,我目前所在的團隊討論了一個方式,大家之後會互相把專案功能切開,並把架構、UI、功能都分離,有人專負責架構,有人UI、有人功能,最終由1人整合,每個人都要有UI的基礎,這是基本的,剛進來不會的人就會先被分配去學做UI+流程,再由強的人去打主架構,然後大家都可以實作功能,功能有相同的可以集中成utility(註3),整合的人則是要對全部都很熟,要會寫架構、UI、功能、元件,才有能力進行整合並分配各工作,這樣的做...

當java程式設計工程師心得(6)2013-滿5年

 又到了年底寫心得的時間了,到了新公司工作也滿一年了,新公司是傳統產業,我所屬的部門是手機與公司其他電子裝置產品的結合應用研發,偏向手機app部份,大部份應用都有結合網路部份的程式設計,寫到這裡,又回想起之前一篇我提到走開發要不斷學習的事了,來到傳產發現了很不可思議的事!!其他研發部門幾乎很多人都不會網路方面的知識,但公司走向想朝網路方面應用,倒致於我所屬的部份想推網路技能到其他研發部困難重重,一方面是其他研發部不能接受json、tcp/ip、tls等等技術的導入,或許對現在正在看這篇文章的您會覺得很扯,不過現實就是如此,雖然過程艱困,但最後我同事也是把這些技能強行導入了(雖然別研發部很抗拒...)。        在第二段小提一下我今年學習到的一些技術或知識: State Machine:用來管控程式流程與狀態,應用在程式設計裡可以減少大量的if-else。 Android aidl:可在android裡跨不同app使用c/s(client/server)方式呼叫method,但基於這機制,需要實作service,但service會因為不同app各自管理,有時會因為service被回收或dead而造成另一端叫用method的程式拋出DeadObjectException,但目前有先用一些手法解決此問題。 Android SocketIO:這部份是為了讓android的app裡可以用web socket方式與server通訊,會這樣做是因為當server是用javascript寫時就必須要這樣做,不過java本身沒有SocketIO,所以跑去github找了一段open source並修改了其原始碼,讓其功能符合我的需求。 Cocos2d-X:這個是在網路上滿有名的一套撰寫遊戲程式語言(C++),可跨多平台,我有拿這個寫了一個小範例並輸出到android與ios上進行實機測試,效果滿不錯的,但由於沒繼續深入研究,因為沒應用到專案上,目前也從網路訂購兩本書還沒開始看... Think in java 4/e 中文版:這是一本書,買了三年多了吧,一直沒看,一共有1300多頁...今年抽空看了一半了,網路上滿多人在推薦寫java一定要讀這本書,當然我就買來看囉~這本書我建議寫程式1~3年以上後再來看會比較有感覺,因為很多都是...

當java程式設計工程師心得(5)2012-滿4年

 首先,第一件跟大家分享的就是我離職了,離開從事了四年的手機網路遊戲設計這個工作。       今年發生滿多事情的,在上半年5月時,公司主管想將html5的技術導入遊戲開發,而不同以往是將ios與andoird分別用object-c與java撰寫,而是整合使用javascripts進行開發,兩邊的app也都可以使用mobile webview來執行html,有這個想法我們並非是先軀,但總不能是最後,因此我被選為進入這個新技術領域的人選,當然這裡也不例外,也是套了工程師必經的一句話就是「說很簡單,做很難」,不過最後結果,這個試驗品個專案目前已上架了,分別在ios與android上都有,是由我撰寫伺服器與app及整合,裡有些核心元件是由主管與同事提供,花了將近20天完成,不說手機方面的程式,光是主程式那支html就超過4000多行,全都javascripts,其他支html大約都300行以內,主程式會寫那麼多是因為我是接這個專案才開始學javascripts,所以有很多東西不會拆,例如怎麼把程式拆成n支,再以import的方式載入之類的,說到這些,或許有些人懂javascripts就會說,不就只是scripts src=xxx.js,我可以跟你們說這樣做穩死,這種寫法來載入js,會因為html的body先載入完成,而js是再之後載入,這樣會造成你在html已紿開始執行,卻讀不到js裡的function,會有機會讓程式掛掉,還找不到原因,因此這個方式是被我們捨棄不用的。      在上文(其實是廢話,沒幾個人想看XD)提到,我雖然是以java出身,但不管工作幾年,自己還是要擁有挑戰新技術的熱情與信心,當然學習一定會遇到很多奇怪問題,這時就要提出來與大家討論或是去詢問技術主管,若是能自己找到解決方式再出來與大家討論這方式是否妥當會是最好的做法,這樣大家也可以分享到技術,在學生時期,自己會覺得學一個新程式語言很難學,那是因為自己本身沒有一個基本的語言底子當基礎,在此建議大家,盡量在學生時期,不管你是要自學、私下找老師問等等,挑一種程式語言,用大學四年的時間把他讀爛讀熟,並多寫,多試,多看書,以及多看別人寫的程式,去思考這樣寫會有什麼問題,以及別人這樣寫是為了要避免什麼問題,有時候很簡單的幾行程式,是有很深的技...