zoukankan      html  css  js  c++  java
  • 【心情】 2013年终总结

    年终总结来的有点晚,计划明天回家凌晨的火车,年前公司的项目几乎都停止了,索性总个结吧~

    2013年,白驹过隙,又是一眨眼~  

    工作上,可以分为两段,

    前半年,在一个大公司做QA,

    很感谢这家公司,记得刚入职的时候,每天7点到公司,那时还是初冬,同事们10点才开始陆续的到公司,一个人,等也不开,看着老大给的各种资料,真的很爽,最初的一个月是我感觉进步最大的一个月,规范的流程,清晰的架构,全方面的了解了什么是测试,这也正是我进来前最想得到的,单元测试,集成测试,系统测试,冒烟测试,坦白讲,这些只是对研发工作本身也是很有好处的,一个利于测试的架构和设计才是靠谱的,这也正是TTD的根本~ 但是如果让架构,程序利于测试,方便与测试,也是需要思考的~ 

    刚入职的时候,虽然已经做过2年研发了,但是和大多数入门的coder一样,也是对TTD不屑一顾的,但是做了3个月QA以后,研发每一次细微的代码升级,面对那些没有良好单元测试的代码,我只能一个针对每一种可能,一遍一遍人工执行测试case, 那时候突然明白单元测试的重要,而良好的单元测试,是依赖于架构,程序的设计是否能够量好的支持测试。 

    公司后端最重要的几个服务的代码简单看过后,发现,设计的时候是根本没有考虑过单元测试的,自动化测试~~ 很难~~ 每一次提测,最enjoy的过程就是code review的过程,一个很好地学习的过程吧~~ 那期间也接触了各种各样的场景, 经典的倒排索引,正排索引模块,流式计算对队列的应用,streaming方式的mapreduce离线任务~~~

    看的多了些,突然发现,之前一直读不懂的书《design pattern》突然能看懂了~ 这也让我着实兴奋了一下,又是无数个夜晚,留在公司读了几本被誉为经典的设计方面的书《重构》《程序员的职业素养》《测试驱动开发》《UML和模式应用》,前三本均强调了“测试”先行的重要性~  

    好吧,再来一个爽字~~ 

    做了8个月的QA后,终于发现自己不是这块料,参与了不少项目,其间有幸和很多优秀的工程师合作,收益匪浅,但是几个月轻量级的coding,大部分都是在做测试case的工作让我“痛苦”不已,没什么压力,但也没什么意思~~ 最终8个月无一漏测,厕纸周期部门20来人中第二的成绩倒也说得过去~~ 混迹了8个月,看遍了公司wiki上感兴趣的分享video后,转部门的企图被经理拒绝后,决定离开~  

    不想在找工作上花太多精力,遂直接给老东家的技术老大发了个邮件,问下可否再收留我,找老大吃了个饭,老大爽快的答应了,没几天就收到了offer,离职手续办了半天后,从决定离开到离开,只有半个月吧~

    六月份,回到了毕业时就加入的公司,公司200来人,除了8个月间新来的几乎都认识,除了有些尴尬外,其他还算顺利,接手了一个比较重要的模块后又加入了一个新项目的开发,只能说,这个项目我做的很用心,特别是那8个月的“学习”而没机会“实战”后,憋着一股劲吧~~~

    我和另外三个同事负责一个核心模块的重构,这个模块只能说很重要,是整个新项目的关键节点吧,我们每个人都提了一套自己的设计方案~ 采集了需求,反复推敲,最终我的方案被采用了,一个设计峰值5000qps的服务,将要跑在我设计的服务上,只能说很兴奋~~

    架构上,遵循几个要求吧

    1. 遵循soa的思想,把服务分层,采用统一的http协议的接口调用,越底层的服务接口定义越要简单,接口定义本身越要稳定

    2. 把更新任务投入队列,控制对底层数据库的访问的并发

    3. 使用粗颗粒的key代替原来的倒排索引,消除倒排索引重建的时延

    模块设计上

    1. 充分考虑可测试性,虽然不能一步到完全的“测试先行”,但起码要保证80%的代码覆盖,

    2. 充分考虑到变化,完成产品要求是基本,还要问清楚哪儿些是需要变化的,需要变化的变量要做到配置里,需要变化的逻辑要做到策略里,另外,设计上GRASP思想也是很重要的一个参考,极度抽象了设计模式~ 

    3. 日志,把正常日志和异常日志也是从上一个东家那里借鉴的,日志的分离利于把关键信息从debug和info的海洋中剥离出来,也利于监控

    然后就是半个月的编码,时间明显短于设计的时间~~有了以上这些考虑,自测非常顺利,系统整个跑起来,半天时间就通了~~ 在严峻的工期下又提前了两天~~~ 

    只能说这个项目我很认真,回报也是明显的:1. 提测后12,000行代码中一共发现了20个左右的bugs【虽然Martin提倡,让测试“找不到任何错误”】;2. 也是因为充分考虑到了变化,产品后期的需求变化的改动也相对easy,只需要添加一个单测,添加一个不同的策略就搞定,大部分甚至只需要改下配置~~ 这也留给我更多地时间去看些想看的书,去思考~~~ 

    生活上~

    因为12年打球伤了歇了一个月后,终于接受了自己已经“老”了这个事实,不能在球场上和20岁的青年人抢篮板了~ 以后打球是要的,但要聚焦于外线,苦练投篮和运球,身体接触的动作少做~

    女朋友这学期也很忙, 上半年繁重的专业课,下半年更是紧张的申请学校递材料,最近开花结果,拿到了心仪的港中文的offer,羡慕嫉妒恨啊,其实我也想读书,不过~~  我老了,还是老实工作,好好攒钱吧~

    展望2014~ 想做的事情太多了,总是浅尝辄止,老爸给我的评价“常立志,不立常治”很是准确,工作之余争取做到以下几点吧:

    1. 着重于算法,需要好好的学习一下,这是基本,凡事不能不求甚解,不能只知道怎么搞,还要知道为什么~

    2. 健康上,2013总是熬夜,头发越来越少了~ 虽然有基因的原因,但是熬夜也是不好~~ 少熬夜,多运动

    ~~ a za a za fighting ~~

  • 相关阅读:
    DRF内置限流组件之自定义限流机制
    DRF内置权限组件之自定义权限管理类
    DRF内置认证组件之自定义认证系统
    java基础(15)--多态
    java基础(13)--静态变量、静态代码块、实例代码块
    java基础(12)--static变量/方法 与 无 static的变量/方法的区别
    java基础(11)--封装
    java基础(10)--空指针异常
    java基础(9)--方法重载
    java基础(8)--键盘输入
  • 原文地址:https://www.cnblogs.com/igloo1986/p/3534312.html
Copyright © 2011-2022 走看看