【写在前面】看到博主的这几篇文章,真的感触,收获,收藏到自己博客,让自己在IT迷茫时候,翻出来再次品读。原文转自:http://snowolf.iteye.com/blog/377937,再次感谢原文博主的精彩经历与分享。

在2010年的最后一个月里,我终于告别了为期两年的煎熬。

两年前,当我满怀欣喜的跳到一家公司后,迎接我的是为期两周的紧急短任务,这就是对新入职员工最好的历练。

这个任务其实听起来很简单,赶在移动终止wap计费接口前,争取一笔年前的wap计费收入,换言之——更改计费接口。这个任务其实对于一般工作了3年左右的人来说都是小菜了,但当我真正开始看代码的时候,我傻眼了——这代码还不如我大学时代写的漂亮呢!一个类中就一个方法,一个方法上千行,一个方法中一个数据库连接跨越多个数据库操作。且不说代码行数吓人,就是这个数据库操作就让人无比无奈——对于一个要更新的数据,先查询,然后更新;删除数据也一样,先查询是否存在,然后再考虑更新……诸如此类的操作数不胜数,数据库检索永远只有按照“唯一”规则取出来非唯一的数据,然后按照优先级,取得第一条数据。我在看过千余行此类型的代码后,顿时有种无以言状的痛,这个词叫崩溃!

拿到新的计费接口包后,就开始对代码开始全面改造。按照习惯理解,计费操作应该封死在一个业务模块中,但其实不然。这里,网络层调用数据库层,业务层调用网络层,偶尔也完成数据库层操作,域对象还会自己调用业务层,或者数据库层初始化自身数据。说白了就是想起来什么,就在哪用什么,完全没有章法。于是乎,调整计费接口需要我这样的“大拿”级人物来处理。对每个原有计费接口方法调用处都做“TODO”标识,然后记录文档(对代码不熟悉,以免出现新问题)。接着,建立独立的计费业务实现类,对外提供接口,包装第三方计费接口实现。经过18个小时的奋战,完成全部方法的调整。看看表,凌晨4点钟,回想来公司的时间,昨日上午10点。回到家里,一觉睡到8点,头痛欲裂,这就是我的周末礼物!事后,听到一位“博士”曾经这样评价加班一词,曰:“不加班的员工就不是好员工!”

看着这样的学生级别的代码,我真的很有心把它全部重构,我认为一个有如此之大用户量的公司,不会让自己的项目有这样或者那样的漏洞。但是,我错了。所有的民企都要面对一个问题——生存问题!大家都在拼命赶在政策变化前,拼命捞钱,避免被兄弟公司吞掉,或者被挤垮!在完成这个任务后,当我想要奋力重构代码时,我被安排到其他任务上,再然后,有如此,再然后,更如此。终于,有一天我找到了一个词形容自己,我就是一个空降兵。什么都能做,什么地方都是我的战场,神马都是浮云!

2008年底就这样告别了,在熬夜改代码的日子里,在全公司集体加班到10点都是常事的日夜里。

虽然,现在是2010年末,但我却很难想起来2009年一年,我都做了什么。在乏味的肉眼和代码中,在不断的跟各个部门项目干系人沟通的口水中。似乎我什么也没有留下来,没有沉淀什么东西。

也许,你不能想象,用肉眼人工识别代码差异是个什么工作!但是当时的DM就这么要求我,甚至是每一个人。我们的工作最主要的一项就是“合代码”。要合并即将上线的新功能到线上代码;要在线上代码基础上,修正刚刚爆发的bug,零时再合并需要同期上线的功能。肉眼识别,在svn的环境下,我们还被要求肉眼识别。多年之后,我终于完全退化了svn合并代码的能力。

除此之外,每当我打开log4j的配置文件,就仿佛看到了天书一般。数千行log4j的配置,让人难以下咽。修改一个小地方,就得所有人跟着动!因此,所有员工入职的第一件事情就是学习“log4j标准”,那种明显存在代码理解误区的自定义标准!

