由于写了这个《三五个人十来条枪》系列,受到了许多网友的欢迎,所以也每天接到了很多网友们的问题请教。
我整理了一下,大部分网友有以下四类: 1 正在上大一或大二。问最多的问题就是学什么语言好。 2 正在着急找工作,但不知道如何才能找到工作的应届毕业生 3 已经做了3-4年的开发,但感觉自己已经没有上升出路了的仍然原地踏步的程序员 4 做了1-2年的项目经理,大小也算个头儿。但整天没完没了和客户和手下和老板沟通推进,每天很忙,每天很累,但总觉得自己很空,没有什么真本事,就觉得自 己到处窜腾,客户逼着赶快出功能,老板逼着怎么还不结束到底问题在哪儿,手下素质太低,好几天搞不定问题还带着耳机边开发边听歌。
开发语言大战,论坛中一堆堆的口水帖,每次都极为壮观。虽然大家都说开发语言并不重要,整天盯着开发语言层次太低,但每次这样的争论帖子发出,都跟帖无数。
我也曾有过选择开发语言的经历。 我过去学的是C。但是我在校期间出去打工的时候,发现社会需要的是dbase、Foxbase、Foxpro。于是我就改学了开发语言。但是现在,会这些开发语言,想去找工作,势必登天难。
大家争论各种开发语言,其根源就在于此。尤其准备两年后毕业工作的大学生。如果现在选择了一门开发语言,自己在学校努力学习了两年,一毕业发现这门语言根本社会很少有公司用,那么找工作就困难了。所以很多学生朋友问我该学什么语言。
我在我的另一篇帖子中也写过流行技术我到底该学哪一样。我大致给大家在这里总结一下: 现在社会,主要的开发应用是 1互联网网站。主要是asp、asp.net、JSP、PHP、Python、Ruby、Perl。 2网络游戏。主要是C++ 3嵌入开发、硬件开发、通信与网络开发,主要是C/C++。中国大量的家电、数码、手机、电信设备都属于这类。 4外包。主要是JAVA和.NET。 5企业管理类软件。WEB开发,主要是JAVA和.NET。C/S开发,主要是DELPHI、VB、VB.NET、C#、PB、VFP。
所以,你选择了什么开发语言,那么你应聘的公司就有了区别。所幸,我上述所说的五类开发应用,现在都有许多公司。所以,选择其中的开发语言,学扎实,有实际案例经验,人品端正,做人踏实努力积极主动,应聘应该是没有问题的。
不过,工资是有高有低。互联网网站公司,大公司薪资福利好,就看你的毕业学校和你的聪明劲了。如果你感觉自己一般,能选择的就是无数的互联网创业小 公司。这类公司倒闭风险大,薪资福利和工作条件可能艰苦,要的人也可能是熟练手,而不是新手。还有一些中不溜的互联网公司,比较偏向伪互联网。主要做广告 推广或网站制作或电子商务线下买卖,做了5-6年了,可能需要一些刚毕业的学生做维护开发工作。
现在热门的网络游戏和嵌入开发,工资高、未来发展潜力大,但技术门槛也高。如果你学技术中不溜没有快速成长天分,也不愿意深钻,总想着机会主义,这个流行就学这个那个有兴起了赶快转移学习目光。这种思路,别说这些热门行业,就是那些传统行业也难找到工作。
对于外包,外语是第一位置,而开发技术反而是其次。因为外包都是大规模作战,分工很细,每个程序员能做的都是熟练工种,人海战术。尤其一些对日外包的项目,人家日本人连伪代码,函数名,参数名,参数类型都给起好了。
对于企业管理类软件,和外包很类似。技术普遍要求不高,常见都是增删改数据库的应用。也是人海战术。不过工资就比外包要低了,因为外包是老外掏钱, 而面向国内销售的企业管理软件售价就低了。而且国内很多公司都是从事企业管理类软件。因为只要有客户关系,就可以做,没有多少技术难度。找工作是好找,但 打一枪换一炮,反复需求修改,一个人捣鼓一个项目身揽数职,让人感觉没多少发展。
你觉得依你的毕业学校和你的人品和你的技术学习能力,你觉得你能达到哪个你喜欢做哪个,你就选择定不断努力,不要还在晃来晃去,最后什么都不精什么都看了点,这类人什么工作也找不到。
我过去上学的时候,网游、嵌入、外包都还不流行,很难找到工作。互联网刚大家知道,新浪SOHU刚出来,外国互联网发展成啥样都还不知道。所以主要 热门的就是企业管理类软件开发。用的最多的就是VB、PB、DELPHI、VFP。DOS下就是dbase、Foxpro之类。当时DOS应用还非常多, 街面上还有许多培训打字和WPS的培训班,WINDOWS刚开始普及,Foxpro和VB的书还卖的非常好。我一边学了foxpro打工赚钱,一边学了 DELPHI。大部分同学什么都不学,跟着老师听课做作业,准备毕业了回家乡让家长找个好工作,进个电厂或银行或公安局。我那时候已经有了不少打工工作经 验,而且我订阅的《计算机世界》给了我许多看业界前沿技术和业界最新消息的启示。那时候好多同学都不看报,少数的订阅《电脑报》,整天在琢磨那些小技巧。 我就是得益于《计算机世界》,让我在省城看到了中国的IT发展,世界的IT发展。因为当时热门的主要就是企业管理软件,所以我选择了组件技术和数据库技术 作为主攻学习的方向,这都是开发企业管理软件的核心。当时由于感觉VB、PB在语言严谨性、技术先进性、代码开放性、控件多样性、底层控制性上都不如 DELPHI,所以我选择了DELPHI,放弃了我心爱的VC++4.0(由于从高中就自学C和汇编,所以对C很有感情,虽然当时没有什么C的应用让我很 茫然到底学习C有什么用,而且VC++4当时的版本向导和可视化弱,都靠手敲代码,敲个400多行代码,才能运行一个什么都没有的普通窗口。而 DELPHI能很快就出一个普通窗口,让我惊喜万分。但是,如今JAVA和.NET的雄起,DELPHI的陨落,让现在学习DELPHI的大学生不知道如 何出来找工作,只能赶快换开发语言)。
对于正在着急找工作的应届毕业生。和他们交流过程中发现了一些共同的特点。按说他们现在有互联网,有BLOG,有论坛,有电子书,有搜索引擎,大量 开源代码,而且学校里电脑几乎普及。但是他们的学习状态,和我10多年前上学的时候还是一样。像我的同学一样除了毕业证什么也不会。就连毕业设计,还是图 书馆管理系统之类的毕业设计。我过去在上学的时候,互联网极其资源匮乏,而且上网牛慢费用巨贵,而且没有搜索引擎。我是到处买书,到处找源代码进行阅读。 我当时阅读了DELPHI的源代码,从学校老师那里找来的UNIX的源代码,严援朝的CCDOS源代码,WINDOWS API库SDK帮助说明。我做的本科毕业论文就是《从单机到C/S到B/S》。我收集了大量的资料来写来论证。记得前几天,我指导一个网友去下载一些源代 码阅读。几天后,给我又发求助,说找不到啊。让我帮他找一个给他。我无语了。看来,这不是搜索能力不行,这类员工我是不会要的。居然让我帮他找一个。亏他 能想的出来。
我也面试过许多应届毕业生。他们老给我展示他们在学校的干部职位,拿了多少优秀学生和奖学金,参加了多少社会活动。这不是我所关注的。这是HR关注的。他们会在收到你的简历筛选第一轮的时候就看这些。到我这里,我只关注技术问题。
一个应届的毕业生,当然实践工作经验有限,技术也有限。当熟练手来问问题是显然招不到一个合格的毕业生的。我一般会考察他的技术理解思路和技术理解 速度和他的表达思路是否清晰有重点。我还会问他看过哪些源代码,平时看什么技术类的书籍,参加过哪些打工开发工作。一个不主动努力,不勤于思考钻研的人, 工作中也会如此。一个说话思路都不清晰没有重点的人,写出程序也是一片混乱。他看什么样层次的书籍和报纸杂志,就能知道他的眼界有多宽发展有多少发展后 劲。如果他做的毕业设计很独特,很有思考力,我就会比较赞许。因为他是在真心思考和努力,而不是混毕业设计。
我一般建议应届毕业生,先不要着急找工作。很多人跟我说:怎么找工作啊。再找不到工作就饿死了。我看到不少手下的80后员工,现在自己赚钱了还和老 妈要钱花,也没饿死,反而每月工资打车、吃饭、买ipod、买PSP。所以,饿不死。你既然在学校什么都没学到,现在要找工作,就拿点东西出来看。否则, 你什么优点也没有,没有一壶可以提起的,怎么能让人家要你呢。到网上下载一个源代码,进行修改。其实修改并不是目的,也不是让你去跟招聘者去说这个系统是 我做的。我让大家修改源代码,是为了让大家动手去分析源代码,学习人家的模块分割,架构,编码规范,编码方法。你在修改的过程中,你就会遇到问题,你就会 被迫去寻找如何解决技术问题。这是一种有明确目的的学习,所以学习非常快,而且学到的东西都是非常实用的。在学校为什么无法做呢?就是由于你没有压力,到 了临毕业才有压力。有压力才会去主动思考和主动解决。没有主动性的人在这个世界上还是占大多数。所以到了企业才需要管理。
对于已经做了3-4年的开发人员,仍然原地踏步。我非常关注这类程序员。因为作为一个毕业了3-4年的人,毕业前两年是拼命工作和学习的两年,第三 年是发挥和做事的一年。第四年,因为第三年做事和发挥,发现遇到了不少阻碍,却搞不清楚问题到底出在哪里了,就很怀疑是不是过去三年的学习和努力到底对不 对,哪里不对了。但眼界又决定了他们不能想清这个问题的答案。于是他们对未来该怎么发展都觉得迷茫。想跳槽,又不知道自己能干什么,正处于灰心期。想学 习,又不知道学习什么有前途,于是什么都学,新技术层出不群,反而弄的更心慌了。有的同学自己创业了有了自己的小摊子,在国企和公务员的同学也高升了,有 的同学也升做了项目经理,自己还是个程序员。想开发个什么网站,尝试后发现自己都是瞎捣鼓,想开发个什么软件,却发现现在什么软件都不好卖,自己又没有客 户关系。唉,怎么混的这么惨。有些程序员,就是在干了5年程序员后,不是转行了,就是抛弃了企业管理软件开发,从头做起,改做互联网网站了。发现思路格格 不入,技术也是新学,比不上人家一开始就做互联网的。尴尬自知。
我自己也经历过这个阶段。我深入研究了许多技术,发现并不能很好解决软件开发中遇到的问题。该如何解决,我也不知道。
大家看我的经历,就会发现,我研究技术,是为了解决软件制造和实施和服务中的问题,而不是纯粹因为感兴趣而学习技术,为了显示自己是公司技术最厉害 的人而学习技术的。这在商业软件公司根本吃不开。商业软件公司,赚钱为主。如果你的技术无法给公司赚钱带来帮助,就根本没有用。
有些做了3-4年的程序员,做到这个阶段,新技术看了一大堆也不明就里,仍然在学习hibernate怎么配置怎么用,structs怎么配置怎么安装怎么调试。说明这类程序员缺乏开发天分,无法在技术上成长为优秀的程序员或技术专家了。
不过有些技术很牛的人现在也很困惑,工资就是不涨。我建议他从帮助产品提高销售额的角度去把自己的技术应用到产品中。我过去有个手下,做行业信息化 管理软件,却不愿意深入了解这个行业。自认自己要成为技术专家,要做最好的软件架构,于是拼命学习了N多框架,对比分析,做源代码阅读,做实验尝试新技 术,整天熬夜。做出来的架构却是并不能减轻业务功能开发人员的工作量。老需要注意N个地方,配置多个选项。配置错误就运行错误。这类架构还不如没有。我们 是在开发行业信息化管理软件,不是在做变型金刚。我们不希望一个能制造汽车,也能制造轮船的东西。我们就需要制造小轿车的平台架构,连制造卡车的平台架构 都不需要。但你制造的却是一个个的螺丝和钢管。
如果有的技术牛人,技术也能很有效的帮助产品提升。但工资还是不涨。可能跟公司抠门有关。可以建议去发表一些博客来提高江湖的知名度,这样请你去做技术咨询方案的人也有可能找到你。
在企业管理软件开发公司,一般有以下这些职位可供发展: 实施人员、实施经理、咨询经理、售前、市场、销售 服务人员、服务经理 开发人员、高级开发、客户化定制开发、技术专家、开发经理、技术总监、CTO
如果你善于组织和调度人,善于推动项目和控制项目,善于和客户沟通理解客户,那么你可以往项目经理职位转变。实施经理、服务经理、开发项目经理,都可以选择。开发经理,未必是技术最好的那个人。
如果你不善于和人打交道,技术也不行。那么做一个踏实稳定勤恳的客户化定制人员或技术服务支持人员。并且在工作中不断小改进,让自己的工作更有效率更有效果。
如果你不善于和人打交道,技术也不行,但对客户业务比较熟悉,那么建议你踏实工作,做好实施(做好实施的人未必会与人打交道。我发现很多性格内向的 人,提升自己的职业化工作细节,公事公办也达到了很好的实施效果)。从实施,可以转向咨询、售前。但咨询、售前都是很需要结构性思考和细致观察的工作。
如果你技术无望、不善于和人打交道,也不善于组织控制,也不善于细致观察思考,也不想踏实勤恳,却想到处跳槽涨工资。我想你恰恰什么都得不到。你是 最容易被裁掉的那个人。选一样,你必须选一样。即使你一无是处踏实努力干活保证质量和进度也好啊,现在,踏实努力干活的员工在每个IT公司都是宝。
我有个朋友,过去是做开发的,最后做了实施项目经理。老觉得自己的工作很空,混了几年代码也忘了,就会跟人扯皮了。自己也不会结构化思考,当不了咨询顾问。也不想做市场和销售。问我该怎么职业发展。
我给他讲了一个故事,我问他:你觉得,西游记师徒四人,你要开除,首先开除谁。
我的朋友说:当然开除猪八戒。他又自私又贪心又好色,诚恳不如沙和尚,武功不如孙悟空。
我又问他:哪第二个应该开除谁?
我的朋友回答:当然是唐僧。他没啥本事,还老误解人,什么本事都没有老拖后腿,每次得解救他。
我说:那好。如果就让孙悟空和沙和尚两个人去取经,他们能取到吗?不过他们不能一个跟头驾云去,那就没什么讨论了。
我的朋友说:他们俩怎么能取来经呢?在公司里,如果把一个牛人和一个踏实老实的员工,让他们俩去完成任务,多半会半路闹崩了。
我说:那如何不让他们闹崩了呢?
我的朋友说:需要有一个项目经理领导他们俩。
我说:OK。这就是项目经理。公司里已经有一个唐僧了,他就是你的老板。唐僧既然已经有了,牛人也有,踏实的员工也有,但还是完不成目标,就是需要 有项目经理。你就是那个项目经理。这种职位永远需要,但总是不那么突出,但老板明白谁才是最重要的。你看看历史:刘邦封功,韩信张良萧何。萧何就是那个项 目经理到处串线搭桥。明朝,徐达刘伯温李善长。李善长就是那个项目经理。项目经理就是主板上的CPU,用来协调各个其他计算部件的。所以,你很有价值。
我的朋友现在已经是很好的项目经理,老板也放心将历时一年价格500万需要牵扯多个部门几十号人的大单项目交给他来负责。
我问他:过去你怎么当不了一个好的项目经理呢?
他说:观念转变不过来。是工作强奸你还是你享受工作,就看你怎么看。
敢问路在何方,路就在脚下。