程序员和项目经理是两种完全不同的岗位,工作方式也大不一样。以前是一个人单干,现在是团队一起干,以前是自己亲自干,现在是指挥别人干,这是一种巨大的变化。要适应这种变化,首先必须要转换思维模式。思想决定行为,思维模式就好比在陌生城市找路用的地图,拿着过时的地图,自然无法到达想去的目标。思维不换走老路,思维一换天地宽。
1从单干到群干
从程序员到项目经理,不只是职位的变化,其工作性质也发生了根本性改变,简单的说,是一个从单干到群干的过程。
严格来说,程序员并不是单干,他们也是在团队中,需要具有团队合作的精神,但其实程序员的工作具很强的单干的特征。在项目中,程序员的基本工作,也就是完成项目经理分配的开发任务,而这些开发任务,是项目经理或团队进行工作分解后的小的工作包,是一个确定的功能点,一个人足可以胜任,因此程序员只需要自己构思、自己编码就可以了,并不需要很多人一起来合作完成。
项目经理不一样,他面临的不是某个确定的功能点,而是整个项目,无法一个人完成,必须要整个项目组齐心合力一起来做,这就是群干,也就是团队作战。项目经理不只是自己需要团队精神,更要能够激发其他人的团队精神。
我们看一看程序员和项目经理两种角色的比较:
正如黄健翔的名言说的一样:“你不是一个人在战斗!”项目经理要时刻记住这一点,不要只顾自己闷头编码。只有学会发挥团队的力量,才能管好项目,成为一名真正合格的项目经理。
2为什么软件企业人难管
从单干到团队做战,项目经理最大的变化就是以前只需要管自己一个人,现在你要管一个团队,以前独善其身就可以了,现在要兼济他人了。可以说,项目经理最重要的一项工作就是管人。
但是软件企业的人是出名的难管。软件公司的经理管人有两难,一是留人难,人才流失成了很多公司的心病;二是用人难,要把程序员用好,把大家的潜力发挥出来,决非易事。
( 1 )留人难
每年春节过后大约三月份,是很多软件公司的人力资源部经理最“兴奋”的时候,一方面他们要大量招人,另一方面,大量程序员辞职流失,让他们叫苦不迭。
程序员的离职率高,一直是行业的普遍存在的问题。据前程无忧网站2012提供给《中国经济周刊》的信息表明,IT行业人才流失率高居所有行业的首位。另外据CSDN的一份调查显示,436%的开发者在5年内换了3份以上的工作,这么高的跳槽频率真是让人瞠目结舌。我们不禁要问,为什么程序员这么“喜欢”跳槽呢?
我曾经接触过数以百计的人员离职,根据对他们的分析,我将程序员离职的主要原因分为三种:
表 程序员离职原因分析
以上枚举显然不能穷尽所有的问题,但能抓住主要原因就可以了。
这么多问题中,最重要的还是薪资问题。据《北京青年报》的调查显示,“职业收入高低”是促使人们跳槽和选择新职业的首要原因。然而在这一问题上,公司其实也有其苦衷。
很多人从学校毕业,对开发基本上一无所知,经过在公司一年多的培训学习,取得了巨大进步,个人能力提升很快,此时必然对薪资要求也比较高,这是可以理解的。然而,站在公司的角度,这一年你基本上还谈不上什么贡献,公司却付出了较大的成本,大幅加薪一时难以接受,难道我把你招进来就是为了培训然后再涨工资干活吗?你也许会认为公司非常短视,这样的公司不待也罢,殊不知,软件行业看似光鲜,其实大量的企业挣扎在生死线的边缘。据工信部统计,2011年上半年我国软件行业利润仅占软件业务收入的128%,这么低的利润率,能活下来就是成功,对公司提出过高的要求也是不现实的。
在这一场博弈中,没有谁对谁错,但公司肯定是受伤的一方。真正将员工利益与公司利益统一起来的凤毛麟角,大部分公司里,公司和员工就像一对冤家,虽然互相需要,却又矛盾重重。
当然,其实公司也应该转变思路,不要总抱着我培养了你、你应该感谢我的心态,在程序员进步巨大的情况下,还是要给员工相应的薪酬,真正留住人才,毕竟软件项目禁不起人员剧烈变动的折腾,从长远来看,公司还是划算的。
( 2 )用人难
留人难,用人更难,要把程序员用好,则是难上加难。员工用得好,每个人都奋勇当先,以一当十。用得不好,员工死气沉沉,没有朝气和干劲。在我所见过的软件项目中,虽然有不少程序员工作主动积极、富有效率,但更多的是缺乏激情、消极怠工、甚至不服从项目经理工作安排情况。
为什么软件开发人才就这么难用呢?这是由多方面的因素所决定的:
●软件开发的特点
软件产品有一个非常显著的特征,就是它是一种无形的东西,在生产过程中看不见也摸不着,完成以后可以看到运行效果,但你还是无法知道它是不是一个“豆腐渣工程”。它里面暗藏的问题也许若干年后才能看到,也就是说它的质量评价非常困难。这与传统的制造行业有着非常大的差别,比如你是造一栋房子,生产过程中我们就能看到它的结构设计是怎样的,它的地基是不是够牢固,它有没有用“牙签钢筋”等等。
第二个重要特点是对人的依赖性非常大。同样的一个功能点,由不同的程序员来做,所花的时间可能会相差很远,比如有经验的人来做可能只要1天,没经验的人来做,可能1周甚至1个月都完成不了,做出来的质量也可能有天壤之别。即使是同一个人,由于其工作状态的差别,也会产生巨大的差异,如果主动积极做,可能只要1天,消极怠工的做,就无法预期了。这样的情况,在传统行业是无法想象的,只要按规定的程序和规范来做,即使换一拨工人,也可以在同样的时间建造出来,建出来的房子的质量也不会相差太远。要知道,再烂的挖土机也能挖出一个大坑。
总之,软件开发存在非常多的不确定性,非常依赖于每一个开发人员。虽然管理专家们发明了很多方法企图来减少这种不确定性,减少对人的依赖,让软件开发像传统行业一样变得可控,但迄今为止,仍然没有一个通用的行之有效的方法,专家们也不得不无奈的发出“没有银d”的感慨。
● 程序员的个性比较强
不得不承认,与其它行业人员相比,程序员显得更加内向、不合群,有些人自视甚高,看不起别人。他们做事冲动、不服管,也就不足为奇了。
●程序员的想法比较多
程序员都很聪明,对自己的期望值也很高,不会满足于现状。有想法本来是好事,但人人都很有想法时,经理就没那么好当了,没有高超的领导技能是难以应付的。
综上所述,软件企业对人的依赖性非常强,却又面临着留人难和用人难这样两难的困境。要解决这些问题,一方面要求软件企业真正要做到以人为本,另一方面也对管理者提出更高的要求。
3转换思维提升领导力
留人难、用人难,难道我们真的就无能为力了吗?这两难困境中,有行业原因、有公司原因,对于这些,作为项目经理也许力不从心;但也有程序员的原因和项目经理自身的原因,对于这一类问题,项目经理并非无能为力。即使在同一个公司,不同项目组中的人员流失情况、团队士气也会有很大的差别,这说明项目经理完全是可以有所作为的。对于有强大领导力的项目经理而言,人员的流失率会更小,工作效率会更高。要提升领导力,首要的是转换思维。
在前面博文中曾介绍了管理的五大思维:以目标为中心的思维、整体思维、平衡思维、以人为中心的思维、团队思维。其中前面三项与理事有关,而后面两项与管人有关。下面我们对这两种思维进行详细的解析:
表 管人的两大思维
可以看出,这种以人为中心的思维和团队思维,真正体现了以人为本的思想。它们与程序员的机器思维、单干思维大相径庭。许多项目中的问题,就是由于项目经理的思维还停留在程序员阶段造成的。
管理学之父彼德德鲁克说:“管理是一门反映人的内心,与人性息息相关的科学。”项目经理只有跳出程序员思维的局限,实现思维的转换,尊重人性、遵循人的社会法则,才能真正把人留住、用好,项目团队才能具有更强的战斗力。
4项目经理也是人事经理
在管人的方面,除了要建立上面两大思维之外,还要提高一项认识,那就是项目经理其实也是整个团队的人事经理。
很多项目经理对下属关注的重点往往是他有哪些具体技能,比如他有几年工作经验,他会用JQuery吗,熟悉NHibernate吗等等,而对于项目组成员培训、薪资、离职这些事情,则认为统统是部门经理或人力资源经理的事情。如果将问题交给人力资源部,需要跨部门协调,比较麻烦,因此干脆直接全部推给部门经理。
我担任部门经理的时候,曾无数次遇到这样的情况:
项目经理找到我说:“经理,某某要辞职了,帮我安排一个人。”
“你跟他谈过没有?”我问道。
“还没有。”
“他为什么辞职?”
“还不清楚,可能是工资问题吧。”
我找员工沟通过之后,原因自然是五花八门,有要求加薪的,有抱怨环境的,还有跟项目经理合不来的,不一而足。经过多轮沟通,该开导的开导,有合理要求的尽力帮助争取,还有一部分可以承诺延迟满足,或者用前景来“诱惑”等等,采取这些方法之后,还是有不少人愿意留下来继续做的。其实,大部分辞职的人并不是喜欢换工作,而是有一个心结,需要上司来帮他打开。
其实我做的这些工作,项目经理一样可以做。项目经理与员工朝夕相处,要时刻关注员工的动态,发现异常情况,及早介入沟通,也就不需要其上司费尽心力了,而且员工可能根本不会走到辞职这一步,沟通效果会更好。
项目经理还有一个普遍存在的误区,就是在评价下属时,习惯于说某某不听话、不好管。殊不知,一个员工好不好管,其实也取决于项目经理本人的态度和做法。一个看似不好管的员工,经过引导,同样可以成为项目的骨干,这样的例子屡见不鲜。
所以项目经理在碰到管人的难题时,不要再总是想“这个我管不了”、“那个我没办法”,而应该抱着“我也是人事经理”这样的心态,主动沟通、想办法。如果经过分析或者努力后,确实需要上司出马的,才去请上司来帮忙解决。直接把问题丢出去,当然是最简单,但这样做一方面你在团队中的威望会受到影响,项目的凝聚力下降,另一方面你的个人价值也大打折扣。
5打造“凝胶型”团队
著名职业经理人唐骏说,管理的任务就是“造一条船,然后让船划起来”。对项目经理而言,我们已经有了一条船——就是项目团队,现在的任务要把它划起来。
软件质量之父沃兹汉弗莱曾经提出,一支高效的团队应该是一种“凝胶型”的团队。在这样的团队中,大家有着清晰的共同目标,彼此合拍,每个人都全身心投入,团队显示出超常的战斗力。
我曾有经过一次项目灾难拯救的经历,这一段时间我真正体会到了凝胶型团队的力量。项目上线后发现软件运行效率极低,故障不断,人人疲于奔命,客户发出最后通牒,三天之内搞不定就下线。在这种情况下我临危受命,临时接管项目。接手后我主要做了以下几项工作:
1找出当前影响最大的几个问题,采用头脑风暴法一起找出解决方案,在短时间内让客户体验有较大改善,让客户重拾信心,然后不失时机安抚客户情绪;
2每天客户下班后开会,与项目组成员一起进一步研究项目存在的问题,按轻重缓急做成任务列表,制定阶段目标,并检查上一阶段完成情况,更新任务列表;
3向公司申请了充足的经费,保障后勤,改善工作环境和吃、住条件,解除后顾之忧;
4与团队一起加班加点,一起分析问题,并亲自完成一些力所能及的功能修改。
有随后一段时间里,项目团队的状态让人难以置信。项目组虽然夜以继日的工作,却没有一个人说出一句怨言。其中一位同事才刚当上爸爸一个星期,就驻现场无法回家;还有两位同事的女朋友半夜打电话过来,他们只能躲在一边苦苦安慰;还有一位同事,由于个人原因早先已经申请了离职,仍然与我们一起奋战到最后一刻……经过一个多月辛苦修改完善,项目总算彻底摆脱了危机,项目组高高兴兴打道回府。
在这一次经历中,虽然大家都很辛苦,但每个人都过得很充实。大家同心合力,每个人都贡献了自己全部的智慧和力量,也都做到了以前难以想象的事情。
我为什么举这个一个非正常项目(陷入灾难)的例子呢?这是因为要建设一个真正的凝胶型团队非常不易,不只是依赖于项目经理和每一位成员,还与公司的制度、氛围、项目的任务特点等多方面的因素密切相关。在这个例子中,项目灾难显然也是激发大家战斗力的一个重要因素。不过,即使是不能完全做到,但通过项目经理努力,还是可以近似实现的。
根据项目经理团队中充当的角色和发挥作用的不同,凝胶型团队可以分为两种,即星型和网络型,如下图所示:
图 两种“凝胶型”的团队
● 星型
项目经理处于中心位置,好比一颗红太阳,把大家吸引在自己的周围,整个项目组依靠项目经理领导力团结在一起。这要求项目经理个人能力极强,富有魅力,具有绝对的权威。星型团队的决策方式常常是这样的:项目经理收集意见,项目经理决策,再反馈给大家,或者由项目经理单独决策,再分发给大家。
● 网络型
网络型的团队中,项目经理看似在其中不占主导地位,项目经理的权威被弱化,实则项目经理的对团队的控制已经内化到每个人的潜意识之中,达到了一种近似于“无为而治”的境界,因此对项目经理的要求更高。
这种团队的决策方式一般采用民主制或民主集中制。把大家联结在一起的不只是项目经理领导力,更是富有挑战性、具有吸引力的目标,以及共同的认识和价值观。项目经理往往是外柔内刚,能够不动声色,于无形中实现对项目掌控。
能够建成星型团队的项目经理已经寥寥,能做到网络型更是可遇不可求。不管有多难,目标不能丢。我们就好比是一群已经出发的登山者,来到了山脚下,怎么能够因为看到山太高太难爬就放弃攀登呢?
>
2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)
3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)
4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为BillGates,不想成为DennisRitchie和BjarneStroustrup,我会说你没有追求。有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:
一个程序员对自己的未来很迷茫,于是去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”
于是他去问Lippman。
Lippman说“程序员的未来就是驾驭程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”
于是他去问Gates。
Gates说“程序员的未来就是榨取程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”
于是他去问侯捷。
侯捷说“程序员的未来就是诱惑程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝摇摇头“唉,我的孩子,你还是别当程序员了”)
6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时我问你,觉得这些是乐趣吗?)
7、当程序员不易也不难。(世间事有难易乎?为之;不为。你有决心和信心吗?)
8、你真的要当程序员?是你自己的想法?
9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。)10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。
11、编程序就是编写程序。
12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。)
(三)一个程序员应该具备的基础知识和概念
1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)
2、机器语言和微指令集的概念。
3、程序的概念。
4、汇编语言是低级语言但不是机器语言。
5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语)6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的)
7、HTML、XML等是标识性语言。
8、Prolog是人工智能语言。
9、 *** 作系统OS的概念和原理。(Windows98,Windows2000,WindowsNT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)
10、Windows编程说白了就是WindowsAPI的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)
11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。
12、面向结构的设计概念。
13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的)
14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟)
15、数据库的概念。(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)
16、了解网络概念。
17、了解多媒体概念。
18、熟悉和掌握数据结构和基本算法。
19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事?!)
(四)教材推荐
——-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。
1、《计算机组成原理》(熟悉)
2、《数据结构》(掌握)
3、《 *** 作系统》(了解->熟悉)
4、《TheClanguage》(掌握)
5、《编译原理》(了解原理)
6、《汇编语言》(了解)
7、《计算机网络》(了解)
8、《软件工程》(了解)
9、《关系数据库》(熟悉)
10、《TheC++Languege》(掌握)
11、《面向对象设计》(掌握;结合C学习)
(五)一些经验和体会
1、真正的程序员用C;(一位专家说的)
2、动手去编程序;
3、动脑去思考;
4、要有良好的编程风格;
5、读书,读好书,尽量读原版书!(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书)
6、有自己的学习计划;
7、总结自己的经验教训;(准备一个笔记本,记录错误和心得)
8、不要怕学新东西;
9、要有软件工程的思想;
10、善于发现问题,然后去寻找答案;
11、向高手请教;(要虚心直到你成为高手)
12、和同行交流;(不善于交流肯定不行)
13、懂得软件的实质,不要被千变万化的表象所迷惑;
14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够)
15、学习wiodows编程主要是学习windowsOS和win32API;
16、有空了解一下嵌入式开发;
17、有空了解一下PDA软件开发;
18、了解一下NET框架和C#语言,也许它是你新的衣食父母;
19、要有耐心,不要作浮躁的人;20、对程序加注释,并保留你的老程序;
21、学到的东西越多,了解的越多,你就越接近专家;
22、有空去逛逛CSDN,那里有你很多知己;
23、要有信心成为一个优秀的程序;
(六)一些好书的推荐
1、《TheCProgramminglanguage》(Keinighan&DennisRitchie1988)
2、《TheCProgrammingLanguague》(BjarneStroustrup1997)
3、《InsideTheCObjectModel》(lippmans)
4、《EffectiveC》(同上)
5、《MoreEffectiveC》(同上)
6、《Exceptionalc》
7、《C面向对象高效编程》
8、《设计模式》
9、《ThinkingInC》
10、《TheStandardCBible》(一般推荐)
11、《TheArtofComputerProgramming》
12、《ProgrammingWindows》(CharlesPetzold)
13、《VC50技术内幕》
14、《MFC深入浅出》
15、《软件需求》
16、《AdvancedWindows》
17、《Cprimer》
18、《win32程序员参考手册》
19、《用TCP/IP进行网际互连》
20、《COM本质论》
(七)学习计划
——-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。1、《计算机组成原理》
2、《 *** 作系统》
3、《数据结构》
4、《汇编语言》
5、《C》
6、《C》
7、《VC技术内幕》
8、《ProgrammingWindows》
9、《深入浅出MFC》
10、《AdvancedWindows》
11、《InsideTheCObjectModel》
12、《ThinkinginC》
13、《EffectiveC》
14、数据库
15、网络
16、嵌入式OS和编程
17、硬件单片机
18、NET和C#
19、软件工程
20、UNIX和Linux
转行做程序员优先考虑编程语言,Java就是一个不错的选择。
首先、学习门槛较低,入行难度不高
学习Java一般只要大专以上学历就可以,年龄最好在20-30岁之间,相信这个门槛并不是很高,很多人都有机会进入这个行业。
学习难度其实也没有大家想象中的那么难,很多人会纠结于自己的英语差、数学差这些因素,其实这些都不是能影响你学好Java的原因。很多来参加Java培训的学员都是零基础、跨专业,为了能让他们学好Java,成为一名合格的Java开发工程师。
其次、薪资高,发展前景广阔
关于Java行业的薪资,相信大家已经了解的很详细了。如今各个地区都在鼓励和加快进行Java方向的建设,所以,在未来必将创造出更多的Java岗位。
在信息化时代,Java在未来的作用会越来越大,现在学习Java正当时。
IT行业薪资高、待遇好,在转行的时候,好多人毫无疑问都会指向IT行业。IT行业领域众多,哪个行业最值得进入呢?相信很多人在转行之初都会被建议去学习Java,为什么建议你在转行之初选择Java开发呢?如果对编程感兴趣可以来我这看看。
我们都知道,IT作为一种新型产业,在过去短短的十几年内,已经成为我国重要的经济增长点,也受到国家的大力扶持。随着“互联网”、“人工智能”、“云计算”、“智慧城市”等重大的战略的实施,更是意味着IT行业将产生巨大的作用,而Java作为常年占据编程语言排行榜第一的位置,凭借自身强大的能力必将在这些战略的发展中扮演更加重要的角色。
希望对您有所帮助!~
程序员,是一个很累的行业,经常要熬夜赶代码。以下是我为大家整理的c++程序员如何创业案例相关 文章 。
c++程序员如何创业案例:
这是我多年来招聘培训游戏程序员的一点想法。一直想汇总一下。主要目的是为了更好的对公司新进C++程序员进行培训,并且建立起游戏程序员培训,发展,成才,成为核心骨干,管理层,期权收益人等一整套体系。因为对于MMO游戏制作来讲,解决好C++技术队伍,是保证合格软件的基础之一。
我在的H3D Studio核心技术人员和游戏制作管理人员全部是SMTH BBS游戏制作版成员。从99年开始截止BEGINER的历任版主都在H3D STUDIO里工作过。在这里我把具体的培训以及技术队伍组建的内容去掉,只和大家聊聊关于游戏程序员切身利益相关的事。
另外这不是居高临下来评判什么事情。我本人也不是多么高级的技术人员或者管理人员。只是坚持做一件事情年头很长教训很多而已。所以有些体验。文中所有评判其他结构或人水平低,并不是说我本人水平有多高。不要误会。
一、C++游戏程序员现状
中国C++程序员100%都是自学的。因为中国几乎没有象样的C++培训机构。大家都知道社会培训是赚钱为主要目的。能在那里成才是个大运气。也不象JAVA有SUN公司一手推行。中国大学 教育 里也根本没有C++教学。关于C/C++基础课的知识,只是让学生入门。但对于实际的C++软件工程应用,大学课本知识实践意义不大。最重要的是,大学里没有合格的C++老师。编程是门技术,叫手艺也行。而大学是搞科研的,多的是科学家,靠出PAPER教科凭职称为生。并不是技术员。没有10万行以上代码 经验 和成功软件项目经验的人,很难教出中高级C++程序员。
游戏制作业对C++程序员的要求是比较高的。比一般行业软件高很多。因为任何一个MMO都是个中大型软件项目。日使用人次达到几十万上百万,同时使用人数几十万在线的大型网络多人交互软件,集成了超过十几项专业领域编程技术的软件,想不大都不行。
另外,中高级C++程序员能力一般都很强。因为都是自学成才,这需要较高智商,很强的自学能力,解决问题能力,和克服困难的毅力。但是这种人才在游戏行业里人数并不多。抛开凤毛麟角具备整体大型软件架构能力的高级人才不谈。能够承担独立模块开发,具备独立解决问题的能力,写出在空间,性能,可维护性等几个方面达到要求的C++程序员,也是很难找到的。而具备这些能力,同时又具备一些专业领域技术的人(图形引擎,网络引擎,等),更加稀少。
所以,即便是大游戏公司,对于C++游戏程序员的需求,也是永远不能够得到满足。而已经在公司工作的C++程序员,不经过短则3个月,长达1年的锻炼,也无法真正胜任独当一面的C++游戏程序开发工作。
二、MMO游戏开发对C++游戏程序员要求
前面提到,所有MMO游戏都是中大型软件。软件占用空间,稳定性,性能,可维护性等各项衡量软件质量的指标,对MMO游戏软件的要求都非常严格。远大于普通行业软件。这种规模和银行系统类似。而客户端和软件逻辑比一般的商业软件又要复杂很多倍。这就要求软件编写人员具备较高的程序编写素质。
游戏软件中,解决好软件工程部分,只是项目的1/3。另外两部分是策划和美术/音频。从经验来看,需求变更对于MMO游戏软件,不是偶然事件,而是一种MMO游戏软件开发的基本属性。游戏软件投入大,周期长,风险高。MMO市场变化也大,交互电子游戏发展迅速。游戏软件必须面对外界变动。又因为开发周期长,所以软件需求变动成为了软件开发的一种基本属性。犹如复杂性是软件工程的一项基本属性一样。
这导致游戏软件的开发充满了不确定性。交互娱乐不同于商业应用。娱乐是属于理性和感性之间的领域。而C++开发面对就是0和1的二元世界逻辑。这两个领域存在着不可调和的矛盾。这种情况,对C++游戏程序员提出了更高的要求。
首先,基本C++知识,C/C++运用技能,必须极其扎实。并不是游戏软件开发用到什么平时书本上很难得到的知识点或者技能点。游戏C++开发的知识体系和技能体系,利用现有C++书籍就可以满足。比如《C++ PAORGRAMMING LANGUAGE》《C++ PRIMER》《EFFECT C++》《MORE EFFECT C++》等。但是在开始游戏编程之前,把这些书本吃透并且实践熟练的人,非常难遇到。当然能够真做到这点的人,已经是个中高级C++程序员了。我曾经遇到过一个, 毕业 工作不久就去了GOOGLE
其次,对于面向对象的深入理解。是非常重要的。熟练掌握C/C++语法,编程技巧,只是满足了C++游戏程序员一部分要求。而面向对象观念的深刻理解,会为大型C++项目开发带来翻天覆地的变化。 有时候,在一个10人以上并行开发的C++游戏项目中,面向对象 方法 会成为救命稻草。《设计模式》以及《设计模式解析》相关的书籍,也是必修课。
最后,好技术人员的本质是自大的。这属于正常。但是如果这种习性影响了自身继续提高和团队合作。以及影响了其成为技术管理者和项目技术核心时,那么这种技术人员的自身价值会大打折扣。 如果早日越过自命不凡这一关,扩大眼界,继续在综合素质上提高。在技术管理能力,架构能力上提高,其自身价值才会继续增长。落到实处,就是待遇和身家增长。
由于游戏开发的本质是团队开发。任何时候,只有对一个团队有价值的技术人员,其本身的价值才有可能得以体现。
三、成长和技术发展路线
一般技术人员发展有几个阶段
1 、具备独立开发局部功能的能力
比如为某个UI编写逻辑接口函数。为某个LOGIN对话框编写自绘制控件等。
2 、具备独立开发和攻关某个功能模块的能力
比如为游戏增加一个小型逻辑功能模块。
3 、具备独立设计并开发某个系统的能力
比如设计和开发AUTOPATCH 系统
4 、具备解决技术难题,设计架构的能力
比如开发网络同步仿真系统,开发一个中大型游戏制作工具
5 、具备整体架构,管理,协调其他人共同开发一个大系统的能力
客户端主程,服务器主程,引擎主程等
6 、技术director
制定技术发展方向,技术团队建立,技术管理等
在迈向每个阶段的过程中,伴随的都是巨大的工作量和工程压力。有时候是跨越1年的失败等等。在公司项目不成功时转换单位,重新开始,或者继续做为核心团队留在公司继续从新的机会做起,都是好的办法。但关键是吸取经验教训,尽量多学多练。并且结合自身长处发展。当然,游戏制作人员,最好还是依靠一个核心团队。成为核心团队的一员。
能够达到第三档的程序,已经是公司不可缺少的人才了。但往往程序员自身对自己的认识,和公司对其的认识,有时候会有差异。我碰到过一些人,脑子好用,写东西很快。各种技术都有涉猎。但总是不放心让他独立开发设计某个系统。哪怕是相对独立的工具。也会被搞得一塌糊涂。要后面人不停擦屁股。可自己还觉着自己水平很高。这种人浮躁,眼高手低,不愿意细致周全的做好一件完整的事。所以就可以看到他不停的跳来跳去,可在新公司的职位也没有见多么提高。公司非常重视交给一个程序员一件事,他是否能完整,考虑周全的把事情做完。哪怕时间长一点,也不能不做完。这会给工程带来致命的后果。
四、发展待遇
从自身经验出发谈一下公司是怎么考虑技术员工待遇的。
前面提到的6档,粗略了划分了待遇水平。其实到了第三档,你的待遇已经是这个行业所决定的了。而不是某个公司决定的。因为游戏业大量缺乏这样的C++程序员。如果具备这个水平,在几个大城市游戏公司找到工作并不难。大公司提升慢,还有我这种不到百人规模的公司要。所以行业价格才是公司要考虑的。如果给少了,软件项目的C++程序员流失会带来较大影响。但给的多,其实是 C++程序员自己的价值增长瓶颈。如果几年下来一直以为自己水平就该拿这么高,结果到了一家整体技术水平比较高的企业,就会彻底傻眼。这个时候再放低心态去重新开始,对技术员来讲就是件很艰难的事了。
在目前游戏行业技术水平普遍较低的情况下,哄抬程序员工资水平对程序员自身好处也不会很大。就算一个新手本来拿几千的水平,给他1万。他根本就不会知道自己到底有多少水。一年下来也就多拿了3-4万人民币。可耽误的是学习,影响了心态。而那些心态好,知道努力方向的技术人员,干个3-5年后如果有拿期权和股权的机会,比那些一开始虚高的人,身家就不知道高多少倍了。
c++程序员如何创业案例:Visual C++程序员 职业规划
有很多的程序员刚毕业时充满活力,经过几年的工作之后,激情就会慢慢消失,现在软件行业环境变化很快,一旦无法跟上行业发展的步伐,工作上就更难有所进境了。对于应届生,以前只要考得一个资格认证,会受到很多企业的青睐,现在证书满天飞,企业更加注重求职者的能力。应届生的第一份工作也是越来越难把握。很多人在求职的过程中开始转行。对于读者你,是否有职业的危机感呢
对于应届生或者经验不多的程序员,或许有很完备的理论知识,但是公司衡量员工的标准是效益,谁能创造效益,就会收到重视。应届生往往很难找到一份满意的工作。第一份工作是职业生涯的开始,是需要慎重的,然而,究竟用怎样的标准选择工作呢由于实践经验的缺乏,应届生不必关注第一份工作的薪水,时常听到一些人为找不到工作而发愁,他们已经接收到了几个公司的录取通知,但是因为薪水的原因,选择了放弃。其实没有必要攀比第一份工作的薪水,这在刚刚走出校园的大学生中是很常见的,然而必须明白,我们的工作经历可能要持续到60岁左右,是一场 马拉松 长跑 。起跑最快的未必是最后的胜者。刚踏足社会,在500强公司一个月大概能拿到4000左右的工资,有些特别才能的人会拿到8000左右,而5年以后,工资水平也就5000到10000了,增幅也是有限的。后面的年轻人追赶的压力却愈来愈大。所以第一份工作找一个符合自己专业的或者能力的公司去,你的开端会低点,但是你会有很持久的耐力。
在工作了一段时间后,有时会发觉自己的工作和想象相去甚远,甚至会觉得自己入错了行业。为自己的待遇没想象的好感到委屈。这时候需要冷静的思考一下自己的处境,看是否是因为自己过于理想化的结果。如果是,就有必要对当前行业的现状进行深入的了解,搞明白当前的行业发展在向什么方向前进,由于环境的突变,这点有时很难做到,但是适当的理性分析是很必要的。如果一味的埋怨下去,工作没有做好,还耽误了自己的职业发展。如果原因出在自己身上,比如说个人习惯等问题,就要看能不能改正一下自己的习惯,慢慢的适应当前的环境。
程序员在一个发展良好的工作上做久了,就会积累丰富的技术经验,再往后发展的途径有很多。到底该如何选择要结合自己的兴趣和当前的技术水平。在做了几年的技术之后,对于程序员来说,可有几种基本的职业规划:技术专家、软件架构师、高级顾问销售或自主创业。程序员毕竟是偏重技术的职业,主要的发展方向会是资深技术专家。无论是那种领域,都要努力让自己成为专家,然后在发展为架构师。有些人当架构师工作一生,有很好的待遇,然而这种工作很有限,而且,在中国,架构师的需求量比较少。
我们想要达到的目标,往往就在起初确定了,而且注定了我们职业的目标不是一蹴而就的,相对于我们所能工作的年限来说,职业生涯可能要终其一生。然而我们在不同的职业阶段有阶段性的目标,应届生希望在工作上积累经验,经验达到了自己当初的所想,我们就离自己的最终目标近了一步。职业规划并不是一成不变的,会有很多的机遇和经历改变你的思想。但是不论你会有怎么的规划,都要把社会条件考虑进去。我们进入一个阶段,思想认识更加深刻,眼界更加开阔。有时会对自己未来的职业进行更加深入的思考。这时候是需要慎重的。我们都需要过一个阶段点评一下自己。看自己是否在进步,下一步又该如何做。我们发现现在的环境不能满足自己的发展要求,就要考虑换个合适的环境,或者考虑从自己的目标是不是过于理想化,适当的贴近现
实考虑一下。不论会作出怎样的决定,都要保证你在向进步的方向前进。不要因为一时的放松而断送了即将到来的目标。
工作是一件需要理智的事情,不要因为自己懂的多而在工作上耍个性,现在公司注重员工的团队意识,大型软件的开发过程,需要一队人的共同参与,自己耍个性并不能帮助提升你的工资,也可能阻碍你的职业发展。所以工作中要谦虚学习,努力的学习新技术,从别人身上学习优点,会帮助你发展的更好。
每个人依照自己的兴趣会有不同的职业规划,不要偏求自己的目标多么伟大。也不要轻视任何一个努力工作的人。职业规划不是一成不变的,很多人在不同的人生经历后会改变自己发展方向。但是有一条,不要希望奇迹的出现,勤勤恳恳工作是成功的基本法则。
追求目标的实现更多的是为了享受成功带来的欢乐,不要因为一时的攀比搞乱了自己的职业发展。如果你做好了自己的职业规划,那么,不要等待明天,从现在开始,行动起来吧!
c++程序员如何创业案例:
1什么是创业
关于“创业”二字有必要重新学习一下,找了两个相对权威定义:
创业就是创业者对自己拥有的资源或通过努力能够拥有的资源进行优化整合,从而创造出更大经济或社会价值的过程。——百度 百科
创业是一种思考、推理和行为方式,它为机会所驱动,需要在方法上全盘考虑并拥有和谐的领导能力。创业必须要贡献出时间、付出努力,承担相应的财务的、精神的和社会的风险,并获得金钱的回报、个人的满足和独立自主。——互动百科
两者都给出了明确的创业定义,这里想着重想强调一下创业的目的:物质目的和精神目的,现代社会唯金主义人群不乏少数,提到创业自然而然想到“赚钱”,其实创业的目的不仅是“收入大于成本”,还有精神丰收。按照百度+互动百科的说法,最终极的创业应该是个人物质精神、社会物质精神四丰收。
当然,不是人人创业都追求“四丰收”,完全可以只追求个人金钱丰收,或是追求其中的任何一项或几项,但要注意——千万不要损害未选的,比如为个人赚钱损害社会或他人利益。
2怎么才算创业成功
创业的成功(这里定义为达到创业初级制定目标)一定是依赖于合理的目标+个人的努力+合适的方法+良好的运气+主动把握机遇,各个条件没有顺序也没有主次,但这五点缺一不可,相互有机结合才有可能成功。
成功的创业往往在最初一两年甚至五年或更长时间收入会低于预想,亏本很正常,只要目标坚定,不断改善,因为独立自主,上升空间会很大。
当然每个人的想法、定位都不一样。你想创业,那你想创个什么规模的事业什么才算得上事业有所成
如果你认为腾讯、阿里巴巴这样的才算“业”,那么我建议你最好别轻易去“创业”,即使你比马云、马化腾等人更聪明,也未必能成就这样的业,因为机遇不同。
如果你只是想比一般打工的更强一些、更自由一些,收入比打工要高一些,能养家糊口同时还有点闲钱,那你随时都可以去创业!
3创业的方法、步骤都有哪些
每个人都有适合自己的路子,不能说通用,只能算是一点个人心得吧。
(1)必须建立一个网站,这是你在网络上的“门面”,可以展示你的作品,也可以让别人通过这个网站找到你。
无论是否程序员创业,都应该有个网站。网站的传统主要目的是为了宣传,现代网站还可能有互动、管理、实验等多种功能。需要注意的是,无论哪种功能,当没有积累到一定程度,即不知道网站上放什么内容的时候,不要建网站,更不要抄袭别人的内容,切忌打肿脸充胖子,金玉其外败絮其中。和字如其人一样,网站也反映企业的 文化 底蕴;
(2)早期,猪八戒之类威客,作为你早期练手和积累人气还是可以的;
(3)真没客户找的话,可以开个淘宝店,接软件定制(我认识有几个网友都是这样干,并且干得还不错);
(4)也可以主动出击,去一些外包网站寻找客户,比如GAF、Elance、GetACoder、ScriptLance等站上有很多外包的信息,大家可以自己上去看看;
(5)最好的方式还是自己定位一个产品,用心把这个产品做好,然后努力去推广,推广好了的话,以后卖注册码、卖授权就够了。
4产品该如何定位,什么样的软件才能写
这个问题,有很多网友都问过我,他们总在担心,现在几乎各种软件都有现成的了,都被占领了市场,这时候自己该写什么软件呢
我觉得,首先该问问自己,你的软件、产品,需要达到什么样的程度、占有多少市场才行要超越那些成熟的软件吗那是很难的,不仅仅是技术层面,还有用户的积累这都是很难超越的。
这些成熟的产品,都是通用的,适合大多数用户,但总是有部分用户的需求是不同的。那么你的产品,未必要超越谁,只要能满足这些不同需求的用户、能做出一些特色功能,那你就能占有一定市场、拥有一定用户。
5创业应该注意的一些事情
注意积累、项目的成功和失败都要积累,每个项目都要 总结 ,为下一个更大项目更省时省力地完成做准备。
无论是守株待兔或主动出击,首先不应接违法、违背道德的单子,其次无论单子大小,都应该当做一个正规项目完成,即(按具体情况)需求分析、签订合同、设计、编码、测试、写文档等步骤逐一完成。比如完整项目一共有十五个步骤(有国标),小单子可以选关键五个步骤,大一点的单子相应增加。若不会,可以自学软件工程师、IT项目管理的相关课程。
这里想着重强调一下“烂笔头”的重要性。虽然设计、编码、测试、文档等都可以用计算机完成,但是往往不及白纸黑字的效率。因为其一:计算机屏幕容纳的信息量不及纸张,即屏幕大小往往会限制你的思路。其二:大脑思考的速度快于手写速度,而手写速度要快于敲键盘、点鼠标的速度,也就是说,手写更能跟上思考速度。
想要做大做强,不可能一直单干。这时就需要组团了,就需要学习新知识,变为新身份、进入新领域。而主动出击一般需要一个团队。
所谓创业难守业更难,何来守业——创新。好的产品、代表作,或是好的服务固然需要,但是如何保持这时要不断创新,或者说是一如既往的创新,围绕主要产品不断改进,不断与时俱进,不断挖掘潜能,不断比竞争对手稍好一点。
起初仅是学技术的阶段,无需注重写什么软件,哪怕是一无所用的工具,或是已被写烂的“通讯录”、“记事本”、“快捷启动”,都可以,着重积累。附带一句,无论学什么语言也无所谓。
多使用其他成品软件,善于发现优缺点,归类整理,着重对其他软件的缺点思考,并结合实际用户的需求,用户的不方便就是商机。
6经典案例
(1)外贸公司边打工边创业
一位在外贸公司打工的网友,因为自己工作上经常要做一些重复的工作,就自己编写了一个工具软件,自动完成这些工作,提高工作效率。一开始在同事之间使用,经过同事们提意见之后逐步完善、增加功能,成为了一款功能比较完善、 *** 作比较方便的软件。然后他想,既然自己公司工作上用得上,其他同类公司应该也有需求吧就开始在附近的同类公司里推广、销售这款软件,慢慢的积累了一定的客户,这名网友就辞职了,专门销售软件,收入颇丰。
(2)小网管成立软件公司
一位在网吧工作的网管,平常工作比较轻松,很多时间自己 *** 作电脑、学习编程,偶尔到网络上接点小软件定制,赚点外快。越做自己技术越好、客户也积累越多,最后辞职,自己在家接软件定制,后来自己做不过来就成立公司,专做外包。
(3)发现真空市场的创业历程
某网友,一直都想创业,但苦于没找到适合的项目,无从开始。一次偶然的机会,在一个IT交流群里,另一个网友发给他一个软件(单机版),问是否可以做,当然可以做,一个简单的单机版办公软件嘛,这有何难但是这个网友并不想长期做外包,于是去调查使用这个软件的行业,发现这一行业居然还处于信息化真空状态。世面上基本上没有一套该行业的管理系统。
之后去 拜访 网络上的那位朋友,联系系统的需求方,是政府部门里的人。开始调研这套系统的需求,发现需要做的不仅仅是一个单机版,是一套基于广域网的协同办公系统。开始谈价格,价格分为研发费用,安装费用,以及维护费用。仔细评估下来,客户给的研发费用实在是太少。价格陷入僵局,为了能拿下这套系统,为了占据这个行业,这名网友决定自己垫资进去,开发出这套系统。
不管怎样,开始着手做吧,不为别的,只为梦想!开始组建团队,租场地,买设备。一个月后,经过大家的努力,终于把Demo开发出来了,开始与客户一起到各政府部门、各个企业去演示。效果还挺不错,客户反馈说,很多企业需要安装。
这就表明,最初垫资进去开发是正确的,安装的企业一多,自然就开始盈利了。创业的第一步算是成功了。
以上就是关于从程序员到项目经理(17):你不是一个人在战斗--思维一换天地宽全部的内容,包括:从程序员到项目经理(17):你不是一个人在战斗--思维一换天地宽、如果,我想当一名程序员,如何从零开始、我想转行做程序员,现在应该怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)