最近一直在考虑这个问题,比如SAP ERP,基本靠配置就可以满足客户绝大部分需求。
而JAVA世界中的轮子越来越多,貌似什么东西都可以找到。而且客户也在进步,不再追求华而不实的定制功能,好像买一台电视机一样,不会提出把面板改成机器猫图案的,那么按照20/80原则,软件80%的基本功能可以事先确定下来,不再需要每次重复开发。从这点来讲,是越来越简单了,以至于高中生也可以加入进来。但是,剩下的20%,会越来越困难,因为,既然用了别人的轮子,那么要完成20%的功能,除了必须的工作外,还要深入到轮子的内部,彻底了解实现机制,并且按照已然存在的规范去开发,显然造成了一定困难。轮子往往越来越集中到少数大企业,比如SUN\IBM\MS,他们处于商业考虑,不断搞出花样,那么可怜的程序员也要跟着学习新的轮子,而事实证明,这些工作是浪费生命,而且不会有太大的技术上的提升。
从这点来讲,是越来越难了,而且,越来越无聊了。
一直在寻找银弹,一直失望,那么,大家来讨论吧,你觉得软件开发是难了还是简单了。
参加就有分
而JAVA世界中的轮子越来越多,貌似什么东西都可以找到。而且客户也在进步,不再追求华而不实的定制功能,好像买一台电视机一样,不会提出把面板改成机器猫图案的,那么按照20/80原则,软件80%的基本功能可以事先确定下来,不再需要每次重复开发。从这点来讲,是越来越简单了,以至于高中生也可以加入进来。但是,剩下的20%,会越来越困难,因为,既然用了别人的轮子,那么要完成20%的功能,除了必须的工作外,还要深入到轮子的内部,彻底了解实现机制,并且按照已然存在的规范去开发,显然造成了一定困难。轮子往往越来越集中到少数大企业,比如SUN\IBM\MS,他们处于商业考虑,不断搞出花样,那么可怜的程序员也要跟着学习新的轮子,而事实证明,这些工作是浪费生命,而且不会有太大的技术上的提升。
从这点来讲,是越来越难了,而且,越来越无聊了。
一直在寻找银弹,一直失望,那么,大家来讨论吧,你觉得软件开发是难了还是简单了。
参加就有分
我觉得应该是变得简单了吧,
因为东西都让Sun给写好了,
拿过来直接用就行了,
只要知道他是干什么的
就可以写了。
我懂的也不多。
跟风的越来越多我总体感觉软件开发越来越容易了,但是仁者见仁,智者见智
有些东西会用了,不见得能用好有几个能真正明白struts的内部机制?!这是一把双刃刀
有了struts我们不用再像以前一样自己用servlet构建自己的分层机制了。
有了spring的IOC和AOP,使我们的系统具有更好的扩展性和可维护性。所以在前期学习的时候,变的困难了,我们必须理解和掌握它,但在开发的时候却变的越来越方便,使我们的精力用到了更加重要的地方。
呵
我说的是web开发这块啊
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呢?思想或者说是设计模式比框架本身更有意义,因为框架是会变化的,而思想、设计模式是不变的(至少变得比框架要慢得多吧)。套用一下中学老师的话:不要死记硬背,要在理解的基础上记忆。会用框架相当于死记硬背了,理解则是指要理解框架背后的思想,那么以后框架升级了甚至更换了,那么你学起新的框架也就省力了,因为不管是什么框架,他的精髓你已经都知道了,你需要学习的只是他的表象。
而现代社会可以造出飞机、航母,但是要探索月球、火星
注重Java的内核!
不解,什么是java的内核?
按我的理解,java最核心的东西有3样:java语言本身(不包括那些个轮子、框架之类的),设计模式(所谓的轮子、框架,其实就是用java语言实现了这些设计模式),JVM(我的观点是如果要开发大型企业级应用,必须懂得JVM)
但楼主如下的观点还是不怎么认同吧:
[轮子往往越来越集中到少数大企业,比如SUN\IBM\MS,他们处于商业考虑,不断搞出花样,那么可怜的程序员也要跟着学习新的轮子,而事实证明,这些工作是浪费生命,而且不会有太大的技术上的提升。]对于一个想要通过掌握有深度的技术,以使自己在这个行业立足的人而言,这已经是不得不考虑的问题。
虽然工作才3年,但自觉自己已经跻身于开发这“20%”工作的人群中,因此也有着相同的思考,这是我态度比较乐观而已。在我那项目耗时8个月,其中引入了若干的开源项目,也就是楼主说的轮子吧,而我的工作就是把这些项目以组件的形式拼装到我的项目中去。
其实这样的过程绝没有想象的简单,往往出现在某个环节的问题都会和某个组件挂钩,这就不得不强迫自己去追根溯源。这个过程真的很痛苦,毕竟虽然网络很强大,但此时真正有用的只有反编译,看代码。虽然耗时,但这却也是吸收的过程。
复杂的做简单其实并不难,但简单的做复杂就没那么容易,很多开源的项目就是没事干把简单的连接功能做成异步通讯框架。但这样的过程必然有其用意,理解这个真的很有用处,在日后自己开发一些针对自己公司的“轮子”时可以显示出来的。写这个以共同勉励吧,其实“拿来主义”很好,只要拿来了去研究;否则是自掘坟墓,毁了自己项目,还断了自己前进方向。
原来编程学的是语言,现在变成学框架了
软件开发难易总是并存的,少数人写难的底层,大多数人写简单的上层......说不定哪天代码会自动实现新的功能,自动修复bug,希望在我有生之年不要看到
倒是那些ibm,sun整天在恶搞,故意把水搅混,下面一大堆第三方的小喽罗在跟风,倒也有少数精品,然而大多数都是个人行为,不能成为规范的次品太多,做出一大堆互相类似和重复的东西,浪费大家的时间和生命不说,还不知道里面隐藏了什么BUG,哪一天停止版本更新了其中的BUG就不再修正了,你就歇吧;这些个人行为最常干的就是每出个主版本很多方法过时不可用了,配置跟着变了,繁琐得很;没事去open-open之类开源网站,那上面哪天不死一两个技术.
熟悉这些轮子有什么用,不会有太大的技术上的提升,你再提升能升到哪去?最多是小小地改良.GOOGLE出一篇解决方案,把SPRING,HIBERNATE3.2.5源代码下下来改一两行然后重新编译一把,你就以为自己飞升和圆满了?
很多时候根本不需要"还要深入到轮子的内部,彻底了解实现机制",你丫一写代码的,找些成熟的主要的框架,熟练使用,实现功能就OK了,少开口闭口彻底,深入什么的,也不怕别人笑话.搞这行的性格孤僻缺乏沟通交流,省出点时间陪陪家人是真.
如果GOOGLE都有现成的方案,基本可以断定属于80%范围内
最简单的用一个Hibernian,也就是瞎玩,问题一堆
特别是这几天作 webservice 用到的jax-ws
看似方便 但还要深入他 我已经糊涂了
只要有不会的去谷歌baidu一下就有
我是搞.net的 感觉里面学的东西很多啊 而且只有学习深入了才能达到开发自如