最近一直在考虑这个问题,比如SAP ERP,基本靠配置就可以满足客户绝大部分需求。
而JAVA世界中的轮子越来越多,貌似什么东西都可以找到。而且客户也在进步,不再追求华而不实的定制功能,好像买一台电视机一样,不会提出把面板改成机器猫图案的,那么按照20/80原则,软件80%的基本功能可以事先确定下来,不再需要每次重复开发。从这点来讲,是越来越简单了,以至于高中生也可以加入进来。但是,剩下的20%,会越来越困难,因为,既然用了别人的轮子,那么要完成20%的功能,除了必须的工作外,还要深入到轮子的内部,彻底了解实现机制,并且按照已然存在的规范去开发,显然造成了一定困难。轮子往往越来越集中到少数大企业,比如SUN\IBM\MS,他们处于商业考虑,不断搞出花样,那么可怜的程序员也要跟着学习新的轮子,而事实证明,这些工作是浪费生命,而且不会有太大的技术上的提升。
从这点来讲,是越来越难了,而且,越来越无聊了。
一直在寻找银弹,一直失望,那么,大家来讨论吧,你觉得软件开发是难了还是简单了。
参加就有分

解决方案 »

  1.   

    我认为凡是做了2-3年的java程序员应该不会再为懂hibernate不懂spring这样的问题烦恼了,java技术无非就是构建在java语法与设计模式之上的一个又一个应用而已。所以对于程序员来说,应该是越做越简单的。没有成长的程序员就会像楼主说的,越来越难。
      

  2.   

    我是实习生(现在在公司里)。
    我觉得应该是变得简单了吧,
    因为东西都让Sun给写好了,
    拿过来直接用就行了,
    只要知道他是干什么的
    就可以写了。
    我懂的也不多。
      

  3.   

    最主要是有些框架的广告做的太多,而程序员的最大毛病就是好奇,只要有新的就认为是好了
    跟风的越来越多我总体感觉软件开发越来越容易了,但是仁者见仁,智者见智
    有些东西会用了,不见得能用好有几个能真正明白struts的内部机制?!这是一把双刃刀
      

  4.   

    我觉得学习的过程难了,开发的过程相对简单了。科技在不断的发展,对于IT业来讲,如某某公司又开发了什么什么工具、语言、框架,其实无非就是在简化我们的开发过程,使我们专注于更加重要的事情。但同时我们就必须理解这个东西,吃透它才能更好的解决我们的问题。例如
    有了struts我们不用再像以前一样自己用servlet构建自己的分层机制了。
    有了spring的IOC和AOP,使我们的系统具有更好的扩展性和可维护性。所以在前期学习的时候,变的困难了,我们必须理解和掌握它,但在开发的时候却变的越来越方便,使我们的精力用到了更加重要的地方。
      

  5.   

    我认为凡是做了2-3年的java程序员应该不会再为懂hibernate不懂spring这样的问题烦恼了,java技术无非就是构建在java语法与设计模式之上的一个又一个应用而已。所以对于程序员来说,应该是越做越简单的。没有成长的程序员就会像楼主说的,越来越难。::::说的精辟!!!
      

  6.   

      个人觉得项目越做到后面,就越来越简单啊。
        呵
       我说的是web开发这块啊
        
      

  7.   

        1.从整个软件开发的历史来看,从最原始的纸带打孔式编程,到汇编语言,到B语言C语言,再到现代的面向对象编程语言C++、JAVA等,软件开发的难度显然是大大降低了。没有用C或是更古老的编程语言开发过大型项目的同学可能对这点没有体会吧,呵呵。
        2.如果仅仅说java,java1.1基本上是没有生产力的(就是不适用于开发大型项目),java应该说是从1.2、1.3版本开始流行的,现在java已经发展到了6.0(还是7.0?)。对于年轻的java程序员来说,学的可能是5.0的java,根本没有用过老版本的java,那么我可以告诉你,用惯了5.0,再去用1.4、1.3、1.2的java,你会觉得非常别扭、非常不方便、非常不好用。从这个角度来说,java语言是越来越简单易用了,那么对于开发来说也是越来越容易了。
        但是,实际真的是这样吗?答案即不是“是”,也不是“否”。
        首先,java语言本身越来越易用,现在的IDE也越做越好,还有很多、很好的开源项目、框架,帮你解决了这样、那样的问题,用java开发项目确实是越来越容易了。想想以前,用servlet+jsp+JDBC开发一个应用,得写多少个servlet?得写多少JDBC代码?你要考虑解耦合、事务等等各种各样复杂的问题。现在呢,SSH框架横空出世,帮你把MVC解决了,耦合解决了,ORM解决了,事务解决了,你可以专注于业务代码了。
        但是,框架本身又带来很多问题,首先你得学习框架吧?本来你以为学了java,你就可以说我精通java了,可以出去找工作了。错,大错特错!现在几乎是个java程序员都懂得struts,懂得hibernate、ibatis、spring、webwork的也不少,哦对了,还有ajax,ajax这个东西只是一种思想,具体的实现恐怕没有100也有80吧,你说你能懂几种?还有数据库,你至少得精通一种主流数据库吧,比如Oracle、DB2、MSSQL等。嗯,现在还有什么SOA,SOA也只是一种思想,它的实现也有很多,不过还好就一个WebService算是最流行的,那么你会WebService吗?WebService的实现方式还有n种呢!
        总而言之,java语言本身的进步、加上各种框架、技术的帮助,java开发确实是越来越容易了。但这个是建立在技术熟练的基础上的。如果对这些个框架、技术不会玩、玩的不熟练,那么对你来说java开发其实是越来越难了,因为学习这些框架、技术的成本比学习java语言本身的成本还高,因为要学的技术太多了。而且更严重的是,这些个技术不是一成不变的,而是在不断变化中的,所以你得必须不断学习新技术,那么可以认为这又增加了java开发的难度。    说了这么多,其实我真正想说的是
        1.要不断学习,充实自己,那么开发就会变得简单起来;如果自己的技术落后了,那么开发将会是将很困难的事。
        2.但是,也不要被什么SSH这些表面东西所迷惑,以为会用SSH就牛了?更重要的东西其实是SSH背后所遵循的设计原则,为什么要用Struts,什么是MVC?为什么要解耦,我直接new一个实现类不一样吗?ORM有什么意义,到底是用ORM呢还是直接JDBC,如果用ORM那么是用Hibernate还是ibatis呢?思想或者说是设计模式比框架本身更有意义,因为框架是会变化的,而思想、设计模式是不变的(至少变得比框架要慢得多吧)。套用一下中学老师的话:不要死记硬背,要在理解的基础上记忆。会用框架相当于死记硬背了,理解则是指要理解框架背后的思想,那么以后框架升级了甚至更换了,那么你学起新的框架也就省力了,因为不管是什么框架,他的精髓你已经都知道了,你需要学习的只是他的表象。
      

  8.   

    应该是工具的进步使得开发(编程)变得简便了,以前用文本编辑器,比如记事本、写字板、ultraEdit等等,要使用最基础的javac、java等命令行,现在有Eclipse、XmlSpy等等,有丰富的快捷键、提示、自动语法检查、自动编译等等,更有图形化的编程工具,不如某某Builder但是开发的东西越来越复杂了,更加丰富的UI,更加复杂的底层架构,强大的功能就像原始社会,人们的工具只有木棒、石块等等,只要能打到野兔、野鹿,填饱肚子就可以了
    而现代社会可以造出飞机、航母,但是要探索月球、火星
      

  9.   

    java三个有名的轮子ssh,真是想说爱你不容易,上手还算容易,等你看了书,有了要求,稍微深入一小下子,哈,原来完全不是那么回事。
      

  10.   

    呵呵,没有想到有这么多回复了,谢谢大家讨论,请继续,另外要说说那个版主紫竹,关我小黑屋很积极,见帖子(http://topic.csdn.net/u/20090701/11/4390055c-7e09-44c1-83f3-1e986f64376f.html),第一个上,现在要讨论正经问题了,人呢,我很想听听你的意见?
      

  11.   

    方向理解对了就简单,盲目追逐就难!
    注重Java的内核!
      

  12.   


    不解,什么是java的内核?
      

  13.   


    按我的理解,java最核心的东西有3样:java语言本身(不包括那些个轮子、框架之类的),设计模式(所谓的轮子、框架,其实就是用java语言实现了这些设计模式),JVM(我的观点是如果要开发大型企业级应用,必须懂得JVM)
      

  14.   

    楼主的大部分观点都认同,而且这样的模式开发项目,所需要的周期在不断的减少。
    但楼主如下的观点还是不怎么认同吧:
    [轮子往往越来越集中到少数大企业,比如SUN\IBM\MS,他们处于商业考虑,不断搞出花样,那么可怜的程序员也要跟着学习新的轮子,而事实证明,这些工作是浪费生命,而且不会有太大的技术上的提升。]对于一个想要通过掌握有深度的技术,以使自己在这个行业立足的人而言,这已经是不得不考虑的问题。
    虽然工作才3年,但自觉自己已经跻身于开发这“20%”工作的人群中,因此也有着相同的思考,这是我态度比较乐观而已。在我那项目耗时8个月,其中引入了若干的开源项目,也就是楼主说的轮子吧,而我的工作就是把这些项目以组件的形式拼装到我的项目中去。
    其实这样的过程绝没有想象的简单,往往出现在某个环节的问题都会和某个组件挂钩,这就不得不强迫自己去追根溯源。这个过程真的很痛苦,毕竟虽然网络很强大,但此时真正有用的只有反编译,看代码。虽然耗时,但这却也是吸收的过程。
    复杂的做简单其实并不难,但简单的做复杂就没那么容易,很多开源的项目就是没事干把简单的连接功能做成异步通讯框架。但这样的过程必然有其用意,理解这个真的很有用处,在日后自己开发一些针对自己公司的“轮子”时可以显示出来的。写这个以共同勉励吧,其实“拿来主义”很好,只要拿来了去研究;否则是自掘坟墓,毁了自己项目,还断了自己前进方向。
      

  15.   

    其实 JAVA就和做其他事情一样,基础好,在看其他的都会很容易
      

  16.   

    现在的学习曲线是越来越陡峭,使用曲线是越来越平坦了
    原来编程学的是语言,现在变成学框架了
    软件开发难易总是并存的,少数人写难的底层,大多数人写简单的上层......说不定哪天代码会自动实现新的功能,自动修复bug,希望在我有生之年不要看到
      

  17.   

         MS没恶搞什么新花样,都是围绕快速便捷高效强大,每出现个东西都可能成为MS大本营今后的一种规范,做dotnet开发相对很轻松.
         倒是那些ibm,sun整天在恶搞,故意把水搅混,下面一大堆第三方的小喽罗在跟风,倒也有少数精品,然而大多数都是个人行为,不能成为规范的次品太多,做出一大堆互相类似和重复的东西,浪费大家的时间和生命不说,还不知道里面隐藏了什么BUG,哪一天停止版本更新了其中的BUG就不再修正了,你就歇吧;这些个人行为最常干的就是每出个主版本很多方法过时不可用了,配置跟着变了,繁琐得很;没事去open-open之类开源网站,那上面哪天不死一两个技术.     
         熟悉这些轮子有什么用,不会有太大的技术上的提升,你再提升能升到哪去?最多是小小地改良.GOOGLE出一篇解决方案,把SPRING,HIBERNATE3.2.5源代码下下来改一两行然后重新编译一把,你就以为自己飞升和圆满了?
         很多时候根本不需要"还要深入到轮子的内部,彻底了解实现机制",你丫一写代码的,找些成熟的主要的框架,熟练使用,实现功能就OK了,少开口闭口彻底,深入什么的,也不怕别人笑话.搞这行的性格孤僻缺乏沟通交流,省出点时间陪陪家人是真.     
      

  18.   

    楼上
    如果GOOGLE都有现成的方案,基本可以断定属于80%范围内
      

  19.   

    如果不彻底了解、不深入
    最简单的用一个Hibernian,也就是瞎玩,问题一堆
      

  20.   

    我觉得是 越作越复杂
    特别是这几天作 webservice 用到的jax-ws
    看似方便 但还要深入他 我已经糊涂了
      

  21.   

    我觉得变容易了 要不大家都说天下代码一大抄
    只要有不会的去谷歌baidu一下就有
      

  22.   

    我是学习net的,感觉net的系统越来越大,但是编程真的是越来越简单了,但是很多时候,这样的下来我们只是知道怎么用,不知道为什么要这样用,这个就是我最大的感触。编程把人变的原来越傻了
      

  23.   

    难与易看你是在那个开发层面上了
    我是搞.net的 感觉里面学的东西很多啊  而且只有学习深入了才能达到开发自如
      

  24.   

    Java太泛滥了,免不了向vb那样遭受新一轮语言的淘汰!