今天算是正式離職了,算起來還有幾個月在此家公司呆了快三年。中間的得得失失我覺得很有必要總結一下,應該算是一個對我個人來說比較有價值的總結吧。下面開始從頭屢一下。
一些閑話:
當初來公司的時候是用JavaEE開發背景的職位,同時來的還有一個技術小夥伴,兩個人一起開發了公司的一款至今看起來比較牛逼産品的背景;這個産品雖然在後來沒有發揮了應有的作用,但是為公司另外一個産品的設計理念和思路在就是在此産品的基礎上進行了拓展。這個項目的背景用的Mongodb+spring,算是用Mongodb正式開發的一個項目吧。後來項目開發結束後,在項目負責人的安排下轉了Android,看了一個星期的android知識後正式上崗上線。
其實在我看來,從JavaEE轉android還是挺容易的,當然在初期也犯了各種低級錯誤;有的需求是自己網上邊搜資料邊開發的,特别是一個動畫效果,當初對我來說可是一點思路都沒有,然後就下載下傳網上同類上線的apk進行反編譯看看别人怎麼實作,最後也模仿出來了,也即是幀動畫的效果,當初我都不知道有幀動畫,自己用了其他方式都沒達到要求。其實我覺得程式員的工作是最有滿足感的工作,自己在親手解決一個自我感覺很困難的問題的時候,那種心中滿滿的自信,感覺很美妙的

