本文April 03, 2006发于 SamuelChen.net
软件人现在该关注什么?企业需要什么样的软件人?
目前的软件开发趋势是语言简单化、趋同化、脚本化。实际上大家应该能看到一个这样的现象,那就是从C/C++到java/.net再到Script,软件开发的技术热点有着逐渐一个越来越简单、越来越重视功能实现的趋势。
馄饨时代,电脑远未普及,多数还是采用terminal的方式,主要是以shell为主,C/C+等各种语言兼而有之。个人电脑则是以apple为代表,其开发语言主要以机器语言、assembly和各种basic为主。
个人电脑普及早期,比较有代表性的cobal/fortran专注于个别领域(金融和科学计算),smalltalk是oo的一个尝试一个学术派的语言,那么这一时代的C/C++则是同时注重于运行效率与开发效率,和机器平台底层又有着紧密联系,从而在桌面为王的时代无往不利大红大紫;当然少不了优雅的被C/C++压制的Pascal。
WWW风起云涌,个人电脑普及后期,这一时期的代表语言/技术就是com/vb/java/.net,脱离了平台(当然本身即是平台或者固定于平台),专注于快速实现,偏重于桌面,而又向Web发展,减低了对机器/系统的以来,但又需要自己掌控机器的相当一部份;而脚本类的,由于unix的影响自始自终存在,但到这个时候基于web才逐渐有了比较大的影响。
目前,所谓的web2.0的时代,也就是基于web的分工、合作、沟通时代,更注重的是软件功能的创新和实现,如何更快更高效的建立起系统是主要目标,同时所注重的是运行效率和网络响应效率,而如何增加用户美好的体验则是核心问题。这一时期的代表语言分为php/python/asp (c#/vb.net)/java等server端脚本语言/技术和javascript/flash/servlet/activex(早期就有)等client端语言/技术。
java由于其自身的运行、开发效率问题,而主要存在于企业 web应用中;而.net单机开发已经完全比不上其针对web的开发和加强;另外由于价格上的优势,LAMP(Linux+Apache+Mysql+ php/perl/python)这完全免费的体系则脱颖而出,从而造就就了server端脚本语言的辉煌。
javascript作为客户端比较轻便的技术,加上近来红透半边天的ajax技术,基本上不存在敌手,flash/java servelet/activex 由于其笨重和需要安装,则逐渐减少了应用范围,只在少数地方出现。
那么,我们可以看到,软件开发技术的发展是由软件应用的发展所带来的。由单机到网络,再到网络协作,一步一步有信息孤岛走向真正的地球村。
在这个时代,Samuel 觉得现在更应该关注的是script类语言(包括php/c#/python/perl/js…),soa,rss,tag … 这类的技术再加上framework。更多的应该关注于应用的创新,用户体验的优化,沟通协作的加强。
而在未来的时期,Samuel 推荐关注的领域是从web协同、信息共享而逐渐发展、明晰的,语义分析、信息识别、视频音频以及结合新一代的搜索引擎 这样一系列的技术。
当然,术业有专攻,不同的领域注重的还是有区别的,不可能要搞嵌入的也关注这些的,Samuel 在这里关注的是企业/民用、Web/单机领域。
最后,Samuel 想说的是,无论是个人还是企业,更看重的仍然应该是人的思维能力,创新能力,分析解决问题能以及团队合作能力。
ps. 本文是看到cnblogs Dflying Chen的 .NET方向高级开发人员面试时应该事先考虑的问题 一文,在讨论中所想到的。
有所感,有所发。