發表文章

目前顯示的是有「當java程式設計工程師心得」標籤的文章

當java程式設計工程師心得(16) 2023-2週自學Golang

      距上次發文又超過半年的時間了,這次就來分享學習Golang吧,因應工作需求我要自學Golang,在這轉換過程約1個月的時間我從完全不會寫go、也不懂如何部署程式GCP上,到目前已經有初步成果寫成文章分享給大家,預計會分成3篇: 1. 我如何開始自學Golang? 2. 如何在學習GCP相關知識? 3. 如何從不懂CI/CD到規劃GitOps並在GCP上串接CI/CD? 這篇先分享第1點 我如何開始自學Golang?    我習慣做事會用 Sublime Text 做筆記,因此我初期先列出我要學的幾點 1.詢問很強的Golang大神朋友(很感謝Minchao給了我超多建議) 2.學習Golang的開發工具,我初期有用Visual Studio Code寫了hello world,後來IDE改用 Goland ,它真的太強大了      Visual Studio Code :          優點:免費          缺點:plugin要找適合自己的下載試用     Goland :         優點: 官方 有附詳細的附加功能使用說明,並且你想得到的通通都內建         缺點:試用只有30天,費用訂閱制,月付或年繳 3.了解基本型別、module、function宣告方式、常用package,例如string、array、File I/O等等…可以參考這篇 Golang roadmap 自學再加上網路搜尋大量的文章花1~2星期閱讀加上練習 4.學習 gin web framework 撰寫RESTful API(API文件可使用 Swagger )、 gorm 讀寫資料庫 5.單元測試(go test)、code format(go內建有)、code style、build執行檔相關工具或指令     有關code style其實可以參考 google官方 再加上 Uber go style 6.學習專案程式資料夾框架 pro...

當java程式設計工程師心得(15) 2022-滿14年

 現在是2022年最後一天最後一小時,blog也空了一年沒有撰寫了,來分享這2年我遇到的事情吧,在個人生活部份我完成幾件事情: 1. 2021年底時遇到了非常契合的聰明又漂亮的優秀的另一半。 2. 2022年初買了房子。 3. 2022年創了youtube頻道上傳吉他finger style影片。 4. 2021年開始試著用許多方式自學英文。 工作上也有些轉變及新的嘗試: 1. 2021年將入行多年使用的server、讀寫資料庫程式整理完後以open source方式發佈到maven。 2. 2021年開始參與公司GCP相關專案技術研究。 3. 2022年決定轉型當架構師。 上面每一項都能單獨寫一篇故事來分享給大家,上面每項的故事細節,之後我再回來補上吧 祝大家2023年新年快樂,以及幸福的與身邊的人開心過每一天

[JAVA]發布GitHub Gradle專案項目到Maven中央倉庫

圖片
前提說明: 我自己在GitHub上有個JAVA library專案,想要發佈到Maven Central,從完全不知道如何開始到上架maven完成,因此撰寫這篇做記錄提供教學,使用的電腦環境是MacOS。 流程大綱 : 1. 申請Sonatype帳號並建立專案,帳號用於之後要上傳打包後的Jar檔相關檔案到Maven Central,帳號主要是要申請Group ID, 若已請申請過Group ID就不用再申請 ,下面範例是我用github帳號申請Maven的Group ID「io.github.raytw」,申請成功後Github發佈可跳過此步驟。 2, 下戴GPG並建立個人公、私鑰,因上傳到Maven Central所有檔案只允許用GPG rsa加密過的檔案上傳。 3. 調整Java專案裡build.gradle Maven發佈設定。 4. 在terminal command line下指令執行,並上傳相關檔到Nexus Repository Manager(發佈前暫存管理網站),再到Nexus Repository Manager網站再次確認後進行發佈後需要等待約2小時。 5. 到Maven Central Repository Search網站搜尋自己的專案名稱。 完整流程說明: 1.申請Sonatype帳號,讓GitHub帳號取得發佈到maven的Group ID (1)在GitHub上有個專案,我的專案 8ComicSDK-JAVA (2)到 Sonatype Jira 註冊,首頁紅圈處是註冊入口 (3)註冊Sonatype帳號後進行登入後,按下上面工具列Create按鈕 (4)出現資料填寫頁面 欄位填寫說明 : Project : 要發佈library到社群就選Community Support Issue Type : 選New Project,如字面 Description : 似乎可不寫,我是有用英文簡單填寫說明 Group Id : 填寫你library存放空間,以GitHub格式固定為 io.github.使用者名稱 Project URL : Git專案存放網址 SCM url : Git專案可被直接用git下戴的連結,即網址最後是.git Already Synced to Central : 是否目前專案有曾經同步到mave...

