最近,感觉只要听一些软件开发发面的讲座,大家都在谈DP(Design Patterns).而GoF(Gang of Four)也似乎一夜之间尽人皆知,还被戏称为“四人帮”。我真的感到落伍了,所以急忙抽空看了“四人帮”的作品 Design Patterns——Elements of Reusable Object-Oriented Software。另外,软件工程的课程中也恰好讲到了Software Architecture的话题,结合自己正在做的项目,我有了很多感悟。
    在我所在项目组的开发中,大家很少去谈软件的体系结构、设计模式,很少有人去关心extensibility、scability方面的东东,甚至在头脑里没有这样的概念存在。大家所讨论的只限于coding和实现的功能,似乎只要会编码,实现了预定功能就万事大吉了。事实上,我在私下里想了想,如果能够引入layered Architecture和Abstract Factory之类的东东,就可以是我们的软件有很好的扩展性,独立于通信方式。那么,我们的项目在从市级到省级升级时,就不会如此难于扩展和维护。
    我想每一个程序员都应该问一下自己:除了coding,我还会做什么。我希望有一天有更多的人能够在design level甚或Architecture level上讨论问题,而不止是coding level。
    另外,前几天看了程序员杂志中有关用友ERP NC产品的开发报道,感觉还是蛮上档次的。
    不知各位网友开发体验如何?
    谢谢关注!
    关注也有分吆,不够我会续贴此题,我的可用分还有5000哪:)

解决方案 »

  1.   

    你的想法很对。确实是这样,这是很多刚接触软件开发(或者说编程)的学生很容易走进的误区。在实际的软件开发中,虽然一个程序员coding的热情是需要的,但是,更重要的是那些coding以外的东西,那些对系统,对程序的整体理解能力,那些职业程序员所必须的规范化,标准化的东西。虽然,项目开发中,软件的体系结构、设计模式等等更多的是技术负责人、项目设计者所要考虑的事,但也是每个程序员所要理解和尊重的事。
    关于这些,其实CSDN转载过一篇很好的文章:《给浮躁的软件业同仁(1)》--李学凌
    http://www.csdn.net/expert/topic/760/760886.xml?temp=.7638971
    大家可以看看。
      

  2.   

    完整的文章:《给浮躁的软件业同仁(1)》--李学凌
    http://www.csdn.net/expert/topic/760/760886.xml?temp=.9739649
    《给浮躁的软件业同仁(2)》--李学凌
    http://www.csdn.net/expert/topic/801/801068.xml?temp=.5427667
    《给浮躁的软件业同仁(3)》--李学凌
    http://www.csdn.net/expert/topic/801/801075.xml?temp=.1175348
      

  3.   

    Sign,如果你只想写个程序,并且只用一次,或者以后的维护与你无关,则大家没有一个共同沟通的前提了。如果需要软件能有一个更长的生存期,软件工程是少不了的。
      

  4.   

    to hthuguangming(huguangming):这位朋友,你好,我不是研究生,恰恰相反,我是有一年多开发经验的工作人员,我每月不单拿的不只400-600,而且还做兼职,两方老板对我的工作都很满意,自我很安慰。
      可能让你有点失望了,我不是不会编码,而正是因为编的多了才会有着一点点心得。
      我也相信大部分人不会苟同你的看法。
      

  5.   

    软件工程和coding 我们都需要
      

  6.   

    TO seaguard:
      
       我很佩服你,工作一年就‘经验多多’,而且老板欣裳你,是怎样的公司啊?
      

  7.   

    呵呵,有时候整天看编码的书;有时候又整天看软工的书。
    感觉那方面自己的差距都挺大。倘若只会写程序,我认为提高是很困难的。不知大家有没有这种感觉,反正我见过许多这样的人,编程习惯好像是固定的,写多少code也是一样,本来有许多高明的算法或者思想,但他偏偏用自己最习惯的一个,功能实现了,你能说什么?对于只会分析不能写好代码的人,我感觉不可理解,在这样的人手下写代码,会把你累死,而且程序员永远不会让他感到满意。
      

  8.   

    在coding的时候,正因为大多数人的思想里面没有整个项目的轮廓,往往是见木而不见林,对系统的稳定性,可操作性,扩展性,灵活性等方面考虑的太少,从而形成了固定的技法,完成任务就行,这样的代码,连自己去修改的时候都头疼,何况别人呢?