一個(gè)程序員的2015年的學(xué)習(xí)總結(jié)

reading.jpg

又是一年的年終,時(shí)間依然如同往年一樣匆匆的流逝,為了讓自己覺得今年并沒有虛度,本文將回顧以下自己作為一個(gè)程序員在今年的成長(zhǎng)。做一個(gè)學(xué)習(xí)總結(jié),給 2015 畫上一個(gè)句號(hào)。

讀書

博客

今年博客從 JavaEye 遷移到簡(jiǎn)書。從此終于可以舒服的用 markdown 編寫博客。
由于去年總是希望一次寫一篇完整的 blog,導(dǎo)致去年可憐的只寫了一篇博客。今年采用KISS的方式寫博客,小的idea寫短博客,大的idea寫長(zhǎng)一些的。隨著時(shí)間推移不斷重構(gòu)博客內(nèi)容,這樣負(fù)擔(dān)不會(huì)太重。

按照KISS原則,今年一共寫了 19 篇博客:
http://www.lxweimin.com/users/MjqJJb/latest_articles

敏捷實(shí)踐

自從在國內(nèi)項(xiàng)目中打拼以來,一直有一個(gè)愿景:

『不僅高效的交付高質(zhì)量的軟件,而且還要交付一種高效的工作方式』

今年終于在為 Lenovo 做項(xiàng)目的時(shí)候,達(dá)成了個(gè)這個(gè)成就。不但成功交付超高質(zhì)量的軟件,而且?guī)椭蛻暨M(jìn)行了敏捷團(tuán)隊(duì)改造。

在于傳統(tǒng)企業(yè)管理模式和瀑布流開發(fā)方式的碰撞的過程中,保持敏捷團(tuán)隊(duì)的優(yōu)勢(shì),并且讓敏捷跟傳統(tǒng)企業(yè)的 Water-Fall, KPI 進(jìn)行了融合。在 Lenovo 和卓越的小伙伴們共同打造了務(wù)實(shí)的敏捷團(tuán)隊(duì)實(shí)踐: Water-Scrum-Fall

對(duì)這部分內(nèi)容現(xiàn)在只寫了一篇博客,2016 年還會(huì)繼續(xù)總結(jié):

Sessions

  • 卓有成效的程序員
  • Agile in Practice
  • How to encapsulate UI in OOP way
  • Not only OOP in ruby
  • iOS consulting Q&A session

Workshop

  • How to create a iOS app

Ruby

終于在正式項(xiàng)目中使用 Ruby。Ruby 水平直線提升, Ruby 已經(jīng)成為我的首要編程語言之一。曾經(jīng)渴望使用的 Rails, 今年也有幸參與 Rails 的項(xiàng)目。

基于 RSpec 的 TDD/BDD 在今年有質(zhì)的提升。以前習(xí)慣于從底層向上層慢慢構(gòu)建代碼,TDD 屬于 classic 方式,less mock,下半年開始嘗試 mockist 方式寫測(cè)試,嘗試從上層向下層寫代碼。在按照從上向下 TDD 的時(shí)候,之前困惑的如何使用 test 定義 scope 的問題迎刃而解。

寫過的與 Ruby 相關(guān)的博客:

Eclipse Plugin

Eclipse 是我工作前 5 年中,以及學(xué)生時(shí)期主要的開發(fā)工具,今年有幸做了 eclipse plugin 開發(fā)的項(xiàng)目,回想起來非常激動(dòng),也終于實(shí)現(xiàn)了當(dāng)年為 eclipse 寫 plugin 的愿望。

eclipse 背后的 OSGi 擴(kuò)展性非常強(qiáng)大,eclipse 猶如 GUI 時(shí)代的 Emacs, 此部分掌握的內(nèi)容涉及:

  • eclipse plugin CI/CD
  • OSGi
  • eclipse SWT/JFace SDK

寫了兩篇關(guān)于 eclipse 的博客

iOS Development

雖然今年沒有參與 iOS 項(xiàng)目,但是整理出了《iOS中RSA加密解密算法的使用》

