读《一位资深程序员对当前软件行业的技术感悟》有感

今天早上坐车的时间正好读完了这一篇文章 《一位资深程序员对当前软件行业的技术感悟》,觉得有一点意思,可以拿来写写

 

作者有15年的IT工作经验,3年的管理经验,想想自己,如果算上大学自己两年做的项目,加上工作6年的经验,也有8年了

作者说:“不过在这同时,给公司内部也做了很多J2EE的项目,例如公司的门户网站,公司内部的release平台,以及team内部用的小工具。不过好景不长,从开发就转向了管理,一管就是3年,在这三年中不夸张的说去趟厕所都是跑着去跑着回,这还不是最杯具的,最杯具的是根本没有时间写任何代码!!!

其实很多人期待从技术转向管理,技术人员转让管理人员最大的挑战就是会有一种失去安全感的感觉,发现好像不看技术了,只做纯管理,貌似没有了生存的根本,当初自己也在犹豫了很久,也做了差不多一年的管理,这段时间很累,在民企管人是一件很苦逼的事情,除了考核权,发现没有其他的权力了。后来坚决不做了,有从事技术,不过大都数时间都很少在写代码了,现在学学objective c,自己业务时间做移动互联网的开发,觉得比较有意思。

 

作者建议:“还是最少要写上15年以上的代码之后再去考虑管理,要不然你会很快被淘汰”

这一点不是很认同,程序员并不是限定于写代码,我觉得代码这个是写不完的,而是从写代码中去提升自己的技术实力。有一些人写一年代码顶有一些人写5年代码,当你发现你写代码开始都是control +c 和 control + v 的时候,就应该想办法提升了,天天写CRUD的时候,你也应该考虑是不是该换个领域里。个人觉得应该深入一门语言,然后扩展其他的编程语言。这一点我做的不是很好,直到现在,才开始接触一些客户端编程。如果是以前,我肯定会去学python。同时多看看代码比纯粹的多写代码更好,看一些开源的代码实现,不仅仅能够让你使用他更轻松,也能够增强你的设计能力。

 

作者关于编程语言的看法:相对来说比较认同

在目前主要的三个领域,传统软件,互联网,移动 ,java的确不怎么占据优势,而且我觉得java会在互联网和传统企业软件领域慢慢丢失市场份额。

怎么说,我是学习java的,在互联网,除了一些电商类和支付类等对大型复杂的,分布式 高并发,事务型系统,java比较有优势,主要分析下来,优势包括

1 开源提供的解决方案比较多,例如jpa,hadoop,jboss,esb,消息中间件

2 java比较适合大型团队,比如上百上千的开发团队,因为语法死板,有一定的编程规范,每个人写出的代码的风格不会有太大的差异。

3 因为开源,基本上所有的软件资源都有免费的,开发工具eclipse,web服务器apache,j2ee容器jboss,消息中间件 activeMQ,数据库mysql,操作系统Linux。阿里最近都在搞去oracle,全部替换成为mysql。

4 使用开源产品,发现问题可以自己看源代码搞定,也可以对开源产品进行定制优化。例如淘宝最近就开源了自己定制的 jvm。而没有必要想服务厂商交服务咨询费用。

所以亚马逊,ebay,苏宁,淘宝,支付宝 都主要采用java作为开发平台,京东也在往java上面转。

 

但是java存在的问题也有很多

1 java的框架太多,每个公司用的都不一样,而且版本混乱,有一些很重量级的

2 开源产品同类的多,需要取舍,而且有一些自以为很牛逼的架构师喜欢在开源的产品上封装,搞自己的框架,搞的各个公司的框架都不一样,学习成本高。光一个xml解析工具,都有几十种。

3 开发效率向相当低,远远比php,python这些静态语言低很多

所以对于web2.0这样的网站来说,非常不适合用java。我比较赞同使用php或者python。比如豆瓣,优酷。

 

在企业级市场,.net会是非常不错的选择。首先环境统一,开发效率高,微软的开发工具非常强大,这一点我不得不佩服,而且微软针对整个开发周期都有配套的工具,都能够比较好无缝的结合,对开发人员来说比较友好。不像java,东拉一点,西凑一点,这一块不想互联网市场,不会出现大规模集群。所以就算全部使用微软的解决方案,软件成本的支出也不会很高。而且微软的服务据说特别好。

 

不过作者也忘记了一块越来越重要的市场,就是云计算,java在这个领域比较有优势,主要是还是因为开源世界的支持以及google,亚马逊这些IT厂商的支持。学习java的同学可以关注这一点,可以把hadoop了解深入,我想去大公司应该没有太大的问题。不知道到微软在云计算上目前的进展如何。

 

ps:这一篇只是自己的看法,编程语言没有所谓的好与不好,只有在合适的地方使用合适的语言才好。对于编程语言之争之类的,我是比较反感的,也是最没有意义的。编程语言的背后是设计思想,这个才是最重要的。作为程序员,我觉得应该多学习几门风格不同的编程语言,这样可以加强你对编程的认识和理解。

上一幅搞笑的图,大家轻松一下: