又是一年的年终,时间依然如同往年一样匆匆的流逝,为了让自己觉得今年并没有虚度,本文将回顾以下自己作为一个程序员在今年的成长。做一个学习总结,给 2015 画上一个句号。
读书
博客
今年博客从 JavaEye 迁移到简书。从此终于可以舒服的用 markdown 编写博客。
由于去年总是希望一次写一篇完整的 blog,导致去年可怜的只写了一篇博客。今年采用KISS的方式写博客,小的idea写短博客,大的idea写长一些的。随着时间推移不断重构博客内容,这样负担不会太重。
按照KISS原则,今年一共写了 19 篇博客:
http://www.jianshu.com/users/MjqJJb/latest_articles
敏捷实践
自从在国内项目中打拼以来,一直有一个愿景:
『不仅高效的交付高质量的软件,而且还要交付一种高效的工作方式』
今年终于在为 Lenovo 做项目的时候,达成了个这个成就。不但成功交付超高质量的软件,而且帮助客户进行了敏捷团队改造。
在于传统企业管理模式和瀑布流开发方式的碰撞的过程中,保持敏捷团队的优势,并且让敏捷跟传统企业的 Water-Fall, KPI 进行了融合。在 Lenovo 和卓越的小伙伴们共同打造了务实的敏捷团队实践: Water-Scrum-Fall
对这部分内容现在只写了一篇博客,2016 年还会继续总结:
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
终于在正式项目中使用 Ruby。Ruby 水平直线提升, Ruby 已经成为我的首要编程语言之一。曾经渴望使用的 Rails, 今年也有幸参与 Rails 的项目。
基于 RSpec 的 TDD/BDD 在今年有质的提升。以前习惯于从底层向上层慢慢构建代码,TDD 属于 classic 方式,less mock,下半年开始尝试 mockist 方式写测试,尝试从上层向下层写代码。在按照从上向下 TDD 的时候,之前困惑的如何使用 test 定义 scope 的问题迎刃而解。
写过的与 Ruby 相关的博客:
Eclipse Plugin
Eclipse 是我工作前 5 年中,以及学生时期主要的开发工具,今年有幸做了 eclipse plugin 开发的项目,回想起来非常激动,也终于实现了当年为 eclipse 写 plugin 的愿望。
eclipse 背后的 OSGi 扩展性非常强大,eclipse 犹如 GUI 时代的 Emacs, 此部分掌握的内容涉及:
eclipse plugin CI/CD
OSGi
eclipse SWT/JFace SDK
写了两篇关于 eclipse 的博客
iOS Development
虽然今年没有参与 iOS 项目,但是整理出了《iOS中RSA加密解密算法的使用》
整理出了 iOS TDD Sample,内容包括:
ObjC TDD: Objective C, OCHamcrest, OCMockito
Swift TDD: Quick
UI Test: Appium 和 RSpec 两个方案
iOS TDD repository 地址: https://github.com/lvjian700/ios-tdd-samples
Javascript
一直不想使用 Angular.js, 但是今年有机会在项目中尝试 Angular.js。 以TDD的方式写js, Angular.js 的组织方式的确很赞
使用 gulp.js 搭建 front-end 基本 CI pipeline
coffeescript, 刚开始使用感觉很赞,尤其配合 node.js 使用。虽然语法非常简洁,但是个人还是比较喜欢直接用javascript
尝试使用 Zombie.js 进行 Font-End UI test, 这个框架很轻量级,但是不适合大量的Ajax应用
在项目中尝试使用 ES6, template string 和 class 都非常好用,但是项目原因没有继续使用ES6
编写了2篇博客:
UX and Mobile design
Mobile design 是今年获得的重要技能之一。花了一个月的学习了 https://designcode.io/ Design part。 现在已经基本掌握 iOS UI Design 方面的技巧。
由于 get 了这个技能,让我在思考如何将 idea 转换为 product 有了新的思路。当脑袋迸发出一个新 idea 时,不再是从 tech 角度思考问题,而是从 design 的角度考虑,这样的思路更能贴近真实的用户场景。
新的思路
一句话描述 idea
构建用户故事,发现故事中主人公的痛点
使用 design 的手段验证想法
最后是实现(以前始终从实现角度出发, 先想我要用 xxx 技术)
编写一篇关于 design 的博客
在公司组织的hack中,尝试使用新技能分析 idea 和 design app
Survive in China
Micro services Wall
__icons模仿练习__:
__Survive in China App__:
DevOps
以前在 DevOps 方面知识几乎为零。今年开始涉及 AWS 和 Docker 容器化技术。 AWS 和 Docker是今年 get 的重要技能之一。
AWS: EC2 instance, S3, CloudFormation, Route53, LoadBalance, AutoScalingGroup, AWS RDS
Docker: docker, docker-compose
使用 Splunk 查询日志
使用 Bamboo 搭建 CI, 终于抛弃了刀耕火种的 Jenkins
写了 3 篇关于 Docker 入门的文章
Microservices architecture
Microservices 也是今年获得的重要技能之一。从下半年开始参与基于Microservices 架构的项目,这个项目帮助客户进行老系统改造。按照Microservices对老系统进行拆分,centralize 各种服务,数据。
从下半年开始,基本跟 UI 说拜拜了,每天都在跟 JSON API,部署打交道。
由于项目属于客户核心 API, 项目对代码和设计质量要求非常高。这种高要求带来很大的挑战,也引出了很多知识:
更多的考虑 REST-ful API 设计,开始使用 HAL + JSON 这种 self discoverable 的 JSON 数据格式。
接触 CQRS 读写分离的架构方式,采用 CQRS 可以将 API 中的写入和读取分别优化,但是副作用很大,只适合很少的场景。
由于 Microservices 架构推荐拆小的 API services, 这个对 DevOps 是非常大的挑战,今年 AWS 和 DevOps 经验大幅提升.
Microservices 间的集成测试也是一个挑战,目前采用Consumer Driven Contracts的方式,使用 Unit Test代替 Integration Test
这部分总结大多保存在个人的 evernote 中,由于涉及客户的内容,暂时发布2篇博客:
总结
纵观今年的成长,和去年一样依然涉猎了很多方面的内容。今年成功的步入了Ruby Programmer,也算是达成了这些年的希望达到的成就。
在 Ruby 团队中有幸跟当前 2012 RubyConfChina 讲师 FredWu 共事(Slim 作者之一),这也是今年非常大的惊喜。
技术方面通过 Microservices architecture 让我更多的思考架构和 DevOps 方面的东西。这让我意识到软件开发并不只是 Development, Ops 也是非常重要的环节,自动化 Ops 可以节省开发人员的生命,没有全方位的自动化工具的支持,Microservices 会进行的非常痛苦。DevOps 和 Microservices architecture 会是2016需要持续积累的方面。
自从加入ThoughtWorks 两年以来,终于达成了打造敏捷团队的成就。
团队管理,开发流程,如何同软件开发一样都没有银弹。『拥抱变化』应该永恒的目标,在项目的演进中需要及时改进团队,需要持续关注团队成员提升。
人始终是团队中最有价值的部分,关注人,关注沟通,拥抱变化,轻流程和制度,这样可以让每个人都发挥最大的优势。
虽然今年计划专注于 mobile 方面,但是计划不如变化。不过在 mobile 方面也收获了 TDD 和 Mobile Design的能力。
我们常讲软件开发需要拥抱变化,个人成长也需要拥抱变化。 今年跳出了舒适区,步入了纯英文环境的团队,这对我来说是一个非常大的挑战。现在正在享受这种挑战,当然挑战背后带来的是飞速成长。
再见2015。在新的一年持续拥抱挑战,继续不断的挑战舒适区,继续享受成长的快乐。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。