整理出了 iOS TDD Sample,內(nèi)容包括:

  • ObjC TDD: Objective C, OCHamcrest, OCMockito
  • Swift TDD: Quick
  • UI Test: Appium 和 RSpec 兩個(gè)方案

iOS TDD repository 地址: https://github.com/lvjian700/ios-tdd-samples

Javascript

  • 一直不想使用 Angular.js, 但是今年有機(jī)會(huì)在項(xiàng)目中嘗試 Angular.js。 以TDD的方式寫js, Angular.js 的組織方式的確很贊
  • 使用 gulp.js 搭建 front-end 基本 CI pipeline
  • coffeescript, 剛開始使用感覺很贊,尤其配合 node.js 使用。雖然語法非常簡(jiǎn)潔,但是個(gè)人還是比較喜歡直接用javascript
  • 嘗試使用 Zombie.js 進(jìn)行 Font-End UI test, 這個(gè)框架很輕量級(jí),但是不適合大量的Ajax應(yīng)用
  • 在項(xiàng)目中嘗試使用 ES6, template string 和 class 都非常好用,但是項(xiàng)目原因沒有繼續(xù)使用ES6

編寫了2篇博客:

UX and Mobile design

Mobile design 是今年獲得的重要技能之一。花了一個(gè)月的學(xué)習(xí)了 https://designcode.io/ Design part。 現(xiàn)在已經(jīng)基本掌握 iOS UI Design 方面的技巧。
由于 get 了這個(gè)技能,讓我在思考如何將 idea 轉(zhuǎn)換為 product 有了新的思路。當(dāng)腦袋迸發(fā)出一個(gè)新 idea 時(shí),不再是從 tech 角度思考問題,而是從 design 的角度考慮,這樣的思路更能貼近真實(shí)的用戶場(chǎng)景。

新的思路

  • 一句話描述 idea
  • 構(gòu)建用戶故事,發(fā)現(xiàn)故事中主人公的痛點(diǎn)
  • 使用 design 的手段驗(yàn)證想法
  • 最后是實(shí)現(xiàn)(以前始終從實(shí)現(xiàn)角度出發(fā), 先想我要用 xxx 技術(shù))

編寫一篇關(guān)于 design 的博客

在公司組織的hack中,嘗試使用新技能分析 idea 和 design app

  • Survive in China
  • Micro services Wall

icons模仿練習(xí):

icons.png

Survive in China App:

china-app.png

DevOps

以前在 DevOps 方面知識(shí)幾乎為零。今年開始涉及 AWS 和 Docker 容器化技術(shù)。 AWS 和 Docker是今年 get 的重要技能之一。

  • AWS: EC2 instance, S3, CloudFormation, Route53, LoadBalance, AutoScalingGroup, AWS RDS
  • Docker: docker, docker-compose
  • 使用 Splunk 查詢?nèi)罩?/li>
  • 使用 Bamboo 搭建 CI, 終于拋棄了刀耕火種的 Jenkins

寫了 3 篇關(guān)于 Docker 入門的文章

Microservices architecture

Microservices 也是今年獲得的重要技能之一。從下半年開始參與基于Microservices 架構(gòu)的項(xiàng)目,這個(gè)項(xiàng)目幫助客戶進(jìn)行老系統(tǒng)改造。按照Microservices對(duì)老系統(tǒng)進(jìn)行拆分,centralize 各種服務(wù),數(shù)據(jù)。

從下半年開始,基本跟 UI 說拜拜了,每天都在跟 JSON API,部署打交道。

由于項(xiàng)目屬于客戶核心 API, 項(xiàng)目對(duì)代碼和設(shè)計(jì)質(zhì)量要求非常高。這種高要求帶來很大的挑戰(zhàn),也引出了很多知識(shí):

  • 更多的考慮 REST-ful API 設(shè)計(jì),開始使用 HAL + JSON 這種 self discoverable 的 JSON 數(shù)據(jù)格式。
  • 接觸 CQRS 讀寫分離的架構(gòu)方式,采用 CQRS 可以將 API 中的寫入和讀取分別優(yōu)化,但是副作用很大,只適合很少的場(chǎng)景。
  • 由于 Microservices 架構(gòu)推薦拆小的 API services, 這個(gè)對(duì) DevOps 是非常大的挑戰(zhàn),今年 AWS 和 DevOps 經(jīng)驗(yàn)大幅提升.
  • Microservices 間的集成測(cè)試也是一個(gè)挑戰(zhàn),目前采用Consumer Driven Contracts的方式,使用 Unit Test代替 Integration Test