當java程式設計工程師心得(14) 2020-滿12年

圖片
今年我想分享兩件事 第一件事:       推薦最近看完的三本書的心得,書的內容對於想加強自身軟體開發能力以及朝架構師前進有些幫助 第一本 Code Complete 2: 有些章節適合project manager閱讀,可了解好的軟體開發集結的人、方法、工具,更推薦有2年以上開發經驗的軟體工程師閱讀,加強自身軟體開發觀念且功力大增,書裡寫了許多累積10年以上工程師經驗的做事方法 我個人覺得這書太晚讀到了,否則能少走好幾年的路,對我來說這本書裡提到90%以上都會了,但是這書還有一個功用,就是拿來用書裡提的數據打臉一些code亂寫的工程師🤣 第二本 無瑕的程式碼 書裡面提到許多設計原則,有些於軟體設計模式裡要應用,有些則是在系統架構上應用,也有用硬體面去套入原則,如果有碰系統架構也有寫軟體的工程師可以買來閱讀,這書能讓自己理清一些盲點。 第三本 Working Effectively with Legacy Code中文版:管理、修改、重構遺留程式碼的藝術 強烈推薦軟體工程師看這本書,內容講解如何對既有系統的code進行重構後可被測試,進而加新功能或提高程式的閱讀性及維護性,並且始終確保程式原功能不被破壞,書內介紹許多重構code高超技術,有讀有保佑,沒讀會出事🤣!裡面附的範例code為JAVA80%及C++20%,強力推薦大家閱讀來增強程式功力 第二件事:       我在google上搜尋"java吉他手"意外搜尋到一篇文章提到我,點進文章看原來是5年前曾來我網誌向我詢問過問題的網友寫的,我印象中有個網友向我詢問他想轉職相關的問題,最後我有給些建議,沒想到這位網友已經轉職且與我同行都是做後端,看文章內容也已經經歷了軟體業的洗禮了,在此一樣祝福他能工作更順利,朝自己的目標前進並加油努力,也對於還有這位網友記得我的網誌,我非常開心,我經營網誌撒出去的種子終於開花結果了(拉人入坑軟體業),哈哈哈。             最後聊聊今年心得,在工作上我也經歷了自身單內的部門對立、惡鬥、也曾深信一個人的人性,變成被這個人抺黑、我被拱成該部門共同敵人,對於這些事一開始會無法接受並讓自己陷入負面情緒狀態,慢慢的學會人要放下,不隨波逐流、也不被陷入對方的圈套或...

