系统开发和维护的情景,就像一张纸落到水面上,吸饱水后,纸慢慢沉下去;而牛掰的程序员要做的事情,就是想办法不让这张纸沉到底、腐朽。
先讲点题外话,
我的职业经历:
第一个阶段,06年到08年,因为各种原因,换了两三个不同的方向,有的甚至不是做纯粹的程序开发,但总逃不了回归到用程序开发解决问题的路线;
第二个阶段,09年到11年年底,在比较屌丝的创业公司挣扎,负责技术团队,并且是主程;
第三个阶段,12年到14年年中,终于进了一家规模不大但有点“资源”的公司,复杂Web系统开发;终于有机会开始和比自己优秀的人共事;期间企图用世界上最好的编程语言PHP去碾压Java程序员,失败,而且跟我混的 后面还转去做Java了;
第四个阶段:14年下至今,坐标魔都,与更多优秀的人物合作;经历了母婴行业的一个风口,泡沫过后,正在纠结中
10年的职场生涯,技术上有些积累,但总体看是失败的,从忽悠价钱的能力、参与公司整体定位和战略制定的能力、人脉资源的积累等等方面,都不够!结局就是,屌丝!!!
搞技术习惯了,总是在纠结这个方法要放到哪个类里,那个常量要定义在哪个类里,好像没有多余的经历去思考产品、战略、职业发展;总是习惯用技术解决问题,就算想赚更多的钱,也只想用技术去赚。
搞技术的还需要去思考公司发展战略,扯淡?公司发展的好坏关我Niao事!只要发得出工资的公司就是好公司!
你有这样想过吗?我没有。即便偶尔有,但从没这么做过!
题外话讲完了,其实,重点是我前面讲的四个阶段,我把它对应成自己
技术发展的四个阶段:
第一个阶段:学会做出东西;
第二个阶段:拼命补充各种知识,尤其是Big高的开发模式MVC(在PHP世界里,当时MVC确实是Big很高的)、Big高的操作系统*nix、Big高的编程语言Python、Big高的数据库PostgreSQL、Big高的开发框架Yii;
第三个阶段:造轮子,各种框架改写、拼装;
第四个阶段:手中无轮、心中有轮;团队力量才是最大的
那么,我现在的认知中,
对于牛掰程序员的定义是:
能够提出最有效的方案,重构现有的系统代码。
重构从来不是目的,目的要要解决什么问题;那些以重构为目的的工作,基本上都会失败的。
前面写过一篇文字:http://www.cnblogs.com/x3d/p/php-reflection-based-on-namespace.html
里面记录了在PHP语言环境,老的系统与新的语言特性下的框架如何共存的一些实践心得。
基于那些工作,利用业余时间,我又继续做了一些实践,见前一篇文章:http://www.cnblogs.com/x3d/p/5791645.html
标题是《面向对象编程乱弹》,这标题......请原谅一个屌丝内心无处不在的Big情节。
之所以不厌其烦的做一些这样的基础的、看似没有意思的工作,出发点,其实是希望团队的小伙伴在看我的博客时,能有些触动和反思,对大家的编程之路有点引导作用。
一而再、再而三的意思
是想表达我在几次重构的过程中的一种感觉。技术上的一个想法,要想落实到现有系统中,必须一而再的两次实验和总结的过程,再而三就是到了灵感迸发,一次性搞定的状态。
所以,在无数这样的中小创业团队中,日常开发都是遵循以交付功能为目的的生存法则下,别说再而三了,连一而再的可能性几乎都没有。我也是没有直接拿团队内部的系统代码做尝试,这样出问题的后果是严重的。
我如何能给团队小伙伴创造这样一而再、再而三的环境呢?