在这样一个环境中,很多新技术难以施展,很多历史问题总要上演。数据库主键自增由触发器控制,表与表之间缺乏主外键关联,字符集非要以GBK为主!一切表征,只能说明,这些技术起点,源于学生时代,并几乎止步不前了。说到这点,我不得不提,曾经有个项目多表之间以用户名字段做表关联,而用户名本身是不唯一的,当我检索一条数据时,竟然花费了550ms,当我强制用户名唯一后,检索只需要5ms。这简直不是一个数量级,但这就发生在我周围!

在这样一个环境下,该做点什么?我的技术热情无处施展,技术的止步就等同于倒退!该做点什么?该做什么?于是,我把我的技术全部整理在博客中,于是乎,意外出书。也许2009年,对于我工作上没有什么记忆,因为出书的热情完全对冲了工作上的不悦,让我感到平衡。唯一让我印象深刻的是有这么一个人,在我高烧三天在家整理对外接口的时候,无视我的邮件,将一个接口发给合作方,但当我回到公司后,问我的第一句话却是工作如何如何安排,进度等等。用这位仁兄的经典台词就是:“人人都是CPU,你必须让你的人时刻保持满负荷”。很可惜,我是个人,还不到机器的份!不是有句名言吗?“把女人到男人用,把男人当牲口用,把牲口当机器用!”我想,这哥们的觉悟不是一般的高!

那些冲突的日子里,我几乎无法入眠,左侧卧入睡,就一定会半夜心悸醒来。每天看到这个人,就感到鸭梨很大,而且无法消化!

终于,有一天,这哥们想到了降薪降级的办法让我走。而我,最终还是抱有希望的留了下来。

调整部门后,我以为可以做点实在的事情。当我要修改一个控制器,部署上线时,我问我的Lader,Controller写到哪里。Lader说,什么是Controller?(控制器就是Controller)当时我就心凉了!难道我又进火坑了?这么基础的名词,居然不知道?!2010年,就以这样一个开场白展开了。

接下来的工作超级有规律,每三个月交接一次工作。每个季度我都要把交接工作写进季度考核中。有时候,我只能苦笑,“哥们同志是块砖,哪里需要哪里搬!”我被定为“擦屁股大拿”!渐渐的,我还是沉迷了,颓废了,基本上消失在同事的视野里,似乎我基本上不存在了。

在历尽许多自诩牛人的项目后,我感到毫无收获,于是,我黯然离去。
其实,当初我面试入职的时候,我依然了解这公司的技术起点。由一个面试问题可以窥探其结论。

面试官:“对比Spring的JDBCTemplete跟Hibernate和iBatis的实现,各有哪些优势?”
我简言之:“Spring的实现么有缓存,而Hibernate跟iBatis这一点上完全胜出!”
面试官:“这个完全可以通过继承EhCache的代码来实现嘛!”
听完这句话,我就想到了,这个公司的技术起点还停留在对象继承阶段,还停留在代码开发,而非配置级。这种东西,即便是Spring,也可以通过依赖注入,减少代码开发,直接使用其接口,达到其目的的!
于是,我反问:“能够通过配置级完成相应实现,我们何必要重复值造轮子呢?”

过去的,已经过去了。当我想要尝试通过Java,依托Spring框架面对各种挑战的时候,突然间,我发现很多东西我还没有来得及研究,更别说去运用。我已经没有机会去尝试了!
我曾经有着明显的代码洁癖,可以理解为偏执人格障碍。但今天,我明白了:“技术终究只是工具。工具不是艺术品,工具终究为解决问题而生,为满足用户需求而存在。”如果忽略了技术以人为本的定义,也就失去真正的意义。站在新的角度,就需要考虑新的问题,也就难免需要放弃一些固有熟悉的工具。

写在2010年的最后的一周里,对比两年前,如今的我依然鸭梨巨大,却感到了很多的快乐!人生不是骇客帝国,我不想成为那个该死的电池,被当作CPU来使用,我更想主宰我自己!

