1. 从经济学角度解释程序员为什么经常加班还没有加班费
最近在看经济学的书,深深的被经济学的理论所折服。看完经济学的人绝大多数都会有试着用学到的理论解释一下自己周遭的事物,我也不例外。自己是一个程序员,我想试着分析一下“程序员为什么经常加班并且没有加班费”这种现象。此乃一家之言,权当茶余饭后的消遣。
很多同行们估计都经常加班,而且也能经常听到别的公司的程序员也经常加班,并且加班通常没有加班费。接下来我试着分析一下这些现象。从经济学角度来看,程序员出卖劳动力(包括体力,脑力),企业购买劳动力,这里面就蕴含着供求关系,只要是有供求的地,经济学就会发挥它的乱入威力。接下来探讨我们关心的几个话题,而加班只是其中一个话题。
问题一:是什么决定了你薪酬多少?
其实,是供求关系决定了你的薪酬。我们发现,周围的(处于同一级别)程序员薪酬并没有相差很多。整个行业的供求关系决定了你薪酬就是这么多,各个行业都是如此。如果想要企业付给你高工资,你就必须有出色的能力,并且拿高工资的人一直都是少数。能力特别出众的人占少数,而这些人会给企业带来巨大的收益,所以企业愿意为这些少数人支付高工资。相反,对于能力一般的人,企业只会支付你一般的工资。能力再差一些的人企业会把他拒绝。不同企业对于程序员的需求也不一。牛逼一些的企业需要优秀的人才,所以愿意支付高工资来吸引优秀的人。而一些比较普通的企业对优秀的人才的需求不高,所以愿意支付的工资也就偏低。而程序员的质量千差万别,优秀的人去牛逼的企业,一般的人去一般的企业也就符合这个市场规律。
问题二:程序员的薪水为什么要比国内其它行业的薪水高很多?
其实,大家可以想想商场里的物品。牙膏和牙刷的价格不会一样,牙膏和肥皂的价格可能也不一样。每种物品有每种物品的价格,劳动力也不例外。律师和医生的薪水不会一样,清洁工和商场收纳员薪水也不一样,程序员的薪水和其它行业薪水也不一样就是很自然的了。一个行业的薪水水平与这个行业本身的供求关系有关,行业之间的薪水差别体现了全社会对某一行业的认可和需求。
问题三:为什么国内的程序员工资要比国外程序员低很多?
其实,只要引入地域性,很多东西之间的比较都是很困难的,不可能三言两语道明的,商品的价格就是如此。美国人抽的香烟不太可能和中国人抽的香烟是同一个价格,牛肉在美国的价格和在中国的价格也不会一样。同样程序员在国内和国外的工资可能也不一样。每个地域都有每个地域的供求关系,从而加剧了地域之间的比较的困难。但是我不能逃避这个话题,因为确实国内的程序员工资要比美国低,接下来我就试着分析这个问题。举个非常简单的例子来说明地域性的影响。美国把制造业搬到了中国,比如生产芯片的流水线搬到了富士康。为什么会这么做?官方说法是美国的劳动力成本要比中国高,但是为什么美国的劳动力成本就高了,中国的就低了?一个人选择当流水线的工人还是当清洁工时,本能的会比较两份工作的成本,包括体力、智力这些显而易见的成本和看不见的机会成本。选择当流水线的工人时,我就放弃了当清洁工所带来的收入,那么当清洁工的收入就是在我选择当流水线工人时的机会成本。我们都知道,在美国各个行业的工资水平都很高,所以选择当流水线工人时的机会成本都高,在这种情况下,企业不得不提高工资水平来招聘需要的流水线工人,想当然企业雇佣成本会提高。而在中国,选择当流水线工人的机会成本很低,因为中国的清洁工人的工资本就不高,所以美国企业把制造业搬到了中国,其实就是看中了中国的各种劳动力成本都低这个事实。并且,当美国把制造业搬到中国时,美国的流水线工人也就失业了,对美国的就业在短期内有一定的影响。但是不可否认,长期看来,这么做使得两国的生活水平都提高。美国企业降低了生产成本,电子产品价格降低,这样美国居民把省下的钱购买其它产品,促进了其它产业的就业。而中国人找到了流水线的工作,有了收入。不论怎么看,都是一个双赢的局面。返回来说程序员的工资,除了需要体力、智力这些成本以外,机会成本相比美国来说是比较低的,所以国内的程序员工资相比美国会低一些。但是假如,国内的程序员可以毫无障碍的与美国企业进行沟通交流,并且提供与美国程序员一样的劳动力的时候,美国企业会不会清一色的雇佣中国程序员来降低企业的研发成本呢?美国的程序员是否失业了呢?通过比较富士康的例子我们不难看出会有相同的结果。至于为何中国的劳动力成本普遍比美国低已经超出了这个话题的讨论范围(宏观上讲,一国经济水平决定工人的工资),暂不展开。
问题四:为什么程序员经常加班还没有加班费?
首先我还是需要澄清一个事实:并不是所有企业的程序员都加班。比如,银行工作的程序员,国企的程序员,一些传统行业的程序员。需要程序员加班的企业,无不是站在时代风口浪尖上的企业,而这些站在时代风口浪尖上的企业无不例外的愿意支付更高的工资,并且这些企业员工的技术水平也相对很高,其实都是供求导致的,而这些站在风口上的企业的程序员加班表明:供大于求,最起码在这一小撮企业中,劳动力的供给一定程度上大于了需求,程序员不得不加班来保住自己的饭碗,防止被替代。那些对加班不满的程序员完全可以退而求其次,找一个不加班的企业也可以照常度日不是么?加班的程序员真的不要抱怨,你加班说明你的企业正处于风口,未来有各种可能,并且你是被公司所选中认可的人(毕竟有好多人没有通过公司的考察)。
以上纯属一家之言,各种见解仁者见仁智者见智。如果有程序员看了这篇文章之后选择出国就业,那绝对是理解了本文章的内容,但是前提:学好英语。如果有的程序员看了这篇文章之后,坦然的接受事实:国家的经济水平影响了你和国外程序员的薪酬水平,并且不再抱怨,踏踏实实的工作,我想这才是一个人真正的成熟和理智。
2. rm -rf/*是什么梗
rm -rf/*是删除当前下的所有文件。
如果你在电脑一旦你执行了上述“rm -rf /” 或者“rm -rf /*”命令,会删除linux根目录下的所有文件,直接导致服务器瘫痪。英文全拼remove,命令用于删除一个文件或者目录。参数-i删除前逐一询问确认。-f即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r将目录及以下之档案亦逐一删除。
linux下rm命令的说明,linux系统下强行循环删除所有东西的指令。程序员最害怕手抖的命令之一。一旦使用不当会产生超级黑洞,威力极大,有可能将包括程序员的工作在内的一切吸入其中。所以一定要保持头脑清醒,不能轻易在root账户中轻易使用,可以请同事帮你确认,在执行行备份一份再执行。
3. Java程序员一般工资多少
这个要看具体岗位,还有城市的。一般的JAVA工程师如果是做web开发的,不同城市差异非常大,一线城市可以到15k以上,但是在三线城市这个岗位,一般只有5到6k。如果是其他的,JAVA岗位,比如做系统架构,做大数据开发,那么薪资也是15k以上,不过这类岗位大多数在一线城市。
Java程序员就业情况
就业前景
据有关数据显示,我国对软件人才的需求已达20万,并且以每年20%左右的速度增长。在未来5年内,合格软件人才的需求将远大于供给。2005年,我国软件人才的缺口已达42.5万,其中尤以Java程序员、Java工程师人才最为缺乏。
根据IDC的统计数字,在所有软件开发类人才的需求中,对Java程序员的需求达到全部需求量的60%~70%。同时,Java程序员的薪水相对较高。通常来说,具有3~5年开发经验的工程师,拥有年薪10万元是很正常的一个薪酬水平。80%学员毕业后年薪都超过了5万元。
虽然JAVA人才的薪水很高,但是对该类人才需求旺盛的IT企业却很难招聘到合格的JAVA人员。其中,最根本的原因就是许多计算机专业的毕业生在读期间没有掌握实用的技能与经验,距离企业的实际用人需求有较大的差距。因此,计算机专业的大学生欲成为Java程序员,最便捷的一条路就是参加以实战项目为主要教学方法的JAVA职业技能培训,从而有效地缩短同企业具体用人需求之间的差距。
全球有25亿Java器件运行着Java,450多万Java开发者活跃在地球的每个角落,数以千万计的Web用户每次上网都亲历Java的威力。今天,Java运行在7.08亿手机、10亿智能卡和7亿PC机上,并为28款可兼容的应用服务器提供了功能强大的平台。这么多应用,彻底改变了用户的生活。越来越多的企业,因为使用了Java而提高了生产效率。在中国,越来越多的用户,因为Java而降低了成本,享受了生活。
4. Windows程序员如何转linux开发
原文如下:我从csdn学习大本营得到您的信息。不好意思打搅您。我现在用c++在linux下开发大型应用程序。我想请教是否值得深入学习linux kernel。我没有特别多的时间。另外我有多年Windows下开发应用程序的经验。我的回答:呵呵,我感觉这还是一个学习方向的问题。Linux这几年,发展越来越好了,至少在很多应用服务器市场,Linux已经取代Windows成为第一选择,另外,在嵌入式环境,Linux也是逐渐成为主流。这导致很多原本是Windows的程序员,由于工作需要,逐渐走向Linux开发,这中间当然涉及到一个学习的问题。我本人也算其中一份子吧。我本来一直做Windows开发,在这之前,在DOS下用过gcc开发,还翻译了djgpp的库函数手册,也算有点基础。不过,在07年公司安排我在Linux下正式开发商用服务器的时候,我心里还是很打鼓的。因为也面临着一个学习的问题。看看市场上的书籍,很乱,我当时花了一整天在汉唐书城,仔细分析Linux开发相关的书籍,我发现分几种,首先是shell编程,这个我看了有半个小时,就觉得没用,这貌似给网管员用的,我做传输服务器用不到,连带着,正则表达式,我觉得对我用处也不大。真的要做复杂条件筛选,我的习惯是写个词法分析程序,自己来分析,也花不了多少时间,所以,我一直就没学正则表达式,呵呵。然后是C和C++编程相关,我仔细看了,发现一说到开发,就讲到Linux kernel,这部分显然是操作系统的知识,我仔细想了想,发现自己的问题并没有得到解决。就算我知道了kernel怎么工作,里面有什么开发技巧,对我的工作并没有什么帮助。我当时做的是分布式数据库的传输服务器部分,这部分讲究多线程,高效能,但还是局限在应用层,并没有多少涉及到kernel的东东。我觉得用处不大。反而我觉得我有必要对socket编程重新补一补了。经过挑选,我给自己选了一本《UNIX网络编程》的第1卷网络通信篇,第2卷是进程间通讯,我觉得我的程序用多线程跑已经很好了,线程本身就是共享内存的,无需考虑太多异步通讯,而且,我的习惯,进程间通讯,一般直接使用socket,这个放之四海皆真理,而且,好处是我的进程可以跨机器随意部署,只要我提供IP地址,进程间就可以互相通信,协同工作。所以,我只买了第1卷,就是专门讲socket的,这是好书,我现在没事还要拿出来看一看。另外,我又给自己挑了一本《Unix编程艺术》,这本也是好书,我以前就发现,Dos程序员有Dos程序员的习惯,Windows的有Windows的习惯,这些方言,习惯,教科书是没有的,必须找有经验的程序员问,而这本书恰好就是专门讲这些问题的。比如DOS时代,硬盘通常很小,用户分盘又很乱,我们要是想向磁盘存个临时文件,最好找C盘,连D盘都是很多计算机没有的。而Windows下系统提供了服务,可以通过api查询系统临时文件目录,就好多了,而Linux下呢,是约定俗成,大家都用/var来做临时目录,这就是风俗。嗯,这本书我看了以后,遵守了一半,呵呵,也没全遵守,它强调程序都是过滤器,从信息流中过滤自己有用的信息,加以处理,但是,不准破坏信息流,并且强调信息流无缝流转到下家,这个我很同意,这也是我这几年逐渐领悟到的一个程序设计原则。不过,它强调搭积木我就不太同意了,Unix的程序员,有个坏习惯,对管道很滥用,这就造成了很多程序都是小程序,通过管道勾搭到一起,完成一个强大的功能,这个呢,见仁见智,在某些场合合用,但我的开发领域,我强调强大的系统分析能力,一体化的系统设计思考,强调从系统设计阶段就杜绝很多潜在的逻辑bug,简单说,我对系统各个模块之间的和谐性看得很重,因此,这条我就没有遵守。嗯,还有就是它强调简洁开发,我呢,也只同意一半,把程序写简洁,每个函数,每个类,都很简单,减少bug,这个我是同意的,不过,简介到变量名函数名都净是缩写,人都看不懂,就太离谱了。呵呵,我的习惯就这样,别人的东西好,对我有用,我就用,我觉得有异议,并且认为自己的理由更站得住脚,我就坚持自己的。并且,一切从实践中看,计算机是最公平的,乱写程序,就算是大师也照挂,小心翼翼地写程序,即使是刚入行的小弟,也能写出很漂亮的程序。就这样,我借着这两本书慢慢看,然后,大多数习惯还是Windows的,到现在我开发,都是VC下编辑程序,然后写个makefile,ftp到虚拟机去编译执行,也走到今天了。后来发现,我没有学习shell,我没有学习kernel,我没有学习很多教科书上规定必须学习的东东,我的程序居然也完成了,我们的工程在去年,9轮测试,只发现51个bug,属于C和C++这边的bug,只有7个,这就是我坚持我自己无错化程序设计方法的威力。
5. 计算机本科里最重要的是哪几门课程(想当C++程序员的话)
真理:数据结构:程序员必需懂操作系统:编程方面基本,从事计算机行业的都得懂。编译原理:进阶课程,开发中少有用到,建议不必学。软件工程和管理:从事大型项目或高阶职位者必须懂,进阶课程数据库原理:大型商业项目基本有数据库,要懂计算机网络:和网络相关的项目都很赚钱,要懂网络编程:c++很大一个应用,懂! 最后让我告诉你现状,你这样初学又不是应届对口毕业的人很难找c++的工作。你不急着转工作的话,我给你一个建议:学好上面的课程,不要搞windows的,做linux的网络编程,服务器端的。这个需求比较大,人数也少。就算学不太好,搞懂linux的配置和架设也能找到好工作。这样的话你就主攻linux系统的配置和linux下的c/c++,数据结构和网络编程,多线程编程。顺带一提,linux服务器要的就是效率,多看有关算法。