跳到主要內容

當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跳下一個流程,在第一天就完成了流程控制,第二天就開始把所有的method補上功能並進行測試,第三天做最後的修正,最後順利的給主管看demo。


    其實這三天決定了我可以留下來,這件事在我後來離職時,主管跟我說當時給我三天是要決定留我還是fire我,好在我學習力超強才克服(XD),不過當時真的壓力超大的,我聽到只給我三天時,整個腦袋都麻掉了。


    寫了這麼長,來段結論好了,我在試用期三個月內學到一件很重要的事,就是一個程式設計師要把系統或遊戲寫好,一定要先把架構決定好,以及流程的串接想好,而不是急著寫功能邏輯,功能邏輯在一開始並不是最重要的,一個專案要先拆成各流程,之後再從流程裡拆功能,功能method要給誰寫都沒什麼差別(如果沒手下,就只能自己寫),基本上參數與回傳值都已先定義好,一旦功能完成,那專案就等於好了,可以直接測試,如果有發現問題,還可以獨立把功能抽出來測試,因為獨立完成的功能一定是最乾淨(不被系統牽制),這樣說明或許有些人不能理解,那我再舉一個常見的錯誤開發方式吧,寫過系統或遊戲的人,尤其是剛開始寫的時候,一定會邊寫邊想流程,然後method或變數都定成全域,method裡用到的變數都全域,最後整個專案寫好後,要是遇到bug,要查很難查,想單獨把一個method抽出來會倒致整個class或專案不能動,牽一髮動全身,這是最差的寫法。

    我曾經把server寫爛掉過,一個server重寫三次也有,因為遇到流程亂跑的bug,表示我思緒不清楚,我能做的就是一直重寫重寫。

寫程式跟練吉他一樣,一個是寫code,一個是刷code,都是要重基礎開始,才會變強。

留言

這個網誌中的熱門文章

當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程式設計工程師心得(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.學習專案程式資料夾框架 project-layout    在學習過程我也發現學習Go千萬不要用JAVA的物件導向去學,反而要把JAVA的觀念拋開讓自己歸零去學習一種新的程式語言會更好吸收,也才不會讓自己觀念會卡住,Go本身的設計讓其彈性很大,對初學者建議掌握下列幾點: Struct Receiver Pointers 基本型別 容器&特

當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年前曾來我網誌向我詢問過問題的網友寫的,我印象中有個網友向我詢問他想轉職相關的問題,最後我有給些建議,沒想到這位網友已經轉職且與我同行都是做後端,看文章內容也已經經歷了軟體業的洗禮了,在此一樣祝福他能工作更順利,朝自己的目標前進並加油努力,也對於還有這位網友記得我的網誌,我非常開心,我經營網誌撒出去的種子終於開花結果了(拉人入坑軟體業),哈哈哈。             最後聊聊今年心得,在工作上我也經歷了自身單內的部門對立、惡鬥、也曾深信一個人的人性,變成被這個人抺黑、我被拱成該部門共同敵人,對於這些事一開始會無法接受並讓自己陷入負面情緒狀態,慢慢的學會人要放下,不隨波逐流、也不被陷入對方的圈套或操弄而起舞,每個人進入這行追求的目標都不一樣: 有人追求薪水普通、工作不求質不求快、上班時上網網購