寫在工作一年之際

火絨正在保護(hù)您的電腦,已保護(hù)365天

一年

去年的11月1號(hào)進(jìn)入這家公司,到現(xiàn)在已經(jīng)整整一年了,也從一個(gè)到處闖禍的實(shí)習(xí)生成長到可以獨(dú)立負(fù)責(zé)一些任務(wù)的新手了,如果要對過去一年做個(gè)評(píng)價(jià)的話,not bad
沒有什么比困難更能考驗(yàn)一個(gè)人,過去的一年里,做過的比較困難的任務(wù),有三個(gè)

第二個(gè)月,第一次獨(dú)立負(fù)責(zé)

image.png

現(xiàn)在回想起來,也是噩夢般的經(jīng)歷,我大概做了這些

  • elastic search,之前只是聽說過這個(gè)框架但是完全不知道是做什么用的,項(xiàng)目結(jié)束之后已經(jīng)靈活使用了(之后又研究了一些高級(jí)特性,比如function score)
  • redis 也是第一次使用,當(dāng)時(shí)沒有引入基于redis的分布式鎖框架,就用setnx來做加鎖,項(xiàng)目完成后特地找了點(diǎn)資料研究了一下,對它內(nèi)部的實(shí)現(xiàn)也有了點(diǎn)了解(redis的實(shí)現(xiàn)真的是就算只是一個(gè)bit都要想辦法去優(yōu)化)
  • protobuf 同樣第一次使用,剛開始很害怕,寫了一個(gè)之后才明白并不復(fù)雜(至少使用的時(shí)候不復(fù)雜)
  • 多線程設(shè)計(jì) 當(dāng)時(shí)要做的東西類似于在線ktv,有一個(gè)待唱列表,每個(gè)人都能操作,主持人有更高級(jí)的權(quán)限.對于當(dāng)時(shí)的我來說,挑戰(zhàn)很大,多虧大佬們的講解.自己也是一點(diǎn)一點(diǎn)領(lǐng)悟修改,寫出了一版不完美但是能跑.想一下當(dāng)時(shí)自己傻傻的埋頭苦寫不知道去問,還讓大佬們主動(dòng)來指點(diǎn)我,真是羞愧萬分
  • 接口設(shè)計(jì) 接口需要哪些參數(shù)? 有些數(shù)據(jù)是不是后端自己就能獲取? 前端傳遞的數(shù)據(jù)是否可信? 如果要返回的數(shù)據(jù),有一部分是邏輯相關(guān)的,是不是要把他們封裝到一起? 對敏感數(shù)據(jù)用get還是post? 這些是我那段時(shí)間學(xué)到的,這塊是前端大佬們一點(diǎn)一點(diǎn)把我教會(huì)了,十分感激.

最后在兩周延期后有驚無險(xiǎn)的上線了,這次做的并不好,之后一次還坑了大佬一次,唉,羞愧.
之后也想過重構(gòu),忙了七八天,大佬給的評(píng)價(jià)是"你這是重寫,不是重構(gòu)", 為此特地找了幾本重構(gòu)相關(guān)的書,最后意識(shí)到我那確實(shí)是重寫了,哈哈

第六-七個(gè)月,負(fù)責(zé)獨(dú)立的模塊

這次是做兩個(gè)模塊,好友聊天和隨機(jī)匹配,匹配之前老項(xiàng)目里有類似的,自我感覺難度不是很大

  • 允許抄,但是要根據(jù)自身場景做變化,不能死搬硬套
    當(dāng)時(shí)我就是死搬硬套,也沒去思考下兩邊有沒有什么區(qū)別,被leader狠狠的批了一頓,這次是真的活該哈哈哈,下去之后仔細(xì)研究了一下修改之后確實(shí)看著更自然也更好做了

  • 技術(shù)是為業(yè)務(wù)服務(wù)的,寫的再好效率再高,不能滿足業(yè)務(wù)也是白搭
    寫匹配的時(shí)候,考慮過多個(gè)方案,有幾個(gè)可以說是為了效率不顧一切吧哈哈,每次都被斃掉,最后leader說了一些話,大致意思就是上面這些,也就是從那時(shí)候開始自己才真正有這個(gè)意識(shí),做設(shè)計(jì)的時(shí)候也會(huì)仔細(xì)思考一下這塊

  • 代碼中要考慮到極端情況
    "如果redis掛掉一段時(shí)間你這塊會(huì)怎么處理?","那就掛掉嘍".嗯,不出意外又被diss了.第一次聽說要考慮基礎(chǔ)服務(wù)掛掉代碼如何繼續(xù)運(yùn)行時(shí),我的第一反應(yīng)是基礎(chǔ)服務(wù)都掛掉了,那就都掛了唄,后面自己仔細(xì)想想才體會(huì)到它的真正含義,基礎(chǔ)服務(wù)掛掉并沒有想象的那么罕見,如果是核心邏輯,確實(shí)要考慮到這些情況.

  • 不要過早優(yōu)化
    當(dāng)時(shí)剛剛看了幾本代碼優(yōu)化方面的書籍,迫不及待的試試手(這些書上是提了不要過早優(yōu)化的),寫完之后才意識(shí)到有些優(yōu)化確實(shí)做得太早了,徒勞無功.
    在整體邏輯尚未成型時(shí)所做的優(yōu)化,一般來說時(shí)負(fù)優(yōu)化.前期整體結(jié)構(gòu)還不固定,業(yè)務(wù)隨時(shí)可能變動(dòng),現(xiàn)有的邏輯也不一定正確,在這種基礎(chǔ)上做的優(yōu)化往往是徒勞無功.后面改起來反而更麻煩.但是并不是說不做優(yōu)化,通用邏輯封裝這些還是可以做的

  • 要嘗試?yán)斫庥脩?從用戶的角度去做業(yè)務(wù)
    做到好友聊天這塊時(shí),有這個(gè)場景,用戶選擇掛斷,這里可能有并發(fā)問題,可能另外一個(gè)用戶提前點(diǎn)擊了結(jié)束,那么請問這個(gè)操作能報(bào)錯(cuò)嗎? 當(dāng)然不能,從用戶的角度看,我不想聊了,想結(jié)束都結(jié)束不了? 這是不能接受的.
    最后附上leader當(dāng)時(shí)說的幾句話,個(gè)人認(rèn)為很有意義,如果業(yè)務(wù)出現(xiàn)了異常情況,按照解決方式從好到壞排列分為 1. 后端能解決 2. 用戶能解決 3. 卡死

