总之,我们的教育和现实脱节太严重了,教的东西无论是在技术还是在实践上都严重落后和脱节,没有通过实际的业务或技术问题来教学生那些理论知识,这是一个失败。

  那么,现在做一个软件开发者是否更加困难了?

  我觉得倒不是。做一个软件开发者更简单了。因为现在互联网很发达,你可以找到很多共享的知识——相对于我那个时候。第一,知识你容易查到,然后社区很多,文章、分享的人也越来越多。我们那个时候没有的。上网一查,什么都没有。都得去自己琢磨,自己去调查。所以我觉得相比我们那个时候更容易了。第二,工具变多了。现在的工具比那个时候好用多了。我们那个时候是到晚在vi里面,连个自动提示都没有,连个版本库管理都没有。不光工具变多,框架也多了,各种各样的编程框架。我们那时候都是生写。写JavaScript,生写,连个jQuery都没有。没有这些辅助性的、让你提高生产力的东西。 J2EE那时候也没有。而且整个(开发环境)都很不成熟。一个服务器的高配置1GB的情况下,一个WebSphere起来占了900多MB——这还能跑什么应用?所以只能去用基础的系统。所以我觉得现在,无论是环境,还是开发的过程,都更规范了。以前我做开发的时候是,什么都不懂上了,瞎搞,没有什么开发规范,没有人理你,反正你搞得好搞好,搞不好搞不好了,全靠自己,包括做测试维护等等。我觉得现在的软件开发很好,你一上去,有好的工具,有好的知识库,有好的社区,有好的开发框架,还有好的流程,方法,甚至还有人帮你做测试,还有人告诉你应该怎么做。幸福得很。现在好多人还说这个不好那个不好,开发难什么的。其实容易多了。

  但是,有个东西我觉得是现在的软件开发者比我们那时候变得更难的。是,你享福了以后,人变懒,变娇气了。对很多东西的抱怨开始多了。我们那个时候哪有什么好抱怨的?没啥好抱怨的,有活干,有东西学赶快学。现在呢,学个什么东西还挑挑拣拣的,抱怨这个语言太扯,那个IDE不好,这个框架太差,版本管理工具太扯,等等。这好像以前我没东西吃,只有个糠吃,要是有面包有馒头,我觉得非常非常好了。现在是,好吃的东西多了我们还学会挑食了,这也不好用,那也不好用。

  根本不是技术变难了,环境变差了,是程序员变娇气了。所以软件开发变难,归根结底还是程序员们自己变娇气了。

  你如何在进度压力下,享受技术带来的快乐?

  中国人中庸的思想,入世和出世,每天的工作是入世。举个例子,我十年前在上海的时候,给交通银行做项目的时候,每周休息,早九点到晚十点,每天工作12个小时,这样的工作持续了一整年,没有节假日,项目上的技术也没什么意思。当时我晚上十点回到住处,还想学一些C++/Java和Unix /Windows的技术,于是看书到晚上11:30,每天如此,一年下来学到很多东西,时间没有荒废,心里很开心。我觉得当时是快乐的,因为有成长的感觉是快乐的。

  现在的我,工作、写博客、养孩子,事情其实更多。我早上7:30起床,会浏览一下国外的新闻,hacker news, tech church, reddit, highavailability之类的站点,9点上班。晚上6、7点钟下班,开始带孩子。十点钟孩子睡了觉,我会开始重新细读一下这都发生了些什么事情。这个时间也有可能会用来看书。学习的过程(我)是不喜欢被打断的,所以从十点到十二点,家人都睡了,这正是我连续学习的好时间。可能从晚上 11:30开始,我会做点笔记或者写博客。我现在对酷壳文章的质量要求比较高一些,所以大概积累一个星期的时间才可以生成一篇文章。每天我大概都在一两点钟才会睡觉。没办法,我有技术焦虑症。但是觉得这样的生活很充实,也很踏实。

  另外,任何一门技术玩深了,都是很有意思的。有些人形成了一个价值取向,“我只做什么,绝不做什么”。前段时间有一个刚来亚马逊的工程师,他原来做的是数据挖掘推荐系统,原来的公司重组要让他做前端,他不肯离职了,他说他不想做前端。我觉得,前端后端都是编程,Javascript是编程,C++ 也是编程。编程不在于你用什么语言去coding,而是你组织程序、设计软件的能力,只要你上升到脑力劳动上来,用什么都一样,技术无贵贱。你可以不喜欢那个技术,但是还是要了解了解,也没有必要完全不用,完全抛弃。Javascript啊——只要能被Javascript实现的,未来总有会被Javascript所取代。

  回到问题,怎么才能享受到快乐呢?

  第一,入世和出世要分开,不要让世俗的东西打扰到你的内心世界,你的情绪不应该为别人所控,也不应该被世俗所污染,活得真实,活得真实你才会快乐。

  第二,是要有热情,有了热情,你的心情会很好,加班都可以是快乐的,想一想我们整个通宵用来打游戏的时光,虽然很累,但是你也很开心,这都是因为有了热情的缘故。

  总之一句话——如果你没有兴趣,什么都是借口,如果你有兴趣了,什么都是好玩的。