V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
seabornlee
V2EX  ›  程序员

一个程序员的 2015 年 的学习总结

  •  
  •   seabornlee ·
    hkliya · 2015-12-31 19:18:03 +08:00 · 4483 次点击
    这是一个创建于 3253 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Reading

    本文作者为:吕健,发表于「软件匠艺社区」

    又是一年的年终,时间依然如同往年一样匆匆的流逝,为了让自己觉得今年并没有虚度,本文将回顾以下自己作为一个程序员在今年的成长。做一个学习总结,给 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 模仿练习:

    Icons

    Survive in China App:

    Servive in China

    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 。在新的一年持续拥抱挑战,继续不断的挑战舒适区,继续享受成长的快乐。

    13 条回复    2016-01-04 13:01:28 +08:00
    garyzhang
        1
    garyzhang  
       2015-12-31 19:37:43 +08:00 via iPhone
    额,没仔细看,不过楼主好像是在一个外包公司?
    matthewgao
        2
    matthewgao  
       2015-12-31 20:10:31 +08:00
    跟楼主比我好像今年什么都没干…
    cnly1987
        3
    cnly1987  
       2015-12-31 20:15:50 +08:00
    @garyzhang ThoughtWorks 还算比较靠谱的
    seabornlee
        4
    seabornlee  
    OP
       2015-12-31 22:28:29 +08:00
    @matthewgao 楼主不是作者哦,作者是楼主的前同事。
    aljun
        5
    aljun  
       2016-01-01 02:07:30 +08:00 via iPhone
    楼主好棒'!!!想多多交楼,能留个联系方式么?(我绝不是什么猎头或者 HR ,只是个程序猿)
    V2trip
        6
    V2trip  
       2016-01-01 02:45:23 +08:00 via iPhone
    学习一个
    dsharpen
        7
    dsharpen  
       2016-01-01 05:08:49 +08:00   ❤️ 2
    國人一輩子都在各種入門...
    hqs123
        8
    hqs123  
       2016-01-01 07:03:23 +08:00
    都是好东西, IT 初学者学习下
    Lonely
        9
    Lonely  
       2016-01-01 07:16:24 +08:00
    作者到底干啥?东搞搞西搞搞😅
    ilotuo
        10
    ilotuo  
       2016-01-01 09:01:08 +08:00 via Android
    传说中的全栈 被创业公司热爱
    一个顶两个用
    wuxqing
        11
    wuxqing  
       2016-01-01 14:50:00 +08:00
    UniKylin
        12
    UniKylin  
       2016-01-01 19:43:50 +08:00 via iPhone
    全栈等于 00000000000000
    pyufftj
        13
    pyufftj  
       2016-01-04 13:01:28 +08:00
    @dsharpen 哈哈,这句话说的真中我要害。我要仔细反思一下!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3301 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:34 · PVG 20:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.