一年,開發(fā)核心邏輯

135da41db13cfbf6.png

要做一個(gè)游戲,開發(fā)時(shí)間一周.時(shí)間很緊,游戲的主流程是我做來做的,很累.萬幸的是按時(shí)完成了.

  • 不要固執(zhí)己見,要聽取別人的意見
    因?yàn)橹安涣私庥螒蚪巧漠?dāng)前血量設(shè)計(jì),加上時(shí)間緊(只能說是當(dāng)時(shí)的托詞),沒有聽取前端同事的意見,做到后面果不其然出了問題,最終還是改成了他提的那種設(shè)計(jì),這次教訓(xùn)很慘重,大概浪費(fèi)了半天時(shí)間,如果當(dāng)時(shí)能夠仔細(xì)的詢問一下,思考一下,可能節(jié)省出更多時(shí)間,做一些其他地方的優(yōu)化.(這里大概也有些溝通方面的問題吧,與君共勉)
  • 不能容忍重復(fù)代碼,要懂得抽離通用邏輯,分離變化與不變
    這點(diǎn)是這次自己做的比較好的,還是上面的血量設(shè)計(jì),一共改了兩次設(shè)計(jì),得益于前期封裝的很好,每次更改設(shè)計(jì)改動(dòng)的代碼不超過100行.想一下如果當(dāng)時(shí)偷懶沒做封裝,業(yè)務(wù)邏輯又這么復(fù)雜,肯定不能按時(shí)上線了
  • 寫代碼糾結(jié)是好事
    有這個(gè)場景,要把map中所有的值自增,為了這個(gè)糾結(jié)了半個(gè)小時(shí)寫了一個(gè)性能和可讀性都還行的設(shè)計(jì),時(shí)間是很緊,但這不是理由,作為一個(gè)程序員,如果沒有對優(yōu)雅代碼的追求,那和咸魚有什么兩樣
  • 對于核心流程要考慮要任何可能的情況
    參見上面的代碼中要考慮到極端情況,有一個(gè)場景,玩家死亡時(shí)會(huì)可能會(huì)掉落一些物品,如果氪金了就不會(huì)掉了,因?yàn)榍岸艘@示,所以在死亡時(shí)就要計(jì)算好會(huì)掉什么,如果玩家確認(rèn)重生了才會(huì)扣除(氪金當(dāng)然就不扣了),可能掉落的物品肯定用redis來存了,當(dāng)時(shí)就考慮到如果用戶死亡后,確認(rèn)放棄前.發(fā)生了一些異常情況導(dǎo)致扣除失敗,這種情況是不能報(bào)錯(cuò)的,如果報(bào)錯(cuò)用戶就無法繼續(xù)游戲了,這個(gè)情況是不能接受的,所以對這塊做了處理,不管能不能扣除成功都確保用戶可以重生.之后查看線上日志發(fā)現(xiàn)確實(shí)派上用場了,這點(diǎn)算是這次比較得意的設(shè)計(jì)了,嘻嘻.

這一年我學(xué)到了什么

1. 一定一定一定要跟產(chǎn)品確認(rèn)所有不確定的細(xì)節(jié)
這里不是黑產(chǎn)品,產(chǎn)品想做的和程序員想出來的很可能有很大偏差,如果不做確認(rèn)和可能出現(xiàn)以下兩種情況

  1. 本來很簡單的東西程序理解的太復(fù)雜,導(dǎo)致做了很多無用功
  2. 本來很復(fù)雜的東西程序理解的太簡單,導(dǎo)致代碼不可能,最壞的情況就是重寫