。
當然在離職之前又接收了公司的一個背景項目的開發,算是重新把背景拾了起來;并且打算就算辭職了以後背景也需要繼續學習和實際開發了;技術總是學無止境的!!!
秀一下滿足感:
由于某些原因,基本上都是獨立在開發apk,事實上從來公司到離職基本上都是自己在獨立開發apk,目前為止自己獨立完成的上線項目(算上剛開始上線後來由于各種原因放棄下線的)有5個,這估計在外行人看來很牛逼,居然一個人能開發一款軟體,但是呢個人覺得缺點大于優點,優點太閉門造車的感覺,雖然自己開發項目自己決定使用什麼技術,也自學過RxJava,butterKnife,okhttp等技術并運用到自己的項目中去,但是總感覺閉門造車的缺點太多了;當然在開發之餘也經常閱讀自己的代碼然後能重構的重構之,能優化的優化之。對我來說最大的收獲就是養成了任務或者某一功能完成後閱讀和重構自己代碼的習慣,這估計是看了《重構改善代碼既有設計》這本書的影響吧,來來回回翻看了好幾遍,每次看都有不同的感受和收獲,在我們項目組CodeReview(代碼評審)的時候我也不止一次向同僚推薦過這本書,确實值得讀讀。參與團隊開發的apk就三四個,擷取看到這兒會給人一種外包的感覺,然而并不是。
在工作閑暇時間也經常在android相關網站下載下傳大量别人的高仿源碼觀看,就是想看看别人怎麼組織代碼,怎麼實作某個相同的功能,來吸收别人的經驗希望彌補自己閉門造車帶來的不足,收獲确實很大!就算是至今也時長下載下傳一些别人的源碼來瞅瞅,如果某一個知識點不是很明白的話就研究源碼或者網上查閱資料弄懂為止。
上面說到代碼的重構,我覺得我在公司最大的收獲或者成就(自我感覺,可能對也可能錯,就算自我感覺良好吧
)是把我最初來公司時候android項目應用了好幾年的接口給徹底重構了一下。原來的接口封裝起來怎麼說呢,客觀的說代碼組織有點亂,太多的不必要的Impl類,太多的備援代碼和方法,經常用起來感覺擴充起來麻煩也Jude不友善,于是我自己花了半天時間研究一下這些impl類之間的關系然後算是利用了Builder模式吧,把幾十個impl類全部删除了,提煉之後弄了一個ParamBuilder類來組織建構不同請求的對象并添加了上一頁和下一頁的功能,結合okhttp重構完成之後應用到自己獨立開發的一款項目中去,簡單明了使用起來很簡單。後來一個同僚問我要這個重構過後API的源碼,也就是順便給他了,他有沒有用到開發中去就不得而知了,當然現在想想自己修改的API還有改進的空間。
其實我們常說項目經驗,項目經驗這四個字在我看來可不隻是簡單的是履歷上羅列的項目的個數(也就是說項目經驗!=自己參與的項目個數);其實在開發項目的時候,并不隻是完成自己的任務就可以萬事大吉了,此時應該做的就是多讀讀自己的代碼或者每隔一段時間讀讀自己的代碼看是否有重構的地方或者有沒有其他更簡單的方案;或者讀讀團隊開發中其他同僚的代碼并與自己的觀點互相認證,總能學會點别的東西,不斷的提高和錘煉自己。堅決拒絕把舊的錯誤帶到新的項目中去!堅決不做一個代碼搬運工。其實從一個項目中可以學到的東西很多,比如你可以自己把自己設想成項目經理或者技術經理的角色,如果自己是項目經理會怎麼配置設定工作以及組織後續的開發工作,同時跟團隊中的項目經理或者技術經理進行對比總結,自己哪方面可以做的對,哪友善沒有考慮到;甚至如果你有心的話,開發中的文檔(包括寫法,格式等)也是可以讓你學一點東西的。
我有時候在地鐵上或者閑着的時候也會思考一些不是android的問題(這有點涉嫌無證裝逼
),比如自己公司項目背景用的到資料庫表是怎麼設計的,自己在腦海中也模仿設計一些是不是可行等等;有時候在使用一些視訊播放apk觀看電影的時候突然間腦海裡面會蹦跶出來一根問題:為什麼别人的apk重新整理了很多資料還是包含海報的資料都不會OOM呢,是什麼原因?為此我也會暫時停止視訊的觀看,特地下載下傳相關apk反編譯之看看别人怎麼實作的(當然更多的時候是反編譯失敗)。
總之,說了這麼多,意思隻有一個,用心留意自己項目所開發的任務之外的東西,也是可以學到東西的,哪怕學到的東西你用不到甚至可能忘記,但總比沒有東西可以遺忘好是吧,說不定以後會用的着呢!
第二個另外覺得有意思的收獲是根據公司項目适配的方式,自己利用業餘用java AWT,dom4j技術簡單的寫了一個dp值自動轉換工具,用來做公司項目的适配非常友善,這也是第一款業餘是自己開發工具給自己使永的軟體,感覺真的很奇妙。
由于公司性質的原因,需要經常出差;第一次是跟一個北京的同僚去重慶出差,這個同僚在公司都尊稱他為李哥,後來也跟他一起出差去參與貴州的項目直到我離職。當通知我去出差的時候我都不知道我還有機會去出差,說實話第一次出差感覺還是很新鮮的,而且是第一次坐飛機那感覺就簡直了
。後來的幾次出差做過幾次飛機後感覺就無聊了,然後出差一直都是乘坐高鐵。當到達重慶後找到第三方,整個人還沒弄明白呢,跟同僚兩個人就被對方的一個上司劈頭蓋臉的跟訓什麼似的。現在想想真是莫名其妙,然後各種噴我們的軟體設計的怎麼怎麼滴,後來又跟同僚在飯店總結了一下對方要求的什麼文檔,呆了一個星期後就回來了。第一次出差學到了一個不大不小的經驗并運用到以後的工作中去----出差的時候或者公司内部會議的時候很有必要帶上紙和筆,要不然溝通下來還是很容易忘記或者忽略到一點重要的東西的。
發洩可以、抱怨可以,但牢記這是私底下的事兒!
後來也着手開發了一些軟體,總體來說波瀾不大。從15年5月份開始基本上一直着手忙活着貴州的項目,感覺跟他們打交道得做好受氣的準備,好多時候都感覺很扯淡,他們讓我們配置修改一點東西跟催命鬼使得,“哎呀呀,你們這個功能得趕緊弄啊”;當我有些資源需要他們配合的時候真特麼跟蝸牛還慢,有的技術人員他們這邊的項目協調人都指使不動,想想也是醉了。每次下班過後我都跟李哥抱怨來發洩心中的怨氣和怒氣!有時候發郵件的時候也會帶點情緒在郵件裡面,抄送給李哥的時候李哥對這種情況特别跟我做了指導,總體上是說就是對面溝通或者處理問題的是盡量控制自己的情緒吧之類的。後來跟李哥學會了怎麼處理這種事情(算是比較靈活了吧或者小油條一枚),起碼學會了面對這種情況郵件該怎麼發吧。事實上李哥是個經驗比較牛叉的同僚,從他身上确實學會了不少東西;由于我們兩個住在一個标間,說實話他比我的工作多的太多了,白天在貴州忙貴州的項目,晚上回來我看電影或者畫畫的時候他還得忙公司其他的項目到很晚,偶爾也會聽到他對第三方的抱怨和吐槽,但是該做的工作還是仔細認真的完成,這點确實是值得學習的優點!想想我白天還在抱怨這怎麼怎麼滴,那怎麼怎麼滴,還真是汗顔。當然不能說後面我都沒抱怨過,也會各種吐槽,隻是吐槽仍然是私下裡吐槽,從來沒有帶入到工作中去罷了。慢慢學會了心平氣和的跟對方溝通了。
要學會說不!
在跟第三方對接的時候,真不能什麼都滿足他們的要求,該拒絕的時候就拒絕,當然拒絕的時候不是無謂的拒絕,要有理有據,這樣才有說服力。剛開始貴州項目要上線的時候對方毫無道理的或者是感覺想懶省事的原因居然要求我把開發好的apk查分成3個獨立的apk然後配置三個入口來啟動不同的頁面;當時我就怒了,先不說拆分起來很麻煩,不用拆分也可以實作他的要求。直接拒絕之!然後按照我提供的啟動方式在他們的背景配置好入口一切OK;這是我第一次明确的拒絕别人的要求,是以記得很清晰;當初要是不假思索的答應他們差分成3個,上線後後來又增加的許許多多的需求,其結果簡直不敢想象的!
後來也拒絕過其他項目的一些毫無道理的要求,都是有理有據的拒絕,對方也對拒絕的理由表示接受。拒絕也是需要方法滴

