我想有这个疑问的人,其实最关心的问题是他们选择的语言是否关系到今后的求职和发展。在我观察,目前国内的优秀创业团队中,不少是使用php或 python的,且基本没有使用java和c#的,但是从岗位设定上来看,php、java、c#的的职位明显较多(包括非web方向的开发),而 python、shell、perl等的职位就比较少,那么是不是选择这些流行的语言会比较”保守“一点呢?其实不然,选择流行的语言对于求职者来说确实更容易找到工作,但仅仅是找到工作,而不是找到好工作,这其中有以下几个关键点:
1、 国内充斥着大量的垃圾公司,这些公司多半都使用c#、java、php进行开发,如果你使用的是这些大众语言,那么你确实更容易得到面试机会,也更容易进入一家这样的公司。但是,如果你进入这种公司后又能怎么样呢? 你是否能接受老板谈下一个20w的项目然后分给你每月3k、每周工作6×(8+)小时独自完成项目的事实? 就算你幸运地进入一个稍有规模的企业,你是否能接受身边全是一堆垃圾程序员,天天不写程序只研究人际关系的工作氛围? 你是否能接受没有任何原创性的工作,机械性的听从安排然后重复实现别人的劳动过程,度过十年没成长的人生? 我想你会觉得我有些夸大,你会觉得很多企业其实看起来还是很不错的。其实那只是众多企业给自己涂在表面的光鲜,这个问题的关键在于,大多数人只有在付出宝贵的几年时间去切身体会后,才恍然大悟——“狗日的,确实如此!”
因此,如果排除这些垃圾公司,那么流行语言的优势就瞬间锐减,如果你不能接受进入这样的企业,那么你就要重新看待“机会”这个问题。
2、 当前的流行并不能决定两、三年后的流行,更重要的是他们的发展趋势。使用php、java或c#的人固然比使用python的人多,但是每天都有许多人正在从这些流行的语言转向python,而不见得有python程序员转去搞java(转php的倒是有,不过多半是为了和别人合作而已)。因此可见,那些最聪明的程序员发现了更好的编程语言,而那些最好的创业项目往往也会选择这些最聪明的人,如果你依然选择java或c#,那么你就比较难得到高手的指点,这对于你个人的发展是有很大影响的。
3、 编程语言会影响你的思路和效率,而这会决定你将成为什么样的程序员。学习编程语言除了学会表面的语法规则外,还会让你不知不觉的形成固定思维,比如搞 windows+c#的程序员就不太会利用现有的工具去完成手头的工作,而总是重复实现别人已经做过的工作,因此他们经常会问出“如何把数据库文件导成文本文件格式”这样的问题,要知道,对于linux程序员来说,这根本就不能成为一个编程问题,只需要在终端键入这么一句话就ok了– echo “select * from table” | mysql > data.txt
因此,如果你选择了c#或java,那么你就准备面临长时间做没有意思的无聊工作,且效率底下收入卑微。如果你选择了php语言,那么情况会好许多,你将学会如何快速做出web页面帮助“产品经理”完成产品,但是你依然面临从众多垃圾公司中选出优秀公司的困惑,这种困惑在你工作经验不足时尤为明显。但如果你选择了python、perl、lisp、shell这些语言,那么恭喜你,你将学会如何高效地解决问题,你将接触到那些最顶尖的高手,学会他们的思维方式,找到最靠谱的工作(但是注意这种优势也只是暂时性的)!
不过要注意,并不是选择了一门不错的语言就能成为高手,能不能成为高手取决于你的个人素质,你对编程的兴趣等,如果你本身基础很好,对编程有很浓的兴趣,就算一开始选错了,你也会在将来的某天发现“更好的”选择。反之,如果你注定能力不怎么样,无论选择什么语言都不会让你成为高手,但更好的选择依然能给你带来许多帮助。