作者:江南白衣 

   除开五大或者ThoughtWorks这种要什么有什么,进去做打字也能光耀门楣的不谈。如果是嫁到一个普通软件公司,怎样的环境才能最快的成长呢?
   首先基本的公司项目管理水平是必要的;其次是稳健而不保守的公司技术选型和一班能沟通的同事。

    更重要的,是要有一个严苛的环境,那些古训说的都没错,越是严苛,成长越快。 然后有些引导与助力,让你在严寒中节省体力,过得好些的,就是最佳的成长环境了。

    一,最复杂多变的业务规则,最难侍候的客户
         大多数人碰上这两样东西都是愁眉苦脸,天天抱怨。其实应该把它视为入门锻炼的:
        第一阶是努力用细密的编码迎合复杂的业务,以金牌服务的态度接受客户的善变和每样需求都要24小时有取的bt。充分打磨过的眼耳口心,才是个合格的IT人。如果业务规则都清的像水,项目时时都是以我为主的,反是在做toy application,不算入了IT的门。
       打磨之后,如果肯静下心来总结,设计架构如何适应改变,流程如何做到快速更新部署,就是第二阶段的进步了。
       一直做ERP,自问有足够复杂的业务(因为不熟悉业务,有些不复杂的也变复杂了)和麻烦的客户(自己不是大公司,麻烦的客户就会很多),但在第二阶段还是不很静得下心。

    二,最严格的性能要求,准确性要求,错误恢复要求
        最好是那种每天N万人访问,几亿条数据。还有准确性很严格,分分钟几十万上下,如果崩机又要迅速完全恢复状态的项目。
         每天几万人访问的项目没做过,遗憾。
         几千万条数据的项目倒是每天面对,优化学了一点,但没有充分利用严格的环境去追求改进,遗憾。
         ERP的报表倒是经常会搞到几十万上下的差额,但一直重视不足。
         崩机恢复是最近的项目要求,更爽是这个项目澳国政府居然有一份规范,我说的助力就是指这些了,不用自己慢慢摸索而且经常摸错地方。

    三,最底层的编码
         不要老是高高在上的搞ERP搞.com,偶然尝试一下用到起码C一级的语言,和硬件打打交道,直接写IO口阿,中断阿,都是有就不要放过的锻炼。
         没做过底层编码,只会纯软件的IT人的感觉是不完整的。
         刚好公司最近的项目有要求,捧一本〈Linux Device Driver〉看看。

    四,最高层的设计
        设计、框架--技术人一听就眼红的字眼。但不是每个公司都搞很产品化的项目,或者在项目里自写类库重做轮子。所以,除了刚入行的那段疯狂日子,很高阶的设计其实我也没做多少,多数时间都是应用层的开发。

       虽然自己不写,但却经常都要进行框架选型,也算是蒸发智力的一个地方。Pragmatic Programmer里说的critical的态度很重要,Spring好么?一定要想清楚它好在哪里,不要糊里糊涂的看着quick start就入局了,浑忘了without Spring的世界是怎样的。

       另外,因为有时候开源软件有bug,或者要增强它来吻合项目需求,或者有错了不明就里时直接读源码会更快找到错误。这样就接触到不少优秀开源项目的源码,比如Spring,无形中也会学到他的设计。
        
       如果说Java盛产框架型的项目,php的项目则多是熟透了的Web应用。最近发现php不是以前的php了,应该算入python,ruby一类的动态OO语言,它的那些著名项目一样有着很好的MVC框架。细看之下学到应用设计方面的不少东西。
       
             
     一阵发呆打了这篇字,其实也是提醒自己,目前的环境可以,应该以更好的心态接受更严苛的历练,那些古训说的都没错。