下周就要去新公司报道了,换城市(离开北京)+换职业(不做开发),这个决定下得其实还是蛮艰难的。最近一直在反思自己毕业后的这五年工作,自感惭愧,找个地方记录下(主要是这里谁都不认识我),也算是自己的一种反醒以及给过来人提点建议,少走点弯路吧。
08年顶着名校硕士的光环加入了一家非常有名的非软件公司做软件开发,刚开始一切其实都很美好。大外企的各种好在头一年给自己带来了很多光环,当然自己也学到了很多(主要是非技术的东西)。可是从第二年开始,当自己被各种邮件,开会和扯皮的事包围后,技术能力急转直下。然而自己当时还没意识到这个问题,感觉钱还行,也不忙,再加上本来就很迷茫,就得过且过了。直到去年,很多清华北大同事的离职,日复一日的简单重复工作,明显的天花板,不涨的工资,以及家庭原因的集中爆发才让自己后知后觉,才开始反醒,才开始下决心做转变。
然而转变是痛苦的,这五年技术上主要是在windows平台上做一些企业内部业务的处理和展示,主要用一点c++/c#,还有MFC,Winform,WPF,WCF。技术基本上是做的皮毛,一般问题用MSDN,google和stackoverflow就能基本解决。用不到数据库,也用不到什么数据结构,用到一点点网络知识,主要精力都在业务展现上。这一切在我看来招个应届生用一年也能有和我一样的开发能力,唯一懂的多的业务,也长进不多,都是繁杂的重复。所以在自己开始面试和找工作时被bs了很多次,顶着光环人家一般都给你面试机会,但是一旦聊到技术细节,自己很多都答不上来,也曾经一度非常沮丧。庆幸最后找了个技术相关的职位,能够兼顾到家庭和自己后面发展的想法,还算可以,这是后话,暂不讨论。
总结这五年不成功的开发经验,现在想想主要问题如下:
- 目标不明确,由于学的专业不是纯软件,自己误打误撞的进来做软件开发,自己一直没想清楚自己的目标,结果导致自己浑浑噩噩的做了5年开发还停留在原地。
- 缺乏坚持,没能坚持一件事情做到底,自己其实在这五年也自学了一些东西,包括HTML,JavaScript,CSS,Python,Java......也看了不少技术的东西。可都很肤浅,一样也没有深入坚持下去,什么都懂一点皮毛,结果就是什么都不懂。
- 不够勤奋,我从小成绩优秀,学习能力很强,缺乏需要非常勤奋投入才能做成事情的锻炼,所以养成勤奋的习惯,到了工作中才发现要取得成功无不需要加倍的努力才行。
此外从一个非科班出生搞软件的角度,谈谈自己对软件开发的了解:
- 做上层开发学了这么多所谓的语言,框架,技术,其实现在想想万变不离的却是底层的数据结构,操作系统,网络通讯和一些其他的基础的东西。自己也算半路出家,以前总是不屑基础的东西,总认为我懂了WPF,能画出很炫的界面什么就很好了。其实却是认识太肤浅,只有掌握了不变的东西才能应付好上层的技术,否则只会被微软牵着鼻子走。所以对新人来说,打好基础是多么重要,可惜我后知后觉了。
- 除了基础的东西,我认为其次重要的是软件架构,好的架构可以让事情事半功倍,让下面实现具体代码的感觉很轻松。说得过分点,一个好的架构师可以带一群实习生的干活都能出好东西。软件开发越来越不需要我们懂底层的东西,很多现成的轮子可以用,但是要知道怎么搭积木就需要好的架构师了。所以我觉得平常要多看好的开源架构,多学习框框的东西,当然轮子和积木知道哪里能拿到。最怕的是像我一样,只会google找积木搭,这就是所谓的纯码农了:(
- 其次是业务,开发很多时候要懂业务,很多开发的很不屑业务,认为技术才最重要。其实很多时候业务才是王道,软件开发在我看来大部分时间都是给业务做服务的,做支持的,公司都是靠业务才能赚钱的。所以开发人员也要懂业务,特别对那种不是很想一直做开发的来说,懂业务又懂技术也许会给你更多的机会。
- 最后是软件开发的职业发展,个人的看法是码农能爬上去做架构师和经理的其实很少,基本一个萝卜一个坑,我见到开发能一直做到退休的都是老外,人家基本没有title的,这样的我观察无非两种人。一种是对业务很精通,同时对技术系统又很懂的,公司少不了他。一种是对技术很热情很钻研,能力很强,又不想去要什么title的,基本可以挑大梁。我想国内的情况虽然不太一样,不过基本可以借鉴下老外。当然不做开发还有很多可以做,我想说的是开发是可以做一辈子的,就看个人的想法了。这个问题我自己也一直在想,目前只有一条模糊的路,也得摸石头过。
以上是作为一个经验尚浅的码农对工作五年的反思,基本是想到什么就写什么,思路有点乱,敬请谅解。