!
最後别忘了擠點時間給自己充電
對于開發人員來說,是需要對自己不斷充電的,這樣才會不會做一個隻會粘貼複制的程式員(其實當你在粘貼複制一個功能的時候,難道不會想到這或許是代碼重構或者提煉的契機嗎?),要時長吸收新鮮的血液來補充自己。下面羅列一下自己充電時閱讀的相關書籍: 《android第一行代碼》(算是android入門書籍,也是自己轉android後閱讀的第一本android書籍,大緻翻翻即可) 《android群英傳》自己出差期間周末閑着沒事逛書店的時候免費翻看完了 ,裡面的有些東西也是可以借鑒的。 《android核心剖析》這個書比較深,當然有些章節還是可以檢視的 《android開發藝術探索》(android進階用比較不錯,也是自己時不時查閱的書籍) 《android設計模式源碼解析與實戰》(這本書寫的很好,很實用,對android源碼中用到的設計模式進行了說明,極具閱讀價值) 《代碼大全》:這不書很厚,厚不僅是指頁數多,内容也很“厚”,裡面好多項目經驗和代碼經驗可以參考應用到實際項目中去;簡直是一個詞典。 《java程式設計思想》:這本書不論何時都是查閱相關資料的經典書籍! 《Effective java》:也看了幾遍,每次檢視都有收獲。 《重構,改善代碼既有設計》:這本書前前後後翻看了好幾遍,上面的例子在看第一遍的時候也都敲了一遍,是很牛逼的一本書,很值得開發人員讀一讀。 《java多線程程式設計》:這本書也是比較經典的,單獨來看的話會比較枯燥,我第一看的時候看到了一半就看不下去了;但是後來結合ImageLoader和picasso的源碼在查閱這本書,頓時感覺收獲滿滿,目前列為以後必讀書籍之一。 《java8實戰》這本書也感覺不錯,對java8的學習很有幫助,目前還在閱讀學習中,這本書是出差的時候周末沒事去書店逛蕩,然後看了一部分頓時感覺很有買的必要就果斷入手了

。
《人月神話》:大學時候看過,沒看懂;目前又買了一本正在翻看中。 《人件》:這本書看起來,怎麼說呢,也是每次看都有不懂的感受和收獲,算是比較經典的軟體工程類的書籍了。 《程式員你惹不起》:業内牛人的經驗總結,算是一本程式員雞湯書籍,閑暇的時候也可以讀讀。 android和java開發優化方面的書籍也翻閱了那麼幾本,并且收獲還不錯!什麼groovy、Python,nodejs也自學過(甚至nodejs論壇的源碼也讀了個遍),不過沒怎麼用到項目中去,估計都忘了,技術這玩意不用就忘很正常。
當然也不能總是被技術開發封閉了眼界,一些其他有用的書籍也是可以看看的 《在小吃店遇到凱恩斯》《王二的經濟學故事》《微觀經濟學》等經濟類書籍也可以讀讀,開闊眼界或者用來裝逼用也是好的
! 總之要不斷有意識的學習和擴充視野
在這兩年多的時間裡也着實寫了好多篇技術價值一般的部落格,雖然技術價值不高,但是寫部落格這個習慣我覺得我還是有必要保留下去,多做總結總比不總結強,當然也要提高寫部落格的品質,即可裝逼也可提高自己對技術的了解何樂而不為呢!
自己的失
有得就有失,由于自己轉了android後完全放棄了對背景開發的研究和學習導緻好多背景的東西都忘光光了,雖然後來在android開發期間也開發了一個背景,但是好多知識點還是忘光光了,現在在重新拾起來還真得下一番功夫! 還有正如什麼所說,自己團隊開中的經驗相對而言有點少了(雖然也參與了公司幾個項目的團隊開發),算是比較缺少團隊開發中的溝通交流的經驗吧!前面雖然對重構做了很多的講解,其實在自己開發的幾個項目中,現在隻有最後一個項目的代碼組織還像點樣子,還算比較滿意吧。其他的項目雖然也做到了部分提煉和重構,但是整體上代碼看起來還是很混亂,因為前期的考慮不是充分,現在要全面的提煉或者重構的話會也會花費不少時間和工作量,當然我不會再對他們進行重構了(雖然腦海裡也有些感覺不錯的組織方式)從某方面來說設計模式這種東西了解了思想靈活運用之更重要,就用這些組織混亂的代碼作為失敗産品,以此為鑒吧!
還有一個自我感覺很失敗的地方:就是從頭到尾沒有主動跟上司提過加薪的要求(口笨,不知道如何開口,鄙視下自己
)。
總結就到此吧,感覺寫的亂七八糟的毫無章法
