敢问路在何方---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十三)[转]
由于写了这个《三五个人十来条枪》系列,受到了许多网友的欢迎,所以也每天接到了很多网友们的问题请教。
我整理了一下,大部分网友有以下四类:
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的大学生不知道如何出来找工作,只能赶快换开发语言)。
有一些还正在上大学的网友,还没上大三大四,就不知道为什么着急的很,想创业,想发财。我跟他们说没有白给的事,他们就给我举李想、戴志康的例子。我真为现在媒体的鼓吹担忧,其实他们这些个别的成功案例背后有许多媒体看不到的事情,而现在的大学生就看到他们开了公司还赚了几千万。他们白纸一张却都急于问我做什么有前途。我让他们到网上找个源代码下载先阅读再修改,但是他们的回答让我真是哭笑不得。有人回答我:“我总不知道选择哪个。所以一直耽误至今。。失败 ”。还有人回答我:“学了不用,没有动力”。甚至还有这样的回答:“找不到啊,你帮我找一个”、“我的笔记本配置低,运行VS2005很慢,没法调试”、“下载好多学习资料,看不懂,您教教我啊”。这种回答,让人郁闷。这还想开公司给别人发工资。
对于正在着急找工作的应届毕业生。和他们交流过程中发现了一些共同的特点。按说他们现在有互联网,有BLOG,有论坛,有电子书,有搜索引擎,大量开源代码,而且学校里电脑几乎普及。但是他们的学习状态,和我10多年前上学的时候还是一样。像我的同学一样除了毕业证什么也不会。就连毕业设计,还是图书馆管理系统之类的毕业设计。我过去在上学的时候,互联网极其资源匮乏,而且上网牛慢费用巨贵,而且没有搜索引擎。我是到处买书,到处找源代码进行阅读。我当时阅读了DELPHI的源代码,从学校老师那里找来的UNIX的源代码,严援朝的CCDOS源代码,WINDOWS API库SDK帮助说明。我做的本科毕业论文就是《从单机到C/S到B/S》。我收集了大量的资料来写来论证。记得前几天,我指导一个网友去下载一些源代码阅读。几天后,给我又发求助,说找不到啊。让我帮他找一个给他。我无语了。看来,这不是搜索能力不行,这类员工我是不会要的。居然让我帮他找一个。亏他能想的出来。
我也面试过许多应届毕业生。他们老给我展示他们在学校的干部职位,拿了多少优秀学生和奖学金,参加了多少社会活动。这不是我所关注的。这是HR关注的。他们会在收到你的简历筛选第一轮的时候就看这些。到我这里,我只关注技术问题。
一个应届的毕业生,当然实践工作经验有限,技术也有限。当熟练手来问问题是显然招不到一个合格的毕业生的。我一般会考察他的技术理解思路和技术理解速度和他的表达思路是否清晰有重点。我还会问他看过哪些源代码,平时看什么技术类的书籍,参加过哪些打工开发工作。一个不主动努力,不勤于思考钻研的人,工作中也会如此。一个说话思路都不清晰没有重点的人,写出程序也是一片混乱。他看什么样层次的书籍和报纸杂志,就能知道他的眼界有多宽发展有多少发展后劲。如果他做的毕业设计很独特,很有思考力,我就会比较赞许。因为他是在真心思考和努力,而不是混毕业设计。
我一般建议应届毕业生,先不要着急找工作。很多人跟我说:怎么找工作啊。再找不到工作就饿死了。我看到不少手下的80后员工,现在自己赚钱了还和老妈要钱花,也没饿死,反而每月工资打车、吃饭、买ipod、买PSP。所以,饿不死。你既然在学校什么都没学到,现在要找工作,就拿点东西出来看。否则,你什么优点也没有,没有一壶可以提起的,怎么能让人家要你呢。到网上下载一个源代码,进行修改。其实修改并不是目的,也不是让你去跟招聘者去说这个系统是我做的。我让大家修改源代码,是为了让大家动手去分析源代码,学习人家的模块分割,架构,编码规范,编码方法。你在修改的过程中,你就会遇到问题,你就会被迫去寻找如何解决技术问题。这是一种有明确目的的学习,所以学习非常快,而且学到的东西都是非常实用的。在学校为什么无法做呢?就是由于你没有压力,到了临毕业才有压力。有压力才会去主动思考和主动解决。没有主动性的人在这个世界上还是占大多数。所以到了企业才需要管理。
还有一些程序员学历不高,职高或中专毕业,有个共同特点:“想成为技术专家,但底气不足,都觉得自己成不了技术专家,还询问我要不要再去参加高考?”。其实他们都是心理自卑问题。成为技术专家,并不是博士才能成为技术专家。苏格拉底有个故事,有个年轻人问怎样才能成功。苏格拉底把他带到河边,突然把年轻人摁到水里,年轻人惊慌失措,为了逃生奋力挣扎,最后他问苏格拉底为什么要这样,苏格拉底回答他说,如果有这种强烈的求生欲望,你就能成功。我过去自学C语言和汇编(这两门语言被计算机专业学生都称为最难的开发语言)的时候是在高中阶段,没有计算机可调试可练习,全靠自己一遍遍的看书,想象着写代码,好不容易找到上机的机会才赶快把代码录入进去调试。我并不是一个聪明人,我也没有毕业于知名大学,但我在高中痴迷编程甚至到了想辍学专门搞开发的地步,在大学时候到处打听学校里谁的技术高,不管认识不认识就突然闯进去请教问题把人家都吓一跳,为了解决技术问题两天两夜只睡4个小时,就是这样。在技术方面,并不是计算机专业的学生就比其他专业的学生强,并不是本科生比中专生强,学校教的课程并不适合现在技术的发展,而且现在的学校也并没有培养本科生独立的思考方法和人生观,大家都是同一个水平线。我的手下也有专科生和中专生,他们的编程能力完全可以胜任工作。不过,他们有个很难逾越的门槛,我也多次开导,但这种自卑感如影随形,我认为他们能做到某个技术,而且我也多方解释原理,我也跟他们说我曾经都做过,并不难,但是他们仍然认为自己无法完成。我过去单身时候合租的一个朋友就是专科生,非常羡慕清华学生,现在他最终也沉不住气靠了一个软件工程硕士研究生学位,他认为这样才能出人头地。我想,他缺的只是自信心而已,他获得学位,他并没有增长多少技能,但最重要的就是给了他一份自信。古龙有一部小说叫《七种武器》,里面有一篇孔雀翎,其实根本没有孔雀翎这种天下最厉害的杀人武器,而主人公能够战胜对手,就是靠的那份自信,成功与失败的结果竟然起源于自信,可想自信的威力。要树立这种自信心,只要迎着挑战努力做,你要相信自己一定能做到,你想尽全部的办法去做,当你完成了你就会很赞叹自己居然也能完成。我曾经安排了一个任务,就是让一个员工开发一个类似简化版的消息中间件,他认为根本不可能完成,消息中间件都是那些IBM、BEA才能做的东西,我就死顶着他做,最后他居然也做到了。现在他的信心足的很。连IBM才能做到的东西他也能做到,还有什么不能做到的呢?
对于已经做了3-4年的开发人员,仍然原地踏步。我非常关注这类程序员。因为作为一个毕业了3-4年的人,毕业前两年是拼命工作和学习的两年,第三年是发挥和做事的一年。第四年,因为第三年做事和发挥,发现遇到了不少阻碍,却搞不清楚问题到底出在哪里了,就很怀疑是不是过去三年的学习和努力到底对不对,哪里不对了。但眼界又决定了他们不能想清这个问题的答案。于是他们对未来该怎么发展都觉得迷茫。想跳槽,又不知道自己能干什么,正处于灰心期。想学习,又不知道学习什么有前途,于是什么都学,新技术层出不群,反而弄的更心慌了。有的同学自己创业了有了自己的小摊子,在国企和公务员的同学也高升了,有的同学也升做了项目经理,自己还是个程序员。想开发个什么网站,尝试后发现自己都是瞎捣鼓,想开发个什么软件,却发现现在什么软件都不好卖,自己又没有客户关系。唉,怎么混的这么惨。有些程序员,就是在干了5年程序员后,不是转行了,就是抛弃了企业管理软件开发,从头做起,改做互联网网站了。发现思路格格不入,技术也是新学,比不上人家一开始就做互联网的。尴尬自知。
我自己也经历过这个阶段。我深入研究了许多技术,发现并不能很好解决软件开发中遇到的问题。该如何解决,我也不知道。
大家看我的经历,就会发现,我研究技术,是为了解决软件制造和实施和服务中的问题,而不是纯粹因为感兴趣而学习技术,为了显示自己是公司技术最厉害的人而学习技术的。这在商业软件公司根本吃不开。商业软件公司,赚钱为主。如果你的技术无法给公司赚钱带来帮助,就根本没有用。
有些做了3-4年的程序员,做到这个阶段,新技术看了一大堆也不明就里,仍然在学习hibernate怎么配置怎么用,structs怎么配置怎么安装怎么调试。说明这类程序员缺乏开发天分,无法在技术上成长为优秀的程序员或技术专家了。
有个网友已经30多岁了,他很迷茫现在。没有客户关系,也不会跟人沟通,技术也不牛,自己做点东西吧还不知道做什么好,也没时间想,整天穷忙,创业创不了,项目经理做不了,做开发也是以后肯定被淘汰,问我该怎么办?我问他:你最大的优点是什么?他说:没有任何优点。我问他:你是不是干活很踏实,给分配了任务干活很努力,承受压力也不错,软件代码质量也挺好,做事挺细心。他说:对。我说:你适合去做外包。他说:我英语不好。我说:你是想被老板淘汰,还是想赚更多的钱。于是他不说话了。
不过有些技术很牛的人现在也很困惑,工资就是不涨。我建议他从帮助产品提高销售额的角度去把自己的技术应用到产品中。我过去有个手下,做行业信息化管理软件,却不愿意深入了解这个行业。自认自己要成为技术专家,要做最好的软件架构,于是拼命学习了N多框架,对比分析,做源代码阅读,做实验尝试新技术,整天熬夜。做出来的架构却是并不能减轻业务功能开发人员的工作量。老需要注意N个地方,配置多个选项。配置错误就运行错误。这类架构还不如没有。我们是在开发行业信息化管理软件,不是在做变型金刚。我们不希望一个能制造汽车,也能制造轮船的东西。我们就需要制造小轿车的平台架构,连制造卡车的平台架构都不需要。但你制造的却是一个个的螺丝和钢管。
如果有的技术牛人,技术也能很有效的帮助产品提升。但工资还是不涨。可能跟公司抠门有关。可以建议去发表一些博客来提高江湖的知名度,这样请你去做技术咨询方案的人也有可能找到你。
在企业管理软件开发公司,一般有以下这些职位可供发展:
实施人员、实施经理、咨询经理、售前、市场、销售
服务人员、服务经理
开发人员、高级开发、客户化定制开发、技术专家、开发经理、技术总监、CTO
如果你善于组织和调度人,善于推动项目和控制项目,善于和客户沟通理解客户,那么你可以往项目经理职位转变。实施经理、服务经理、开发项目经理,都可以选择。开发经理,未必是技术最好的那个人。
如果你不善于和人打交道,技术也不行。那么做一个踏实稳定勤恳的客户化定制人员或技术服务支持人员。并且在工作中不断小改进,让自己的工作更有效率更有效果。
如果你不善于和人打交道,技术也不行,但对客户业务比较熟悉,那么建议你踏实工作,做好实施(做好实施的人未必会与人打交道。我发现很多性格内向的人,提升自己的职业化工作细节,公事公办也达到了很好的实施效果)。从实施,可以转向咨询、售前。但咨询、售前都是很需要结构性思考和细致观察的工作。
如果你技术无望、不善于和人打交道,也不善于组织控制,也不善于细致观察思考,也不想踏实勤恳,却想到处跳槽涨工资。我想你恰恰什么都得不到。你是最容易被裁掉的那个人。选一样,你必须选一样。即使你一无是处踏实努力干活保证质量和进度也好啊,现在,踏实努力干活的员工在每个IT公司都是宝。
我有个朋友,过去是做开发的,最后做了实施项目经理。老觉得自己的工作很空,混了几年代码也忘了,就会跟人扯皮了。自己也不会结构化思考,当不了咨询顾问。也不想做市场和销售。问我该怎么职业发展。
我给他讲了一个故事,我问他:你觉得,西游记师徒四人,你要开除,首先开除谁。
我的朋友说:当然开除猪八戒。他又自私又贪心又好色,诚恳不如沙和尚,武功不如孙悟空。
我又问他:哪第二个应该开除谁?
我的朋友回答:当然是唐僧。他没啥本事,还老误解人,什么本事都没有老拖后腿,每次得解救他。
我说:那好。如果就让孙悟空和沙和尚两个人去取经,他们能取到吗?不过他们不能一个跟头驾云去,那就没什么讨论了。
我的朋友说:他们俩怎么能取来经呢?在公司里,如果把一个牛人和一个踏实老实的员工,让他们俩去完成任务,多半会半路闹崩了。
我说:那如何不让他们闹崩了呢?
我的朋友说:需要有一个项目经理领导他们俩。
我说:OK。这就是项目经理。公司里已经有一个唐僧了,他就是你的老板。唐僧既然已经有了,牛人也有,踏实的员工也有,但还是完不成目标,就是需要有项目经理。你就是那个项目经理。这种职位永远需要,但总是不那么突出,但老板明白谁才是最重要的。你看看历史:刘邦封功,韩信张良萧何。萧何就是那个项目经理到处串线搭桥。明朝,徐达刘伯温李善长。李善长就是那个项目经理。项目经理就是主板上的CPU,用来协调各个其他计算部件的。所以,你很有价值。
我的朋友现在已经是很好的项目经理,老板也放心将历时一年价格500万需要牵扯多个部门几十号人的大单项目交给他来负责。
我问他:过去你怎么当不了一个好的项目经理呢?
他说:观念转变不过来。是工作强奸你还是你享受工作,就看你怎么看。
敢问路在何方,路就在脚下。
转自:http://blog.csdn.net/david_lv/archive/2008/06/10/2530502.aspx