面对不断变化的IT技术,如何能够既要保证从容有度,与时俱进?又要避免狗熊掰棒子,浪费精力,让我们一无所获,两头挨巴掌?
用户需要有成熟、稳定、可用的软件,不会太care你的技术。
这个最低的要求,我们也很难满足。
Web2.0的风潮来了好长的时间,却对于开发企业软件的开发人员来说,似乎无动于衷,最多知道几个名词,掌握一点ajax的技术。
一些人极力将企业软件和互联网应用划清界限,我们设计企业软件是..?
仍然是单板的导航设计,
仍然是点击N次,靠着厚厚的用户说明手册指引,才看到自己最关心的内容,最后发出感叹,我操!原来还有这么个功能!。
仍然是蹩脚的alert。
仍然是粗鄙不堪的操作界面。
用户用的不爽的时候,仍然是沿用者老套、低效的反馈机制。
我们测试时,光功能性的bug, 都迎接不暇,别说有针对性的可用性测试。
但是我们的技术的确在像走马灯一样变化,struts1, struts2, freemarker, hibernate, ibatis, ejb2, spring, seam, ejb3, ESB.
那我们自问,学习技术的目的是做什么?
1)有一个好的就业机会
2)Productivity 。
3)用户体验
4)其他
注意这是个排序,用户? who cares!
第一个,很正常,现在招个爱学习的开发人员,很不容易,应该鼓励。但方向要正确,浪费时间比浪费money更要命。
重点说一下第二个。
不管技术新不新,我们从未知到已知,是一个学习曲线,有高有低,如果是团队的群体行为,有的人掌握的好,有的人差。不管怎样,第一次,总是痛并快乐着。有是代价会很高,我们需要做衡量值不值。
我经历过delphi的VCL,OWL, VC的MFC, AWL,到BS时代的MVC框架,struts1到2,spring, hibernate,ibatis。
我的观点是,技术上注重积累,成熟的技术和不断积累的知识、资源,庞大的用户群和强大的开发社区,才是提高productivity的根源。
只有能够从开发思想的层面上改变的技术,才值得去学习。
我观察到,有两个C(continuous和contribution)机制的技术框架、平台、应用,总是能够在短时间内,超越其他同类竞争,爆发出很大的能量,同时潜力也不可低估。
举几个例子:
1)首推PHP中的word press, 几年了,数不清的plug-ins,其之所以紧跟潮流,就在于不断有新的开发社区contribute的blug-in产生。每个产品经理,都应当把 word press作为一个现象来研究。类似想wordpress学习的商业软件产品公司有,Sugar CRM, Salesforce等,都是靠社区生存的。
2)eclipse. 同样是基于plug-in的平台,有多少开源的、商业的组织、团队、商业公司在contribute,围着它打转转.
3) spring, container的概念,可以包容、聚合很多的开发资源、技术。有人仅仅应为XML configuration的一点不爽,就把google的guice 推上了天,做人,做技术,格局都要大,不能只看一点。用过spring的人,恐怕很少有人能代表团队说,俺们不准备在下一个版本、项目、产品中试用了。
4)jquery, 这个用了好久,谁用谁知道!不算官方的,光社区提供的好用的plug in,就有几百个,当然这个不是jquery最主要的优点,但是contribution的威力,不容小视。
所以技术,还在于我们去孵化、成熟后,持续improve才能爆发出威力,如果我们不断的change,其实得不偿失,如果你是一心想做一个好的产品、项目,你会发现,有时换技术,就像足球换教练,解决不了问题,意识跟不上,换什么都不行。
同类的change,要慎重,如struts2 到 spring的MVC ,prototype 变到 jquery, struts2 到seam.
现在有人说seam适合企业级开发,这个很片面,如果你在struts2上没有积累,换什么都没有积累,如果你很成熟,换到seam的代价会比较大。特别是前端技术,因为seam扼杀了前端, 回避前端是错误的,及其错误的,普元那些害人不浅的构件开发,已经证明了世上没有永动机。
这是个方向的问题,技术的重心会从server端移到client, 用户体验的时代已经来了,很多公司对前端开发非常重视,美工将被边缘化,很多的项目已经不要美工了,会CSS、DHTML、javascript的前端工程师,很吃香,而seam恰恰扼杀了前端,大便一样的tag, 并不会提高什么效率,当需求变化时,冲击到界面的设计时,你会很痛苦。我们不仅要考虑到第一次很爽,更要想到应对变化是所需要的灵活。
JSF整个就是一个魔鬼,你有时间学习他们, 为什么不去学习更容易、更灵活的前端的技术?你会发现,自己的思路会更开阔。很多的东西,根本不用server来实现,或者和server灵活结合,就可以达到以前要大量开发的东东,例如Jquery的基于behaviour与structure分离的技术,让页面很简洁,很容易看清页面的结构。
我的策略是,技术是基础,积累才能提高,用户是目的。成熟的架构+创新的扩展,server端,团队应当继续构建、成熟以spring为基础的企业应用开发平台,深度挖掘、孵化、封装,同时将精力转向客户端。努力实现客户端与server端的粘合剂开发提高开发效率,建议的平台是spring + jquery.
顺比说一下,silverlight2.0 出来了,Actionscript3.0也出来了,现在RIA技术争论的焦点是flex vs silverlight. 习惯与写java累的程序员,已经落后太多了,赶快去了解一下更广阔的天空吧
分享到:
相关推荐
针对社会对创新产品的需求,采用可拓创新方法,同时为了确保系统高效、结构清晰以及良好的可扩展性、可维护性与代码可重用性,结合计算机技术中的MVC模式,提出了基于MVC模式的产品可拓创新软件.通过分析产品创新过程中...
电子行业深度报告:技术创新+多领域需求扩展,光学行业景气度全面提升.pdf
#资源达人分享计划#
Java-Base64算法_创新_防止表单重复提交 JAVA企业级基础课题(HashMap那些事) 企业架构师必备技能(JAVA核心技术反射) JavaWeb之基础(手写实现Tomcat服务器) java多线程编程 纯手写实现SpringIOC实现过程 JEE企业级...
满足当前大量成熟应用的延伸及扩展 构建数据处理平台 • 数据治理标准 • 集成企业各种数据内容 • 实现模型创建及管控 • 实现数据资产化 3、后台:稳定成熟的业务系统,保障业务持续运营的核心系统 提供核心...
直播带货的本质:是颠覆式创新还是对传统电商模式的扩展.pdf
随着信息通信技术推动智能电网创新发展工作的开展,电力云平台的建设举足轻重,并在业务集成、数据共享等方面取得了突破性进展,然而业务功能的迅速增加及系统规模的膨胀给电力云建设带来了新的挑战。文章分析了电力云...
无论是内部或者外部的用户都可以随时访问系统,Web和Client/Server应用都可以进行同样的业务处理,不同的应用模块共享逻辑组件,通过现有应用系统中的逻辑可以扩展出新的应用系统,这也就是目前应用系统的发展方向。
XIV存储产品的创新设计使其能够实现传统架构通常无法达到的非凡性能优化。这种优化将允许您充分利用系统资源并且在所有的系统硬盘驱动器之间自动分配工作负载。此外,它还允许管理员利用系统固有的一系列高级功能,...
通过学习不同的技术架构和设计模式,我对如何构建具有高性能和可扩展性的系统有了更清晰的认识。课程提供了许多实际案例和最佳实践,让我了解了如何利用各种工具和技术来优化系统的性能和可靠性。这些知识将对我未来...
SaaS(Software as a Service)是近些年来软件产业的一次创新性进步。随着Internet的迅猛发展,将软件作为一种服务形式提供给客户的需求逐渐增加。而“软件即服务”(Software as a Service)这个新模式的出现正是顺应...
一方面,数据中心的数据集中化和虚拟化的发展需一个高性能和高扩展性的安全架构,另一方面,在企业互联网安全上,网络应用向复杂化发展,由此引入的深度可视化的需求和细粒度的应用带宽管理,行为管理以及威胁防范的...
首先,互联网架构师需要具备深厚的技术功底和丰富的实践经验,能够对业务需求进行分析和设计,以确保系统的高效性和可扩展性。其次,互联网架构师需要拥有敏锐的商业嗅觉和创新意识,能够将最新的技术趋势应用于...
增强的架构体系 云和虚拟化创新 工作频率视负载量而变 最新的 I/O 子系统 PCIe Gen4 SMT8 并发多线程 120MB 片上L3 缓存 独特的高带宽设计 片内带宽: 7TB/s 高速外联:25 GB/s 性能提升 40% 与POWER8相比 14纳米...
云计算可望提高应用程序部署速度、促进创新和降低成本,同时还增强经营敏捷 性。Sun 抱持一种全面的云计算观点,因而可以支持各个层面,其中包括服务器、 存储、网络和虚拟化技术,这些技术将云计算环境扩展到虚拟...
6. **安全性和可扩展性**:由于采用了SSM框架,系统在安全性和可扩展性方面都有很好的表现。同时,系统的分层架构也使得未来的升级和维护变得更加简单快捷。 总的来说,SSM项目百色学院创新实践学分认定系统是一个...
在企业的数据量高速增长,系统架构日益复杂的今天,用户对易扩展、易管理的存储系统的需求愈发强烈,而一直倡导统一存储平台、简化存储管理的Network Appliance(NetApp)公司正是顺应了这一存储需求的大势,从而使...