另外程序主動(dòng)跟產(chǎn)品確認(rèn)需求還有一個(gè)最大的優(yōu)點(diǎn),對于這個(gè)需求,程序已經(jīng)有自己的理解,并很可能有初步的實(shí)現(xiàn)方案了,而產(chǎn)品可能還不確定自己想做什么,這樣就很有可能將一個(gè)很復(fù)雜的需求簡化

2. 學(xué)習(xí)一項(xiàng)新技術(shù)時(shí),沒有什么是比官方文檔更可靠地
花的時(shí)間去鉆研官方文檔,比漫無目的的看博客好很多.

3. 要懂得請教別人,個(gè)人的思維是有局限的,別人往往能發(fā)現(xiàn)自己的邏輯漏洞
舉個(gè)例子,對于一個(gè)需求,自己想了一下有了大概的設(shè)計(jì),覺得是可行的, 這個(gè)時(shí)候請教一下同事,將自己的設(shè)計(jì)復(fù)述一下,如果對方能理解并且沒有發(fā)現(xiàn)問題,那這個(gè)設(shè)計(jì)就不會(huì)有大的紕漏.可以說是起到及時(shí)止損的作用.(PS.請教時(shí)一定要有禮貌和足夠的尊重,大家都很忙,沒人有義務(wù)去幫你的)

4. 做業(yè)務(wù)時(shí)可以'拿來主義',但是事后要去研究一下
如果一直都是拿來主義,不去自己死磕研究一下,技術(shù)不會(huì)有任何進(jìn)步,就真的變成了日常搬磚了

5. 終身學(xué)習(xí)真的不只是說說,要抽出時(shí)間來學(xué)習(xí)新知識(shí)
工作時(shí)間越長越能感覺到自己的不足,各個(gè)方面的知識(shí)都欠缺的很多,要每天抽出些時(shí)間去讀,去學(xué),去使用.業(yè)務(wù)是做不完的,如何抽時(shí)間就見仁見智了.

6. 運(yùn)動(dòng)! 運(yùn)動(dòng)! 運(yùn)動(dòng)!
每天運(yùn)動(dòng)一下,保證三天至少跑步一次. 運(yùn)動(dòng)很重要,并不只是因?yàn)榻】?運(yùn)動(dòng)可以極大的緩解壓力,補(bǔ)充意志力.每天不用動(dòng)的話,心態(tài)真的會(huì)爆炸的.

7. 要明白自己真正想要什么要對未來保持憧憬
搞技術(shù)是枯燥的,就算對技術(shù)再癡迷,也是會(huì)有困倦的時(shí)候,這時(shí)候你需要明白自己真正想要什么,它一定是和技術(shù)無關(guān),而是和人生相關(guān)的.如果不是想到她,我可能真的無法堅(jiān)持下來.

結(jié)語

終于把這篇總結(jié)寫完了,也算是給自己一個(gè)交代,與諸君共勉.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滔以,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子貌笨,更是在濱河造成了極大的恐慌撒踪,老刑警劉巖齐唆,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旗们,死亡現(xiàn)場離奇詭異,居然都是意外死亡规婆,警方通過查閱死者的電腦和手機(jī)耸峭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門鸽粉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抓艳,你說我怎么就攤上這事触机。” “怎么了玷或?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵儡首,是天一觀的道長。 經(jīng)常有香客問我偏友,道長蔬胯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任位他,我火速辦了婚禮氛濒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹅髓。我一直安慰自己舞竿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布窿冯。 她就那樣靜靜地躺著骗奖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上执桌,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天鄙皇,我揣著相機(jī)與錄音,去河邊找鬼仰挣。 笑死伴逸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膘壶。 我是一名探鬼主播错蝴,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼香椎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起禽篱,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤畜伐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后躺率,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玛界,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年悼吱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慎框。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡后添,死狀恐怖笨枯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情遇西,我是刑警寧澤馅精,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站粱檀,受9級(jí)特大地震影響洲敢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茄蚯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一压彭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渗常,春花似錦壮不、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春家凯,著一層夾襖步出監(jiān)牢的瞬間缓醋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工绊诲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留送粱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓掂之,卻偏偏與公主長得像抗俄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子世舰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你动雹,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,734評(píng)論 2 59
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,190評(píng)論 25 707
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,940評(píng)論 2 89
  • 路一直在走跟压,卻不知道方向在哪? 一路狂奔胰蝠,卻尋不到終點(diǎn)。 看不到沿路的景震蒋, 錯(cuò)過了,也回不去了茸塞。
    都山閱讀 190評(píng)論 1 1
  • 大家連到玩一局斗地主都算計(jì)許久時(shí),恐怕就是查剖,钾虐,,大家都長大了笋庄,都利益了吧
    推大石頭的西西弗閱讀 166評(píng)論 0 0