从最开始说起吧,自从毕业后进入这家公司以后,我就一共换了好几位领导,他们有的出去创业,有的高升,有的另谋高就,还有还在这里苦苦挣扎的现在这位。而我依旧原地踏步,甚至混得比以前更差了,我也想知道这是为什么?
从技术上讲,以前我很想成为一名架构师,可是现在我觉得可能那并不适合我,在公司里面这么久,我最喜欢的状态就是安安静静敲代码。而我认为的架构师不是简简单单的搭个架子,什么SOA啊,什么设计模式,这些东西都要在把需求吃得比较透的时候,才能更好的发挥作用,否则很可能起负作用。有时候我真的觉得代码有些过度设计了。当项目变得越来越大,就变得越来越难维护。随便改动一个小的地方,就可能引发很多的bug,特别是在有很多服务,很多dll的情况下。我最近帮忙改的bug基本上都是因为dll不匹配引起的,或者没有丢最新的dll引起的。
有一段时间看了TDD的书,测试驱动开发,我现在觉得这是一个很好的方法。在我现在的公司,每次做一个项目,测试资源都比研发资源多。我觉得其实好多bug都可以通过自己编写代码测试来发现,确实如此。但我们并没有那么多时间来写测试代码,甚至有时候我们加班加点连自己的功能都没有完成,就已经到了提测的时间,这又是另外一个问题。
我自认为我还是一个比较谨慎的人,但这并不是说我就不会犯错误,我仍然会,有些甚至很简单。我的谨慎主要体现在我不会随意或者说没有搞清楚,就去改别人的代码逻辑,因此我在项目中的时候,总是能不动则不动,有时候看不顺眼也会进行一些简单的重构。但是我发现我的同事们都比较好动,喜欢去改别人的逻辑,我不说他们应该不应该,从结果上来讲,改了就彪了,而且不是一次两次,测试同学也测试不出来这样的bug,发到外网就出问题。我想说改了别人的代码要改对,没有人能保证每次都是对的,但是一些常用的重构方法,确实会让人少犯一些错误。该学的还是学的。业务不懂是一个方面,但是我们可以一些别的方式方法去避免。
工作的时候,我经常遇到项目做着做着产品同学又要改需求或者说加需求,我们一直很苦恼,有时候为了产品同学的一句话,我们得加班加点好几天,最后发现不能随随便便改,改了这个逻辑,可能另外的逻辑就无法保障了。我记得有一次看到一本书,好像是敏捷开发设计,欢迎用户更改需求,但是我们要做的,就是从最开始就进行可扩展性设计,但是对我这个说一就是一的人来讲,确实不容易想到。随着时间的增加,我可能可以推测,用户加了这个之后,可能还想加点什么。但是自从我来到这家公司,我就根本不愿意为用户考虑或者说我根本没有时间,我考虑的是我怎么去实现,我考虑的是我怎么在有限的时间内完成我的工作。当每一个产品经理都在想着加点什么东西就更好的时候。有没有想过,我们做个东西最主要的目的是什么,有没有想过加这个东西到底价值在哪里?每天投入那么多资源,有产生什么价值了么?现在的工作节奏很乱,来什么就做什么,有什么bug就修什么bug。我是这样想的,在我们在做这些没什么价值的事情的时候,如果说竞争对手稍微比我们在某一个地方做得好一点,或者专一点是不是就可以打败我们了。我们忙忙碌碌那么久,有什么用呢?很奇怪,我为什么要想这么多,我不是应该想怎么提升我的技术能力?怎么找个工资更高的工作么?