我的职业生涯(五) 告别六天工作制相关推荐

  1. P2669 金币,国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十

    题目描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第三天),每天收到两枚金币:之后三天(第四.五.六天),每天收到三枚金币:之后四天(第七.八.九.十天),每 ...

  2. 手机生产:第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件

    手机产能 题目描述 题目分析 题目描述 假设第一天量产1台,接下来2天(即第二.三天)每天量产2件,接下来3天(即第四.五.六天)每天量产3件,以此类推,请编程计算出第n天总共可以量产的手机数量. 题 ...

  3. 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库...

    孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...

  4. 售前工程师职业生涯五个段位,从写解决方案到营销大师的蜕变

    售前工程师职业生涯五个段位,从写解决方案到营销大师的蜕变 写在前面:别忽悠客户,断送自己的职业生涯 一.入门级级售前:销售助手 二.合格售前段位:销售伙伴 三.高级售前段位:用户伙伴 四.蜕变售前段位 ...

  5. 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里

    描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第三天)里,每天收到两枚金币:之后三天(第四.五.六天)里,每天收到三枚金币:之后四天(第七.八.九.十天)里, ...

  6. 在vivo产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升。 假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件 ...

    在vivo产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升. 假设第一天量产1台,接下来2天(即第二.三天)每天量产2件,接下来3天(即第四.五.六天)每天量产3件 - - ...

  7. django 按钮的样式_Python学习第五十六天记录打call:Django视图

    一个视图函数或者类,简称视图(view),是一个简单的Python 函数(类),它接受Web请求并且返回Web响应.响应可以是HTML页面.一个重定向.一个404错误.一个xml.json数据.或图片 ...

  8. 爱创课堂每日一题第五十六天-对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?...

    前端是最贴近用户的程序员,比后端.数据库.产品经理.运营.安全都近. 1.实现界面交互 2.提升用户体验 3.有了Node.js,前端可以实现服务端的一些事情 前端是最贴近用户的程序员,前端的能力就是 ...

  9. 21天打卡Andoid学到的一些小知识-第十五十六天

    ​ ​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸 今天我们学习打卡的内容是:Android 10.0 app获取不到序列号解决方案 当然此次学习的文章链接将会放置文章末尾,有需要 ...

最新文章

  1. 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)
  2. “一切都是消息”--iMSF(即时消息服务框架)入门简介
  3. 开源就是爽:Android L 源代码完全公布
  4. stotybord如何添加子视图_Revit软件技巧合集(建筑构件、视图处理、建筑表现、高级技巧)...
  5. 推荐系统顶会RecSys’20亮点赏析
  6. php 正则 尖括号,php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符...
  7. wget 和 curl 区别
  8. 怎么找到安装在Linux系统中的Windows软件的文件
  9. Introduction to Computer Networking学习笔记(十一):flow control 滑动窗口详解
  10. Hbase 二级索引
  11. 超详细的八种RAID磁盘阵列原理及优缺点
  12. PES、PS、TS详解
  13. Linux——网络桥接
  14. 终端中显示git分支名称的方法
  15. putty连接虚拟机服务器,SSH:putty通过SSH连接固定IP的虚拟机
  16. 前端第二章:3.HTML文档声明、存储容量换算、字符编码、字符集、HTML帮助文档Zeal
  17. 学海泛舟系列文章开篇语
  18. 数据结构与算法-单链表的常见面试题(单链表的长度,单链表倒数第k个数据)
  19. Arduino ESP8266 创建OneNet设备(二)
  20. linux设置rx8010时间,【经验】实时时钟模块RX8010SJ精度的软件校准方法

热门文章

  1. python中main.py是什么意思_关于python:什么是__main__.py?
  2. 两台虚拟机互相ping通(互相通讯)
  3. IOS系统降级小工具
  4. 软件------关于spacedesk分屏软件的使用说明(包括下载和具体启动方式)
  5. openssl生成RSA格式及pkcs1与pkcs8格式互相转换
  6. 网络表示学习简单总结(一)
  7. 金蝶外贸进出口行业解决方案(K/3 Cloud、EAS版)
  8. oracle数据比对工具
  9. java中写html标签,java写html剔出标签
  10. 办公一般用什么邮箱?办公邮箱价格哪个好?办公邮箱怎么登陆?