當java程式設計工程師心得-普通人寫程式薪資分享(13)2019-滿11年

   前陣子在巴哈看到有一位與我都是2009年出社會的軟體工程師,他貼出他個人 普通人寫程式10年來的薪資成長 ,那今年我也分享我在程式設計師這一條路上跌跌撞撞的薪資吧,先聲明我學歷是私立科技大學夜校畢業,所以無法提供前段學校的人參考,但我相信前段學校的人會有更多的機會獲得高薪,分享目的也只是提供一個可以參考數據,另外我與同事最近聊天也有聊到在軟體工程師這行業,非四大四中以外的學歷薪資再加上年資10年左右,大部份人薪資落在台幣40,000~60,000,另外我也去查了104(下面附上104的統計)。 下表為我個人10年來的薪資成長表  年份 第幾份工作 月薪(台幣) 年終(月) 產業/工作內容 補充說明 2008/11 1 23,000 1~3 軟體業(後端遊戲伺服器) 程式設計師,這是大學試用期起薪 2009/2 1 28,000 1~3 同上 程式設計師,3個月通過調薪5000 2009/10 1 29,000 1~3 同上 程式設計師,滿1年後有合作開發遊戲同梯的工程師提離職被慰留而調薪,我也莫名跟被調 2010 1 32,000 1~3 軟體業(後端遊戲伺服器、iOS手機遊戲app) 資深程式設計師,寫伺服器兼寫手機app兼帶3個人 2011~2012/9 1 35,200 1~3 軟體業(後端遊戲伺服器、iOS手機遊戲app) 資深程式設計師,上述通通包以外,要再用html5寫遊戲app。 2012/12 2 38,000 0~4 電子業(藍牙、網路傳輸、車用裝置連動相關的android app) 程式設計師,當時不懂自身的能力能談多少薪資以及產業跨滿大的,另外面試錄取後還被人資問薪資若是37000能不能接受,我當時是說ok,後來沒被降 2013/2 2 40,000 0~4 同上 程式設計師,試用期通過調薪2000,打造android app架構 2014 2 48,000 0~4 同上 程式設計師,開始著手設計app跨iOS、android平台的架構,且完成某個難度很高的專案一系列app,能力被認可 2015/11 2 50,000 0~4 同上兼管理2個小組 升任專案經理 2016~2017/6 2 52,000 0~4 同上 某一天看薪資單才發現又有調2000... 2017/8 3 ????? ??? 軟體業(後端系統...

當java程式設計工程師心得-資深工程師(12)2018-滿10年

  十年磨一劍,霜刃未曾試。 出自於賈島的《劍客 / 述劍》       入行從事軟體程式設計工程師已經10年了,幸運的是在目前任職的公司能夠有機會發揮應用過往所累積的經驗及能力,但我個人覺得還沒用到全力,還有很大的空間,在此希望進入這行業後輩們能保有初心,記住自己堅持的目標努力不懈的前進,先求穩再求好。       分享下今年獲得了一些經驗,今年出差去了中國上海參加QCon上海2018|全球軟件大會,有興趣的人可以點超連結去看看投影片,當時進入會場時讓我感到非常震憾!!非常多世界各地的大神在台上演講新技術及應用,滿滿的人潮在會場走動,在那裡吸收到許許多多的新技術,當我們還在用舊技術的這一刻,在相同時空下已經有人在用新技術並且應用於更大型的系統,希望在軟體界的各位能一起提升彼此的能力,分享這個資訊。       再來談談工作部份,在新公司不例外的再度遇到能力被上級認可,其實從錄取到進入公司一直到負責的專案上線,過程中一直被上級詢問是否接任升遷為主管,這件事一談就談了一年多,後來經由種種考量我選擇接受升遷,但是整個團隊的運作風氣保持,目前陸陸續續也在徵新人,忙著將建立新人訓練流程,不斷的調整流程,當中也有通過與無法通過的新人,短期目標也是慢慢擴大團隊並將人的能力提升上去,接著提升開發流程品質,才能團隊一起挑戰新技術、新專案。       最後問你(妳)一個問題,你覺得百萬年薪很難嗎?這沒有絕對答案,有許多因素會影嚮,但若以我自身經驗來回答,我會回答你(妳):保有初心,堅定目標,努力提升自我能力,挑戰別人認為不可能並且想放棄的機會,你根本就不需要去思考達到百萬年薪難不難這個問題,答案自然就會有。 有任何問題歡迎留言詢問~祝大家新年快樂!

當java程式設計工程師心得-專案經理篇完結(11)2017-滿9年

過去的選擇,成就現在的你,現在的選擇,成就未來的你。       我選擇放棄感情、選擇了工作、選擇追求高薪、選擇爆肝拼進度、選擇錯過不錯的對象,不論我做過怎樣的選擇,成就了現在的我,雖然我目前達成了現階段人生目標,同時也失去人生目標了,但我不後悔也不會抱怨所做過的選擇。      我的信念是每天都要努力付出,認真對待每一件事,以及把握每個機會,過去這信念只應用於工作,今年也嘗試應用於感情,但不是很順利,覺得滿灰心的,但是我會繼續對於感情努力,多認識些對象,如果有緣看到這篇的人可以跟我加個fb交個朋友(當然是女生的話我會很開心XD)。      上面是今年的心情分享,接下來聊聊我換了新公司新工作吧,新公司新同事新氣象,有正妹工程師跟正妹統計師(我不會附圖的,才不想被追殺),可惜正妹都有男友了,但是工作氣氛真的很棒,在此給大家一個建議,真的找工作時不知道要找什麼工作,就挑團隊能力不錯及氣氛佳的公司就對了,大家合作一下工作快速完成,剩下時間就是聊天、泡茶、聊聊新技術、跟正妹同事聊聊我認識女生不順利之類,或許當你在工作上追求的某條路已經到底時,不仿轉個彎,你會發現還有路可以選擇,此時記得我文章開頭的第一句話,也絕對不要後悔,也不要抱怨,持續努力吧!! 

當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出身,但不管工作幾年,自己還是要擁有挑戰新技術的熱情與信心,當然學習一定會遇到很多奇怪問題,這時就要提出來與大家討論或是去詢問技術主管,若是能自己找到解決方式再出來與大家討論這方式是否妥當會是最好的做法,這樣大家也可以分享到技術,在學生時期,自己會覺得學一個新程式語言很難學,那是因為自己本身沒有一個基本的語言底子當基礎,在此建議大家,盡量在學生時期,不管你是要自學、私下找老師問等等,挑一種程式語言,用大學四年的時間把他讀爛讀熟,並多寫,多試,多看書,以及多看別人寫的程式,去思考這樣寫會有什麼問題,以及別人這樣寫是為了要避免什麼問題,有時候很簡單的幾行程式,是有很深的技...

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

   時間過的好快,從寫第一篇當工程師心得日誌到現在已經三年過去了,從菜到不行,到現在要扛責任,掛名資深工程師,並且要帶新人寫專案,看著新人什麼都不會,只會用一種程式語言開發,很多工具跟linux指令都不會用,突然覺得自己當新人時,也是怕學東學西,最後還是什麼都要會XD。    當新人有當新人的好處,也有壞處,當老鳥的只有壞處= =,上有主管給的專案壓力,下有新人對開發時間得反彈力,夾在中間只能把一切都吸收下來克服掉,每當接到專案需要用到現在沒有的技術元件,就會聽到一句話「沒有寫不出來程式」,我都會再補一句「給我時間就寫的出來」,但總是天不從人願,時間永遠只會更少,不會更多,因為開發是拼速度,能比別間遊戲公司早開發出遊戲,就可以先佔上風,當然也是有績效壓力,固定一個月就要產出3款手機online game,也是基本款,當然不是我一個人在寫,那會寫到死,呵呵,我是接一個遊戲,帶一個新人寫,15~20個工作天要開發完並測試完上線,這些先不聊了XD    第四年的目標,當然是希望技術可以學更多,更廣,也希望自己能寫更多的元件出來,雖然我不知道我發表在這個日誌上的元件有多少人受惠,但是只要有一個人可以用到,我就會感到開心,最少最少也有我自己會來看,因為有些時候要用到的東西,我會忘了怎寫,就來自己日誌複制過去用,呵呵,沒辦法~腦子要記的東西太多了,把日誌當記事本在用,當然囉~有很多技術元件我都偷偷藏起來,不會發表在日誌,並不是不分享,有些技術是公司給的,而我只是收下來,用到後來會再自己加上更多功能,但是最源頭還是公司的東西,因此就不便在此分享,但如果是我自己個人私下研究出來的元件,就會分享到日誌給大家參考,雖然寫的不是很好,也希望有用過的人可以提些意見,以便我更新元件的版本。    最近接了公司要開發MMORPG的手機online game,當然也是負責server的部份,感覺滿鮮的,希望可以順利完成上線!!先寫這樣囉~剩下的等第四年年底再來寫吧~    祝福一同走上工程師之路或是即將要踏上工程師之路的人能順心,加油!!!只要積極並堅持下去,你就會成為很厲害的工程師^^

當java程式設計工程師心得(外傳1-帶新人寫專案心得)2010-滿2年

   從上星期開始來我們公司的新人也過了適應期囉~所以也就開始接專案了!!重點來了...由我帶= =+,呵呵,讓我帶就慘了XD,目前專案完成度約40%,但開發時間只剩一半。 對於剛從大學畢業然後進到公司當開發工程師的人,個人有幾點小小建議: 1.新人進公司寫程式有兩種:   (1)進開發寫專案。   (2)學維護,慢慢寫小功能。 2.必須拋棄學生時代寫程式的寫法,學校通常只要求你要寫得出來,會跑就好,但是在業界會要求你寫的程式要著重維護性,所以每間公司都有自定的規則寫,為的是寫出來的程式大家都可以很好維護,而不需要去幫你修一堆的bug。 3.畢竟剛畢業進到公司,對於專案的流程與程式的撰寫以及整個專案分析完的架構都會霧煞煞,但是這是新人必經的過程,我~當然也是這樣過來的XD,但是也是要靠自己多問,多看、多想,我一開始也是先試著把自己寫的程式由小到大,慢慢的把整個server的架構畫出來,才了解自己在寫什麼,當然一開始一定不知道程式整個架構長怎樣,因為公司會給你一個基本的元件給你使用,一開始都只要會用不需要懂,用了就對了。 4.如果你進去公司是學維護,是讓你先熟架構,那你可以穩札穩打的把公司維護的系統慢慢學下來,不過維護通常都是收拾前人留下的爛bug...程式也不好改,因為前人也是新人過來的,所以就...惡性循環啊~ 5.如果你進去就是開發,那你賺到了,因為可以學到很多,而且不用收拾前人留下的爛bug,不過也不要自己太閒留爛bug給後人修。 6.當你是開發工程師剛參與寫專案時,壓力大是一定的,有壓力才會成長,但一定要可以很快的理解公司給你的元件如何使用,不懂就要快問,不能低著頭猛寫,或許你遇到的問題,別人一看就知道如何解決。 7.盡量把物件導向的觀念建立起來,很多人在大學時都學過物件導向,但是真正在開發實務上都很缺經驗去分析物件,不過久了自然多看多學,就會了^^"    最近因要接手機開發專案,因此把之前寫的一些java server交接給同事做維護,同事花幾天看我的程式只說:「你的server每個都長一樣,架構完全一樣,懂一個等於懂全部了,一看就懂」 我此時心裡想:「當時我也是被磨出來的= =」    後來他交接完馬上就有被要求加新功能,也只花一星期就寫好了,因為在寫的當時都有留彈性,所以架...

當java程式設計工程師心得(3)2010-滿2年

   公司最近面試了幾個新人下星期要進來,才突然驚覺,已經當了二年工程師了,想起二年前我還只是個只會用java的陣列寫遊戲的剛退伍夜校大學生= =" 二年過去真快,寫過10幾個專案,20幾個server,有大有小,有難有簡單。 在這篇就分享一下第二年的心得吧,也列幾點可以提升自己coding能力的方法。 1.拿自己比較會的程式來翻寫別的語法程式,把別的程式拿來改成java,這是基本要求吧,而且我發現這樣可以讓自己了解別人在寫什麼,為什麼這樣寫。例如:我會java,我看到了別人寫了一個method或演算法是c或php程式,而你可以把他整段翻成java執行結果也一樣。 2.多想些小題目來寫,但看到題目不要先急著寫,先想過一次可以有幾種寫法,各有什麼好處。例如:多去javaworld論壇或知識+看看有什麼題目,不需要去回答,若是你自己覺得寫的很棒,你也可以貼出來讓大家比較或批評,這樣自己才知道有哪些可以改進的地方。 3.當你寫的是比較大的專案,這時並不是要去考慮各個method裡的邏輯要怎麼實作,而是先把你整個大系統要拆成幾個功能,整個架構要怎麼劃分,流程如何跑,所有的功能可以先定義成一個類別名稱,或者是一個method名稱,這樣是加速你確定整個系統大流程是對的,而不會導致你邊寫邊想,寫好3分之2才發現,後面寫不下去因為流程有錯,架構有錯。 4.培養自己debug的直覺性與解決問題的能力,我在知識+發現有很多人對於程式所拋出來的錯誤訊息無法判斷是什麼錯,也不會解決問題,連有excepiton的錯都不能解決了,要是遇到整個server某一段邏輯有錯,倒致結果是錯的,也不會有exception,那不就挫咧旦XD 5.多與人分享寫的程式,因為這樣你可以知道自己寫的是否有問題,而你或許會收到對方給你更棒的程式元件,或是寫法,當覺得對方的程式好用,就可以學來用或是拿來套,但是要記得當程式是被包成元件時,收到程式並不能直接拿來改,這樣會造成以後原作者又有更新時,你的程式就不能套新的元件,拿到元件需要用繼承或是把他new在自己另外寫的一個類別裡,重新包過,這樣對你自己的程式才有最大的擴充性。 6.或許你看到這裡會覺得上面很多廢話,但等你實際都去做之後,能力還沒有提升,那我也沒辦法XD,有提升的話記得買飲料請我啊XD 共勉之!

當java程式設計工程師心得(2)2009-滿1年

 從事java程式設計已經滿一年了,幾乎一整年都在寫java,從一開始剛進只會基本的迴圈、判斷式、陣列,跟一些些的資料結構,連執行緒都半知半解,雖然考過SCJP與SCWCD但真正的寫專案倒是進公司才真正跟同事合作寫一個專案,我負責整個server所有的撰寫,另一位同事寫client,還有一位leader幫我們分析整個專案如何開發以及解決實務上奇怪的問題。     記得之前剛發現第一篇心得時,才剛進三個月,剛要接第二、三個專案,現在已經完成近十個專案了,遇到很多實務上的問題,還有程式真正上線時的恐怖= =,測試時沒測到的bug,程式一旦上線,就要待命隨時出現bug時,連半夜也會接到電話,要爬起除錯,而且要時間內修正並更新,所以啊~,寫就要細心,連一個變數宣告錯都會有可能造成是潛在的問題。     程式在主管的帶領下,我學到了很多技術,還有架構,最重要的是觀念,程式被要求一個class不能寫超過500行,而且程式要很直覺,別人看了很容易懂,這都是為了程式可以隨時丟出來給別的人接手維護,但有的人還是會追求寫很複雜的程式,只有自己看得懂= =,而且也不知道什麼時候會出問題。     寫到現在,覺得啊~撰寫技巧可以不斷的學到,而且寫到後來大家都會一樣強,差別在於觀念,觀念不好,會讓自己的程式難以交接給別人維護,程式太複雜,自己久了回來看也會忘了在寫什麼,還有數學要好= =,我就是數學爛,在寫一個專案時要用到大量的數學運算去推演算法,推了一個星期推不出來= =,後來主管直接找我們開會,當場花一個小時寫出來,所以數學真的要好= =...     也沒什麼可以分享的啦,只是一些心得,最近也在寫別的程式了,花了一個月學iphone的objective-c,一開始剛看到程式有的傻眼,語法超不熟的,但也漸漸的習慣了,總之就把java會的通通拿過來用就對了XD,然後再查一下api就差不多了,目前也在開發iphone的專案,iphone的缺點就是,api都是英文,而且很爛,範例少,解釋有點難懂,其實是我英文也爛啦= =,我都十個單字看得懂七個就用猜的了,剩下就是把method拿來試試看跟java的是否一樣,一樣就用了,再注意一下那個method的api有沒有寫note,那都會寫那個method在什麼情況下...

當java程式設計工程師心得(1)2009-滿3個月

   這個月初滿工作試用期三個月了= =,也完成了第一個線上遊戲server,但…上個星期主管又丟兩個線上遊戲server下來了~只能拼命的寫了…,工程師真的是不歸路,忙啊~有興趣要入行的請考慮清楚= =+ 有空再來分享一下寫線上遊戲的心得~ 補充: 2012/06/03 這篇其實是剛入行幾個月時寫的,原本的標題是"最近真忙~冏",今天看到有人在問為什麼沒有標題是"當java程式設計工程師心得(1)"的文章,就是這一篇,呵呵~我特此將標題修改,其實在發表這篇之前我退伍也快一年,一直在當米蟲,後來有一個機緣才進入了遊戲開發行業~ 2013/11/16 我現在終於有空了,來補一下上述提到"有空再來分享一下寫線上遊戲的心得",現在回想當初在進入公司之前,其實有去面試一間當年做yxhoo地圖的公司,有考筆試(一堆sql語法,題目全英文),筆試跟面談都不順利,後來又過了幾星期接到了大學時代的同學打給我問要不要到他公司上班,我才開始了程式設計師之路,在試用期的三個月裡,發生滿多事的,因為我大學剛畢業退伍回來,java也學到皮毛而已,網路程式完全不會,進公司後第一個星期是叫我看書,跟看前輩寫的server,當然囉,看得懂才有鬼XD,第二個星期時,主管跟我說試用期的最終測試就是我要獨立完成一個4人傅奕game server,壓力當然非常大,第二個月底時,我用前輩寫的game server(爆多bug)改成主管要寫的專案server,某一天主管要我把server傳給他,他測試完並一行一行看我寫的程式,就把我叫過去臭駡一頓,問為我什麼拿之前的改,當然結果就是退回重寫,我的同學兼leader也被我害到,最後主管講明「三天內給你重寫一個game server,行不行?給我一個肯定的回答」,我沉默了,此時我的leader擠出了一句話:「讓他試試看,不行再跟主管您說」,主管說:「行就行,不行就不行,三天後我要開會demo給老闆看」語畢就轉身回座位,我就問了一下leader「怎辦?」,leader「只能做啊,試試看吧」。     重寫的第一天,我把game server整個流程打掉重新思考要怎做,然重寫架構與流程,之後開始補method,method裡全都留空,只print method的名稱並加上一些timer跳下一個流程,在第一天就...

當java程式設計工程師心得(0)2008-入坑

我是出生成198x年代,一個鄉下三合院裡的赤腳小孩,家裡有三兄弟,我排行老二,小時候5、6歲時,每天醒來就是找附近小孩玩紅綠燈等等遊戲XD,因為沒穿鞋又愛四處亂跑,常常被竹子乾掉的枝刺傷腳==,因為家裡窮,所以我沒讀幼稚園,第一個學會的字就是"幹",哈哈哈~      其實小時候我家裡窮,買不起玩具跟零食,但是常常看到鄰居的小孩,他們的外婆都會買零食跟玩具,中秋節還買煙火給他們玩,非常羨慕別人,但是小時候什麼也做不到。記得小時候有次,我撿了鄰居小孩玩壞掉的玩具,丟在附近一個橋下,我看到了就爬到橋下去撿上來,結果剛好鄰居小孩就看到,找他外婆過來說我偷他的玩具,當下我非常不知所措,只能站著被罵,壞掉的玩具也被拿回去。      讀了小一時,因家裡因素,我從鄉下搬到了城市,發現鄰居小孩都會穿鞋,只有我喜歡打赤腳XD,到了新家,也開始了我新的人生,不過家裡窮還是沒改變,記得小時候一直到我國中,家裡永遠有做不完的代工,每天都只能在家裡幫忙做代工,看著外面在打鬧玩遊戲的小孩,自己不能出去玩,一直跟媽媽抱怨,但媽媽總是說沒做沒錢,之後又低著頭繼續做,媽媽常常為了趕工做到半夜二、三點,早上一早又起來載我們三兄弟去上小學,上小學最開心的一件事就是,可以吃媽媽親手做的便當,在當時吃媽媽帶的便當的小孩好少,用手指都數的出來XD,後來小學老師知道我家境不好,小學老師每天都會把中午大家選剩下的營養午餐打包給我帶回家,我每天放學除了書包要背之後,還要還2袋菜尾,小時候我曾經很討厭拿菜回家,因為走回家的路上都會被大家用異樣眼光看著,但是我不拿不行,家裡沒有多的錢可以買菜,為了要幫家裡,久而久之,我對於別人的異樣眼光也不怎麼在乎了。      到這裡還沒說到重點XDD,大約小五、六時,家裡有買了一台紅白機(忘了怎麼來的),這時奠定了我走上遊戲之路!!當時我超迷忍者貓、忍者龜等等遊戲,到了國中時,出了超任,但家裡不可能買,後來我媽媽在他工作的工廠認識一個叔叔,他有買sega、超任等等遊戲主機,很好心的借給我們三兄弟玩,剛拿到時,根本玩翻了XDD,最記得就是我把太空戰士v玩到破關XDDD,當時還有破的一款叫"魔裝機神",這款也很經典,現在想想很感謝當時借我玩的人,後來記得出了kof94、95,我就開始了玩街機的生活...