這部分總結(jié)大多保存在個(gè)人的 evernote 中,由于涉及客戶的內(nèi)容,暫時(shí)發(fā)布2篇博客:

總結(jié)

縱觀今年的成長(zhǎng),和去年一樣依然涉獵了很多方面的內(nèi)容。今年成功的步入了Ruby Programmer,也算是達(dá)成了這些年的希望達(dá)到的成就。

在 Ruby 團(tuán)隊(duì)中有幸跟當(dāng)前 2012 RubyConfChina 講師 FredWu 共事(Slim 作者之一),這也是今年非常大的驚喜。

技術(shù)方面通過 Microservices architecture 讓我更多的思考架構(gòu)和 DevOps 方面的東西。這讓我意識(shí)到軟件開發(fā)并不只是 Development, Ops 也是非常重要的環(huán)節(jié),自動(dòng)化 Ops 可以節(jié)省開發(fā)人員的生命,沒有全方位的自動(dòng)化工具的支持,Microservices 會(huì)進(jìn)行的非常痛苦。DevOps 和 Microservices architecture 會(huì)是2016需要持續(xù)積累的方面。

自從加入ThoughtWorks 兩年以來,終于達(dá)成了打造敏捷團(tuán)隊(duì)的成就。
團(tuán)隊(duì)管理,開發(fā)流程,如何同軟件開發(fā)一樣都沒有銀彈。『擁抱變化』應(yīng)該永恒的目標(biāo),在項(xiàng)目的演進(jìn)中需要及時(shí)改進(jìn)團(tuán)隊(duì),需要持續(xù)關(guān)注團(tuán)隊(duì)成員提升。
人始終是團(tuán)隊(duì)中最有價(jià)值的部分,關(guān)注人,關(guān)注溝通,擁抱變化,輕流程和制度,這樣可以讓每個(gè)人都發(fā)揮最大的優(yōu)勢(shì)。

雖然今年計(jì)劃專注于 mobile 方面,但是計(jì)劃不如變化。不過在 mobile 方面也收獲了 TDD 和 Mobile Design的能力。

我們常講軟件開發(fā)需要擁抱變化,個(gè)人成長(zhǎng)也需要擁抱變化。 今年跳出了舒適區(qū),步入了純英文環(huán)境的團(tuán)隊(duì),這對(duì)我來說是一個(gè)非常大的挑戰(zhàn)。現(xiàn)在正在享受這種挑戰(zhàn),當(dāng)然挑戰(zhàn)背后帶來的是飛速成長(zhǎng)。

再見2015。在新的一年持續(xù)擁抱挑戰(zhàn),繼續(xù)不斷的挑戰(zhàn)舒適區(qū),繼續(xù)享受成長(zhǎng)的快樂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,314評(píng)論 25 708
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實(shí)...
    香橙柚子閱讀 24,110評(píng)論 8 183
  • 有是一個(gè)周末一整天浪費(fèi)。 突然覺得自己好卑賤,一直不停的想給卓打電話,一直在心里默默的告訴自己,只要他回來我就...
    大番茄瑞瑞閱讀 228評(píng)論 0 1
  • 0405晨讀時(shí)刻 1、看到第一個(gè)故事,突然想到幾日前伸手黨的情形。當(dāng)年孔明先生也是做足準(zhǔn)備才敢借東風(fēng)。沒有十足的準(zhǔn)...
    yz靜等花開閱讀 246評(píng)論 0 1
  • 昨日做下的事: 去拜訪一位高中朋友,聊了很多,也參觀了他工作的地方。 去游覽國貿(mào),這才像是心目中的北京。 練散打,...
    文建偉CZYH閱讀 296評(píng)論 0 1