- 浏览: 18640 次
最新评论
程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术。程序员职业生涯发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员。
绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业去当老板,也有部分人转行了,当老板的人毕竟是少数,转行的人都不在这行做了,自然没什么好说的了。一般来说,程序员的发展基本上都会经历这么几条路径。程序员-系统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO。
当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而最终做到CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO。
也就是说,许多的程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答案,因为每个人的性格不一样,际遇也不一样,就像你从小希望当贪官,可是命运却偏偏让你做了一个程序员。所以应该根据你的兴趣、性格与际遇选择一条道路,比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以选择向项目经理方向发展。
实际上很多时候,有些公司并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是由一个人承担。在外包公司里,通常会有项目经理和系统分析员(也可能是技术经理)。在一些非IT公司里,可能会是部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让正在徘徊的程序员有一个大致的了解。
项目经理是项目的直接负责人,这个角色相当于一个中间接口,不管是团队成员还是需求方(客户),或者是上级领导,有事都直接找他,所以这个职位着重于管理与沟通。一般来说,项目经理的工作重点在同客户沟通需求、项目进度的把控、团队的沟通方面,有些公司也会需要项目经理承担团队建设的工作,不过貌似很多国内公司都忽略了团队建设这个工作了。对于项目经理来说,重点会要求沟通能力、协调能力、危机把控能力、执行力、团队管理能力,着重于沟通、管理与计划。当然也有些公司还要求项目经历要参与招标谈判,这就要求项目经理有一定的商务谈判能力。
技术经理有时候也可能叫系统分析员,一些小公司可能会整个部门有一个技术经理。技术经理承担的角色主要是系统分析、架构搭建、系统构建、代码走查等工作,如果说项目经理是总统,那么技术经理就是总理。当然不是所有公司都是这样的,有些公司项目经理是不管技术团队的,只做需求、进度和同客户沟通,那么这个时候的项目经理就好像工厂里的跟单人员了,这种情况在外包公司比较多。对于技术经理来说,着重于技术方面,你需要知道某种功能用哪些技术合适,需要知道某项功能需要多长的开发时间等。同时,技术经理也应该承担提高团队整体技术水平的工作。
产品经理这个职位一般在有自己产品(不管是软件还是网站产品)的公司比较常见,产品经理主要会负责产品的设计、产品的改良等工作。需要注意的是,产品设计与设计师是两个不一样的工作,产品设计主要会从用户体验、业务需要等层面去设计产品,而设计师更多是从用户的视觉上去做。产品经理应该是最懂业务的人,比如说你在设计一个微博的产品,就要求你对微博这个东西非常熟悉,从用户习惯、用户体验、公司的发展战略上去设计这个产品,还要对比同类产品会有什么优势等等。
不管是项目经理还是技术经理与产品经理,都要求要熟悉业务,业务是需求的来源,没有不谈业务的技术,所以不管你从哪个方向发展,都要求对业务熟悉。产品经理要求对业务最熟悉,项目经理次之,技术经理排最后。对于程序员来说,刚开始工作的前几年可以埋头扎到技术里面,一般这个时间在2-3年的时间,然后就应该多关注业务了。这个业务不一定是指某个具体的业务,因为具体的业务的范围太少,而且也需要机遇。
我见过许多的程序员,他们是做Web开发的,但对互联网很不熟悉,对于互联网流行的趋势基本上不闻不问。不知道现在大家都在使用微博,也不知道SNS,也可能从不使用网银。我觉得这样很不好,程序员应该多多去关注互联网的发展,多多去玩一些新的网站。
程序员的未来在何处
程序员未来只有两条出路,这是中华软协大陆合作委员会副主委,中华软协共享平台协会会长,台湾讯光科技董事长,微软.NET开发平台专家与特约讲师,从事软件工程技术研究达20年之久的高志明的观点,有那两条呢?
简述如下:
“程序员转型的两个路线:朝向研发和知识专业化。”
高先生说:“朝向研发,可以做控件,架构师设计控件,程序员来进行实现。大家的目的要想把编程的代码减少,就要进行控件化。控件化的概念就是品质和生产力,一开始都是最差的,当你提升起来的时候,他将超过那些从第一行写到最后一行的“编程王子”。在经过一些项目之后,这个品质是纯代码所无法比拟的。”
高先生说:“程序员如果始终只知道编程,而不去深入理解客户的需求,那结果做出来的东西永远不能符合用户的要求。程序员应该多去了解产业知识,这样才能变得更有价值,形成第二专业知识加编程的能力结构。”
高先生说:“程序员在一定程度上也会被取代。今天的程序员是存在的,但是他们绝对不是用来写application的,未来将会由架构师来产生 Application。应用80/20法则,未来80%的工作将会由架构师来设计完成,程序员来完成剩下的20%工作。具体做什么呢?程序员主要来完成客户的一些个性化定制,比如软件外观颜色的选择,一些特殊的属性等等。所以程序员还是有存在的价值,但他的工作是比较简单的。”
看到以上的说法感觉心头披上一层阴影,不过整体来说软件行业的前途还大好的。那就是看自己如何规划和去拼搏了。
程序员的未来在何处远不是一个人说了就算的。
下面也是收集的一些说法:
出路一:向IT培训师转型
分析:IT企业在招聘新人后,一般都须经过培训才能上岗,这个培训有时是在岗位上进行的,由富有实践经验的“老人”负责。年轻人想要进入IT行业,必须接受这样的专业培训。如今IT培训市场蛋糕相当大,利润空间可观,行业发展前景看好。根据国际数据公司(IDC)统计数据显示,2004年中国IT培训市场共实现销售额24.4亿元,相比2003年增长了22.1%,2005年市场前景发展更为可观。Smith无论是在IT公司内部转型担任培训工作,还是到 IT培训机构担任教师,都应该有发展空间。这样的工作不会有太大压力,且比较稳定,对年龄也没什么要求。更何况,这还没有脱离Smith所喜欢的IT行业。
优势:在这个行业工作了8年,拥有丰富编程、项目经验,曾参与过许多成功案例,这都是Smith的优势。而8年积攒的行业人脉关系,还可以帮助他发展企业客户,顺便担任市场拓展工作。
挑战:Smith在过去8年中一直埋头苦干,只是在公司培训新人时担任过培训工作,缺少培训工作经验。如果要向培训师转型,Smith需要接受一些专业训练,提高担任培训师的能力。
出路二:向IT营销转型
分析:IT与其它行业不同,由于技术性较强,营销人员一般也须有较强的技术背景,且最好有着丰富经验。互联网公司、
电子商务公司、软件公司目前都需要有技术背景的营销人员;另外,电子商务的再度火爆,使得传统企业开始重视电子商务营销,也需要有技术背景的营销人员。这类工作薪水不低,加上提成应该可以拿到高于程序员的薪水,同时也比较稳定。
优势:深厚的技术背景仍然是Smith的核心竞争力,在8年的从业经历中,Smith广泛涉猎了各种编程软件和工具,对IT行业也有相对深入的了解,这些都为他转向营销提供了平台。
挑战:Smith过去的工作主要是跟机器打交道,而营销工作恰恰需要跟人打交道,这对Smith来说是最大的挑战,要求他彻底改变工作方式,加强沟通能力与人际交往能力;此外,营销工作会面临销售指标的压力,这些问题都是Smith转型前必须深入考虑的。
出路三:向项目管理努力
分析:如果说前面两条出路转型的成分多,那么项目管理可以说是Smith更为便捷的发展之路。目前,软件项目经理是人才市场上炙手可热的人才,有丰富经验、外语好的软件项目经理是抢手的香饽饽,供不应求,薪水自然也是水涨船高。在上海市劳动部门新发布的2005年软件行业薪资调查中,项目主管的薪水是同层次主管中最高的,年薪高位数达到211011元,平均年薪达109414元。最重要的是,一个优秀的项目经理可以在这个岗位上长久工作下去,并且有向高层进一步提升的可能。
从职位来看也不过下面一些了,不知道能算的上是出路么
初级程序员。当你做完一个项目的时候,你会了解这个项目的整个流程,此时可以在简历中填写中级程序员的角色,把很多中级程序员做的事情写到你的履历里(前提是你要了解这些),跳槽的时候,你的目标自然就是中级程序员,而招聘公司看到你的情况也会觉得合适。
中级程序员。你需要在项目中了解高级程序员的工作范围,并不要求你全部掌握,但需要你能表达出来,这个很重要。比如后台的设计模式、软件架构、接口设计等,把这些写到你的履历中,给自己定位成高级程序员,自然的,高级程序员的职位会找到你。
高级程序员。你所需要了解的就不仅仅是程序设计,而是整个项目的运作和管理流程。包括项目管理、系统架构(软硬件)、系统集成等,整个环节不一定都要会,但需要知道是什么,比如,什么是交换机,什么是硬件负载均衡设备,什么是反向代理,什么是缓存服务器,什么是WEB服务器,什么是集群、负载均衡、分布式、数据库优化、大数据存储、高并发访问等等,都是你需要了解的,面试的时候能表达出来,那么你就成功了。同样的把这些写到你的履历中,给自己定位架构师或项目经理,更新简历后,猎头会来找你。
系统架构师。既然选择了架构师的角色,那么肯定是向技术方向发展了。技术总监、研发总监甚至CTO就是你的目标。想知道技术总监、CTO都在做什么吗,看看丁磊在做什么,你就要去模仿去做。想成为一个角色人物,首先要从身体力行上模仿的像这个角色,时间长了那么你就是这样的人。技术总监需要负责整个公司的技术部运作,包括对人员的管理、绩效考核、各语言组之间的协调、各项目间的协调,各部门间的协调,除此之外,你还需要考虑所运营的项目如何发展的更好,网站如何才能更加优化,产品如何能更上一个层次,公司的技术发展如何规划,各种方案如何快速的编写和实施,如何与老板打交道等,都是你需要掌握的。
项目经理。在中国,项目经理分两种,
一种是TEAM LEADER的角色,需要很强的技术;
一种是负责招标、流程控制的偏商务角色,要懂技术。
发展到这个层次的,我想应该不用我来告诉他们出路在哪里了,这样的人一般都有自己的规划,但凡事都有例外,如果没有规划或发展迷茫的,TEAM LEADER角色可以重点把项目管理、人力资源、系统架构等环节再强化一下,紧跟当前发展形势学习新知识;偏商务角色的,可以考虑往总经理、CIO、 CEO等方向努力,到这个层次的,需要的不仅仅是知识,更多的是一种理念和个人魅力。
程序员的出路,其实并不难寻找,低中高各等级且听我来分析
从我做小程序员开始,就从未间断的在论坛看到有人在问程序员的出路在哪里,其实我很能理解这些人的想法,在行业做了几年,有些感想跟大家随便聊聊。
俗话说,365行,行行出状元,此话也适用于IT行业,尤其是程序员。
当你迷茫找不到出路,又想快速成长和提高的时候,有两种方案可以供你参考:
1、努力成为你工作环境中最优秀的人(技术最好的人);
2、跳槽,去另外一家公司做比你能力要高的工作。
针对工作环境的不同,分为大环境和小环境(人多和人少):
1、小环境,寻找技术最好的人,努力不断向他接近,当你通过努力觉得超过他的时候,我相信你就不会再来问“出路在哪里”的问题了。
2、大环境,人多优秀的人也多,想短时间超越所有人是有相当难度的,能与每个优秀人都交流的概率低,所以你可以选择跳槽。
跳槽,在我看来是程序员成功的必经之路。跳槽是有技巧的,同时也需要一定的运气,如果想跳槽就要果断。当你觉得不如意时,当你觉得没有出路时,当你觉得待遇不满意时,当你觉得成长不够快时。。。都可以考虑跳槽。
跳槽有利有弊,对企业来说,跳槽是不好的;对于打工者来说,跳槽是很完美的。企业培养一个程序员不容易,辛苦的带起来一个人,熟悉了业务,掌握了技术,这时候走人,损失最大的当然是企业,花时间培养人和熟悉业务也是需要成本的。对程序员来说,跳槽几乎是利大于弊,首先待遇上肯定立竿见影的体现,如果没体现出来那就是跳的失败,除非有其他想法和目标。
不要误会我的意图,跳槽对于技术人员来说并不是坏事:
1、一般的IT公司都有自己的常用的模式,该模式经过一个项目之后,就可以基本掌握,相关覆盖的知识、架构等大概也可以了解,此时可以换个环境寻找更高的发展;
2、跳槽相当于变向的升职,这个可以从你的简历中体现出来。
假如你是一个初级程序员。当你做完一个项目的时候,你会了解这个项目的整个流程,此时可以在简历中填写中级程序员的角色,把很多中级程序员做的事情写到你的履历里(前提是你要了解这些),跳槽的时候,你的目标自然就是中级程序员,而招聘公司看到你的情况也会觉得合适。
假如你是一个中级程序员。你需要在项目中了解高级程序员的工作范围,并不要求你全部掌握,但需要你能表达出来,这个很重要。比如后台的设计模式、软件架构、接口设计等,把这些写到你的履历中,给自己定位成高级程序员,自然的,高级程序员的职位会找到你。
假如你是一个高级程序员。你所需要了解的就不仅仅是程序设计,而是整个项目的运作和管理流程。包括项目管理、系统架构(软硬件)、系统集成等,整个环节不一定都要会,但需要知道是什么,比如,什么是交换机,什么是硬件负载均衡设备,什么是反向代理,什么是缓存服务器,什么是WEB服务器,什么是集群、负载均衡、分布式、数据库优化、大数据存储、高并发访问等等,都是你需要了解的,面试的时候能表达出来,那么你就成功了。同样的把这些写到你的履历中,给自己定位架构师或项目经理,更新简历后,猎头会来找你。
假如你是系统架构师。既然选择了架构师的角色,那么肯定是向技术方向发展了。技术总监、研发总监甚至CTO就是你的目标。想知道技术总监、CTO都在做什么吗,看看丁磊在做什么,你就要去模仿去做。想成为一个角色人物,首先要从身体力行上模仿的像这个角色,时间长了那么你就是这样的人。技术总监需要负责整个公司的技术部运作,包括对人员的管理、绩效考核、各语言组之间的协调、各项目间的协调,各部门间的协调,除此之外,你还需要考虑所运营的项目如何发展的更好,网站如何才能更加优化,产品如何能更上一个层次,公司的技术发展如何规划,各种方案如何快速的编写和实施,如何与老板打交道等,都是你需要掌握的。
假如你是项目经理。在中国,项目经理分两种,一种是TEAM LEADER的角色,需要很强的技术;一种是负责招标、流程控制的偏商务角色,要懂技术。发展到这个层次的,我想应该不用我来告诉他们出路在哪里了,这样的人一般都有自己的规划,但凡事都有例外,如果没有规划或发展迷茫的,TEAM LEADER角色可以重点把项目管理、人力资源、系统架构等环节再强化一下,紧跟当前发展形势学习新知识;偏商务角色的,可以考虑往总经理、CIO、CEO等方向努力,到这个层次的,需要的不仅仅是知识,更多的是一种理念和个人魅力。
大概聊了聊上述这些,我想每个层次的人可以大概了解自己该做什么了。一定要有计划、有目标高效的做事情,有效的管理分配好自己的时间,只有这样你才可以成为一个优秀的人才。不要总让别人告诉你该做什么,而是自己不断推动手里的任务去更好的完成,处处体现出“我做的东西就比别人做的好”的信念,那我想,成功离你就不远了。
最近看了很多关于《程序员职业规划》,《再谈国内程序员做不到三十五岁!》之类的文章,发还是有很多人对于“程序员发展方向”感到迷茫。
据我目前了解的情况来看,大致可以分为四类:
1.技术+技术(深入阶段)
这算是一条纯技术路线,具体又可以分3个方向:
技术(2年以上编程经验)+技术(软件测试,或系统分析师,或系统架构师)
有软件开发的工作经验,再加软件测试,比刚开始就进入软件测试行业的人要更具竞争优势。软件测试工作经验越多越好,可以干到退休,不用担心年龄问题。
如果选择“系统分析师,系统架构师”,则首先要打好扎实的“理论基础”(可以通过考证书,比如参加软考),以保证自己“后劲力十足”,这样等有了4,5年的工作经验后,才有可能能冲上这个高端领域。平时工作中要不断的锻炼自己的“发散思维”,培养善于发现业务需求的“眼光”。
2.技术+管理 :比如 项目经理。
像雷军说的那样:“程序员象木工一样,熟能生巧。程序员必须写足够代码量(8万行以上)的程序,才会有感觉,这是一个苦力活,没有任何捷径可走。”项目经理大多是从“优秀”的程序员里挑选出来,想走这条路,平时就要疯狂的编码,迅速累积丰富的编程经验,然后再补充一些管理方面的知识。(本人打算走这条路,呵呵)
3.技术+销售:比如 技术销售工程师,技术支持工程师。
这类工作要有一定的技术背景(入门级也可以),具备较好的语言表达,沟通能力。工作比较轻松,月薪待遇主要看个人销售业绩等,个人收入差别可能比较大。
4.当培训老师
如果你“乐于分享”工作经验,传授知识,或者觉得自己年龄比较大,精力不够充沛,且往上升又比较困难的话,可以选择去培训机构当老师,就目前而言,当老师工作轻松,待遇也不错。
5.创业
程序员创业除了需要有商业头脑外,更需要具有较高的“胆商”(人有5商,包括智商情商),即有没有胆量去做别人不敢做的事情(抓住商机)。
一位软件工程师的7年总结:借此导航自己人生
第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”
其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!
2、一定要确定自己的发展方向,并为此目的制定可行的计划。
不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过 你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先 在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。
3、软件开发团队中,技术不是万能的,但没有技术是万万不能的!
在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在MM比较多的团队中。在软件项目团队 中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤 陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非 技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。
4、详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用 将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。5、书籍是人类进步的阶梯,对软件开发人员尤其如此。
书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些 家伙出的书,100%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技 能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。
6、不要仅局限于对某项 技术的表面使用上,哪怕你只是偶尔用一、二次。
“对任何事物不究就里”是任何行业的工程师所不应该具备的素质。开发Windows应用程序,看看 Windows程序的设计、加载、执行原理,分析一下PE文件格式,试试用SDK开发从头开发一个Windows应用程序;用VC++、
Delphi、Java、.Net开发应用程序,花时间去研究一下MFC、VCL、J2EE、.Net它们框架设计或者源码;除了会用J2EE、 JBoss、Spring、Hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。 试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!
7、在一种语言上编程,但别为其束缚了思想。
“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由, 所以也没有哪门语言是“包治百病”的“灵丹妙药”。编程语言对开发人员解决具体问题的思路和方式的影响与束缚的例子俯拾皆是。
我的经验是:用面对对象工具开发某些关键模块时,为什么不可以借鉴C、C51、汇编的模块化封装方式?用传统的桌面开发工具(目前主要有VC++、Delphi) 进行系统体统结构设计时,为什么不可以参考来自Java社区的IoC、AOP设计思想,甚至借鉴像Spring、Hibernate、JBoss等等优秀 的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时,为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式?为什么一切都必须 以个人、团队在当然开发语言上的传统或者经验来解决问题???“他山之石、可以攻玉”。
8、养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。
众所周知,对软件开发人员而言,有、无经验的一个显著区别是:无经验 者完成任何任务时都从头开始,而有经验者往往通过重组自己的可复用模块、类库来解决问题(其实这个结论不应该被局限在软件开发领域、可以延伸到很多方 面)。这并不是说,所有可复用的东西都必须自己实现,别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没 有知识产权、版权等问题,关键是自己实现后能真正掌握这个知识点,拥有这个技能。
9、理论与实践并重,内外双修。
工程师的内涵是:以工 程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发 语言、应用语言工具解决工作中的具体问题、完成目标任务是软件工程师的主要工作,但从软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工 作。学习、掌握软件产品开发理论知识、软件开发方法论,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的软件产品研发问题,才是真正的软 件工程师的工作。站在成熟理论与可靠方法论的高度思考、分析、解决问题,并在具体实践中验证和修正这些思想与方式,最终形成自己的理论体系和实用方法论。
10、心态有多开放,视野就有多开阔。
不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。请及时发布自己的研究成果:开发的 产品、有创意的设计或代码,公布出来让大家交流或者使用,你的成果才有进化和升华的机会。想想自己2000年间开发的那些Windows系统工具,5、6 年之后的今天,还是那个样子,今天流行的好多Windows系统工具都比自己的晚,但进化得很好,且有那么多用户在使用。并且,不要保守自己的技术和思 想,尽可能地与人交流与分享,或者传授给开发团队的成员。“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大 家都懂,但有多少人真正能做到呢?
11、尽量参加开源项目的开发、或者与朋友共同研制一些自己的产品,千万不要因为没有钱赚而不做网络早已不再只是“虚拟世界”,网上有很多的开源项目、合作开发项目、外包项目,这都是涉猎工作以外的知识的绝好机会,并且能够结识更广的人缘。不要因为工 作是做ERP,就不去学习和了解嵌入式、实时、通信、网络等方面的技术,反过来也是一样。如果当别人拿着合同找你合作,你却这也不会,那也不熟时,你将后 悔莫及。
12、书到用时方恨少,不要将自己的知识面仅仅局限于技术方面。
诺贝尔经济学奖得主西蒙教授的研究结果表明:“对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。
可见,掌握一门陌生的学问远远没有想象的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自己的影响圈、尽量扩大自己的关注圈。财务、经济、税务、管理等等知识,有空花时间看看,韬光养晦、未雨绸缪。
13、本文的总结与反思:
A:不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软件开发知识的建议,做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜任工作即止。
B:提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。软件专业知识的很多方法和原理,可以很容易地延伸、应用到生活的其它方面。
C:在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质,尤其是那些目标不在技术方面的朋友。
来源:草根网(www.20ju.com) - 互联网界的读者文摘
一个老程序员的感悟:做技术二十多年,突然明白的道理
技术已经有二十多年,每天忙忙碌碌,开始还对自己的职业生涯有些思考,时间一长,习惯了,再也没想过。前几天在办公楼上认识了一个朋友,他在某知名IT招聘网站做专业职业顾问,聊天的时候,他告诉我的这些话,让我顿时清醒了许多,现在我决定给自己这么多年的工作方式和思维模式做个改变,应该还不算晚。
不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。
一。不要以为技术可以换来稳定的生活和高的薪水待遇,更不要认为那些从事市场开发,跑腿的人没有前途。
中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一.
比之于我们,那些从事售前和市场开发的朋友,却有比我们多的多的工作之外的时间,甚至他们的工作有时候是可以兼顾生活的,坦率的说更有发财和发展的机会,只要他们跟我们一样勤奋。
二。不要认为如果做到技术最强,就可以成为100%受尊重的人。
如果你幸运的能够听到市场人员的谈话,或是领导们的谈话,你会隐约觉得他们都在把技术人员当作编码的机器来看,你的价值并没有你想象的那么重要。而在你所在的团队内部,你可能正在为一个技术问题的讨论再跟同事搞内耗,因为他不服你,你也不服他,你们都认为自己的对,其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好,比对方强。(在一个项目开发中,没有人愿意长期听别人的,总想换个位置领导别人。)
三。更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。
如果你那样认为,真的是大错特错了,你可以做个调查在非技术人群中,没有几个人知道C#与JAVA的,更谈不上来欣赏你的技术是好还是不好。一句话,技术仅仅是一个工具,善于运用这个工具为别人干活的人,却往往不太擅长用这个工具来为自己创业,因为这是两个概念,训练的技能也是完全不同的。
创业的时候,你的人际关系,你处理人际关系的能力,你对社会潜规则的认识,还有你明白不明白别人的心,你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等,这么多的问题都是客观存在着的。
[总之]
技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢它,但最好不要一辈子靠它生存。
原文转自:http://blog.csdn.net/jiangmeiling9921/article/details/5917025
绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业去当老板,也有部分人转行了,当老板的人毕竟是少数,转行的人都不在这行做了,自然没什么好说的了。一般来说,程序员的发展基本上都会经历这么几条路径。程序员-系统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO。
当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而最终做到CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO。
也就是说,许多的程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答案,因为每个人的性格不一样,际遇也不一样,就像你从小希望当贪官,可是命运却偏偏让你做了一个程序员。所以应该根据你的兴趣、性格与际遇选择一条道路,比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以选择向项目经理方向发展。
实际上很多时候,有些公司并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是由一个人承担。在外包公司里,通常会有项目经理和系统分析员(也可能是技术经理)。在一些非IT公司里,可能会是部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让正在徘徊的程序员有一个大致的了解。
项目经理是项目的直接负责人,这个角色相当于一个中间接口,不管是团队成员还是需求方(客户),或者是上级领导,有事都直接找他,所以这个职位着重于管理与沟通。一般来说,项目经理的工作重点在同客户沟通需求、项目进度的把控、团队的沟通方面,有些公司也会需要项目经理承担团队建设的工作,不过貌似很多国内公司都忽略了团队建设这个工作了。对于项目经理来说,重点会要求沟通能力、协调能力、危机把控能力、执行力、团队管理能力,着重于沟通、管理与计划。当然也有些公司还要求项目经历要参与招标谈判,这就要求项目经理有一定的商务谈判能力。
技术经理有时候也可能叫系统分析员,一些小公司可能会整个部门有一个技术经理。技术经理承担的角色主要是系统分析、架构搭建、系统构建、代码走查等工作,如果说项目经理是总统,那么技术经理就是总理。当然不是所有公司都是这样的,有些公司项目经理是不管技术团队的,只做需求、进度和同客户沟通,那么这个时候的项目经理就好像工厂里的跟单人员了,这种情况在外包公司比较多。对于技术经理来说,着重于技术方面,你需要知道某种功能用哪些技术合适,需要知道某项功能需要多长的开发时间等。同时,技术经理也应该承担提高团队整体技术水平的工作。
产品经理这个职位一般在有自己产品(不管是软件还是网站产品)的公司比较常见,产品经理主要会负责产品的设计、产品的改良等工作。需要注意的是,产品设计与设计师是两个不一样的工作,产品设计主要会从用户体验、业务需要等层面去设计产品,而设计师更多是从用户的视觉上去做。产品经理应该是最懂业务的人,比如说你在设计一个微博的产品,就要求你对微博这个东西非常熟悉,从用户习惯、用户体验、公司的发展战略上去设计这个产品,还要对比同类产品会有什么优势等等。
不管是项目经理还是技术经理与产品经理,都要求要熟悉业务,业务是需求的来源,没有不谈业务的技术,所以不管你从哪个方向发展,都要求对业务熟悉。产品经理要求对业务最熟悉,项目经理次之,技术经理排最后。对于程序员来说,刚开始工作的前几年可以埋头扎到技术里面,一般这个时间在2-3年的时间,然后就应该多关注业务了。这个业务不一定是指某个具体的业务,因为具体的业务的范围太少,而且也需要机遇。
我见过许多的程序员,他们是做Web开发的,但对互联网很不熟悉,对于互联网流行的趋势基本上不闻不问。不知道现在大家都在使用微博,也不知道SNS,也可能从不使用网银。我觉得这样很不好,程序员应该多多去关注互联网的发展,多多去玩一些新的网站。
程序员的未来在何处
程序员未来只有两条出路,这是中华软协大陆合作委员会副主委,中华软协共享平台协会会长,台湾讯光科技董事长,微软.NET开发平台专家与特约讲师,从事软件工程技术研究达20年之久的高志明的观点,有那两条呢?
简述如下:
“程序员转型的两个路线:朝向研发和知识专业化。”
高先生说:“朝向研发,可以做控件,架构师设计控件,程序员来进行实现。大家的目的要想把编程的代码减少,就要进行控件化。控件化的概念就是品质和生产力,一开始都是最差的,当你提升起来的时候,他将超过那些从第一行写到最后一行的“编程王子”。在经过一些项目之后,这个品质是纯代码所无法比拟的。”
高先生说:“程序员如果始终只知道编程,而不去深入理解客户的需求,那结果做出来的东西永远不能符合用户的要求。程序员应该多去了解产业知识,这样才能变得更有价值,形成第二专业知识加编程的能力结构。”
高先生说:“程序员在一定程度上也会被取代。今天的程序员是存在的,但是他们绝对不是用来写application的,未来将会由架构师来产生 Application。应用80/20法则,未来80%的工作将会由架构师来设计完成,程序员来完成剩下的20%工作。具体做什么呢?程序员主要来完成客户的一些个性化定制,比如软件外观颜色的选择,一些特殊的属性等等。所以程序员还是有存在的价值,但他的工作是比较简单的。”
看到以上的说法感觉心头披上一层阴影,不过整体来说软件行业的前途还大好的。那就是看自己如何规划和去拼搏了。
程序员的未来在何处远不是一个人说了就算的。
下面也是收集的一些说法:
出路一:向IT培训师转型
分析:IT企业在招聘新人后,一般都须经过培训才能上岗,这个培训有时是在岗位上进行的,由富有实践经验的“老人”负责。年轻人想要进入IT行业,必须接受这样的专业培训。如今IT培训市场蛋糕相当大,利润空间可观,行业发展前景看好。根据国际数据公司(IDC)统计数据显示,2004年中国IT培训市场共实现销售额24.4亿元,相比2003年增长了22.1%,2005年市场前景发展更为可观。Smith无论是在IT公司内部转型担任培训工作,还是到 IT培训机构担任教师,都应该有发展空间。这样的工作不会有太大压力,且比较稳定,对年龄也没什么要求。更何况,这还没有脱离Smith所喜欢的IT行业。
优势:在这个行业工作了8年,拥有丰富编程、项目经验,曾参与过许多成功案例,这都是Smith的优势。而8年积攒的行业人脉关系,还可以帮助他发展企业客户,顺便担任市场拓展工作。
挑战:Smith在过去8年中一直埋头苦干,只是在公司培训新人时担任过培训工作,缺少培训工作经验。如果要向培训师转型,Smith需要接受一些专业训练,提高担任培训师的能力。
出路二:向IT营销转型
分析:IT与其它行业不同,由于技术性较强,营销人员一般也须有较强的技术背景,且最好有着丰富经验。互联网公司、
电子商务公司、软件公司目前都需要有技术背景的营销人员;另外,电子商务的再度火爆,使得传统企业开始重视电子商务营销,也需要有技术背景的营销人员。这类工作薪水不低,加上提成应该可以拿到高于程序员的薪水,同时也比较稳定。
优势:深厚的技术背景仍然是Smith的核心竞争力,在8年的从业经历中,Smith广泛涉猎了各种编程软件和工具,对IT行业也有相对深入的了解,这些都为他转向营销提供了平台。
挑战:Smith过去的工作主要是跟机器打交道,而营销工作恰恰需要跟人打交道,这对Smith来说是最大的挑战,要求他彻底改变工作方式,加强沟通能力与人际交往能力;此外,营销工作会面临销售指标的压力,这些问题都是Smith转型前必须深入考虑的。
出路三:向项目管理努力
分析:如果说前面两条出路转型的成分多,那么项目管理可以说是Smith更为便捷的发展之路。目前,软件项目经理是人才市场上炙手可热的人才,有丰富经验、外语好的软件项目经理是抢手的香饽饽,供不应求,薪水自然也是水涨船高。在上海市劳动部门新发布的2005年软件行业薪资调查中,项目主管的薪水是同层次主管中最高的,年薪高位数达到211011元,平均年薪达109414元。最重要的是,一个优秀的项目经理可以在这个岗位上长久工作下去,并且有向高层进一步提升的可能。
从职位来看也不过下面一些了,不知道能算的上是出路么
初级程序员。当你做完一个项目的时候,你会了解这个项目的整个流程,此时可以在简历中填写中级程序员的角色,把很多中级程序员做的事情写到你的履历里(前提是你要了解这些),跳槽的时候,你的目标自然就是中级程序员,而招聘公司看到你的情况也会觉得合适。
中级程序员。你需要在项目中了解高级程序员的工作范围,并不要求你全部掌握,但需要你能表达出来,这个很重要。比如后台的设计模式、软件架构、接口设计等,把这些写到你的履历中,给自己定位成高级程序员,自然的,高级程序员的职位会找到你。
高级程序员。你所需要了解的就不仅仅是程序设计,而是整个项目的运作和管理流程。包括项目管理、系统架构(软硬件)、系统集成等,整个环节不一定都要会,但需要知道是什么,比如,什么是交换机,什么是硬件负载均衡设备,什么是反向代理,什么是缓存服务器,什么是WEB服务器,什么是集群、负载均衡、分布式、数据库优化、大数据存储、高并发访问等等,都是你需要了解的,面试的时候能表达出来,那么你就成功了。同样的把这些写到你的履历中,给自己定位架构师或项目经理,更新简历后,猎头会来找你。
系统架构师。既然选择了架构师的角色,那么肯定是向技术方向发展了。技术总监、研发总监甚至CTO就是你的目标。想知道技术总监、CTO都在做什么吗,看看丁磊在做什么,你就要去模仿去做。想成为一个角色人物,首先要从身体力行上模仿的像这个角色,时间长了那么你就是这样的人。技术总监需要负责整个公司的技术部运作,包括对人员的管理、绩效考核、各语言组之间的协调、各项目间的协调,各部门间的协调,除此之外,你还需要考虑所运营的项目如何发展的更好,网站如何才能更加优化,产品如何能更上一个层次,公司的技术发展如何规划,各种方案如何快速的编写和实施,如何与老板打交道等,都是你需要掌握的。
项目经理。在中国,项目经理分两种,
一种是TEAM LEADER的角色,需要很强的技术;
一种是负责招标、流程控制的偏商务角色,要懂技术。
发展到这个层次的,我想应该不用我来告诉他们出路在哪里了,这样的人一般都有自己的规划,但凡事都有例外,如果没有规划或发展迷茫的,TEAM LEADER角色可以重点把项目管理、人力资源、系统架构等环节再强化一下,紧跟当前发展形势学习新知识;偏商务角色的,可以考虑往总经理、CIO、 CEO等方向努力,到这个层次的,需要的不仅仅是知识,更多的是一种理念和个人魅力。
程序员的出路,其实并不难寻找,低中高各等级且听我来分析
从我做小程序员开始,就从未间断的在论坛看到有人在问程序员的出路在哪里,其实我很能理解这些人的想法,在行业做了几年,有些感想跟大家随便聊聊。
俗话说,365行,行行出状元,此话也适用于IT行业,尤其是程序员。
当你迷茫找不到出路,又想快速成长和提高的时候,有两种方案可以供你参考:
1、努力成为你工作环境中最优秀的人(技术最好的人);
2、跳槽,去另外一家公司做比你能力要高的工作。
针对工作环境的不同,分为大环境和小环境(人多和人少):
1、小环境,寻找技术最好的人,努力不断向他接近,当你通过努力觉得超过他的时候,我相信你就不会再来问“出路在哪里”的问题了。
2、大环境,人多优秀的人也多,想短时间超越所有人是有相当难度的,能与每个优秀人都交流的概率低,所以你可以选择跳槽。
跳槽,在我看来是程序员成功的必经之路。跳槽是有技巧的,同时也需要一定的运气,如果想跳槽就要果断。当你觉得不如意时,当你觉得没有出路时,当你觉得待遇不满意时,当你觉得成长不够快时。。。都可以考虑跳槽。
跳槽有利有弊,对企业来说,跳槽是不好的;对于打工者来说,跳槽是很完美的。企业培养一个程序员不容易,辛苦的带起来一个人,熟悉了业务,掌握了技术,这时候走人,损失最大的当然是企业,花时间培养人和熟悉业务也是需要成本的。对程序员来说,跳槽几乎是利大于弊,首先待遇上肯定立竿见影的体现,如果没体现出来那就是跳的失败,除非有其他想法和目标。
不要误会我的意图,跳槽对于技术人员来说并不是坏事:
1、一般的IT公司都有自己的常用的模式,该模式经过一个项目之后,就可以基本掌握,相关覆盖的知识、架构等大概也可以了解,此时可以换个环境寻找更高的发展;
2、跳槽相当于变向的升职,这个可以从你的简历中体现出来。
假如你是一个初级程序员。当你做完一个项目的时候,你会了解这个项目的整个流程,此时可以在简历中填写中级程序员的角色,把很多中级程序员做的事情写到你的履历里(前提是你要了解这些),跳槽的时候,你的目标自然就是中级程序员,而招聘公司看到你的情况也会觉得合适。
假如你是一个中级程序员。你需要在项目中了解高级程序员的工作范围,并不要求你全部掌握,但需要你能表达出来,这个很重要。比如后台的设计模式、软件架构、接口设计等,把这些写到你的履历中,给自己定位成高级程序员,自然的,高级程序员的职位会找到你。
假如你是一个高级程序员。你所需要了解的就不仅仅是程序设计,而是整个项目的运作和管理流程。包括项目管理、系统架构(软硬件)、系统集成等,整个环节不一定都要会,但需要知道是什么,比如,什么是交换机,什么是硬件负载均衡设备,什么是反向代理,什么是缓存服务器,什么是WEB服务器,什么是集群、负载均衡、分布式、数据库优化、大数据存储、高并发访问等等,都是你需要了解的,面试的时候能表达出来,那么你就成功了。同样的把这些写到你的履历中,给自己定位架构师或项目经理,更新简历后,猎头会来找你。
假如你是系统架构师。既然选择了架构师的角色,那么肯定是向技术方向发展了。技术总监、研发总监甚至CTO就是你的目标。想知道技术总监、CTO都在做什么吗,看看丁磊在做什么,你就要去模仿去做。想成为一个角色人物,首先要从身体力行上模仿的像这个角色,时间长了那么你就是这样的人。技术总监需要负责整个公司的技术部运作,包括对人员的管理、绩效考核、各语言组之间的协调、各项目间的协调,各部门间的协调,除此之外,你还需要考虑所运营的项目如何发展的更好,网站如何才能更加优化,产品如何能更上一个层次,公司的技术发展如何规划,各种方案如何快速的编写和实施,如何与老板打交道等,都是你需要掌握的。
假如你是项目经理。在中国,项目经理分两种,一种是TEAM LEADER的角色,需要很强的技术;一种是负责招标、流程控制的偏商务角色,要懂技术。发展到这个层次的,我想应该不用我来告诉他们出路在哪里了,这样的人一般都有自己的规划,但凡事都有例外,如果没有规划或发展迷茫的,TEAM LEADER角色可以重点把项目管理、人力资源、系统架构等环节再强化一下,紧跟当前发展形势学习新知识;偏商务角色的,可以考虑往总经理、CIO、CEO等方向努力,到这个层次的,需要的不仅仅是知识,更多的是一种理念和个人魅力。
大概聊了聊上述这些,我想每个层次的人可以大概了解自己该做什么了。一定要有计划、有目标高效的做事情,有效的管理分配好自己的时间,只有这样你才可以成为一个优秀的人才。不要总让别人告诉你该做什么,而是自己不断推动手里的任务去更好的完成,处处体现出“我做的东西就比别人做的好”的信念,那我想,成功离你就不远了。
最近看了很多关于《程序员职业规划》,《再谈国内程序员做不到三十五岁!》之类的文章,发还是有很多人对于“程序员发展方向”感到迷茫。
据我目前了解的情况来看,大致可以分为四类:
1.技术+技术(深入阶段)
这算是一条纯技术路线,具体又可以分3个方向:
技术(2年以上编程经验)+技术(软件测试,或系统分析师,或系统架构师)
有软件开发的工作经验,再加软件测试,比刚开始就进入软件测试行业的人要更具竞争优势。软件测试工作经验越多越好,可以干到退休,不用担心年龄问题。
如果选择“系统分析师,系统架构师”,则首先要打好扎实的“理论基础”(可以通过考证书,比如参加软考),以保证自己“后劲力十足”,这样等有了4,5年的工作经验后,才有可能能冲上这个高端领域。平时工作中要不断的锻炼自己的“发散思维”,培养善于发现业务需求的“眼光”。
2.技术+管理 :比如 项目经理。
像雷军说的那样:“程序员象木工一样,熟能生巧。程序员必须写足够代码量(8万行以上)的程序,才会有感觉,这是一个苦力活,没有任何捷径可走。”项目经理大多是从“优秀”的程序员里挑选出来,想走这条路,平时就要疯狂的编码,迅速累积丰富的编程经验,然后再补充一些管理方面的知识。(本人打算走这条路,呵呵)
3.技术+销售:比如 技术销售工程师,技术支持工程师。
这类工作要有一定的技术背景(入门级也可以),具备较好的语言表达,沟通能力。工作比较轻松,月薪待遇主要看个人销售业绩等,个人收入差别可能比较大。
4.当培训老师
如果你“乐于分享”工作经验,传授知识,或者觉得自己年龄比较大,精力不够充沛,且往上升又比较困难的话,可以选择去培训机构当老师,就目前而言,当老师工作轻松,待遇也不错。
5.创业
程序员创业除了需要有商业头脑外,更需要具有较高的“胆商”(人有5商,包括智商情商),即有没有胆量去做别人不敢做的事情(抓住商机)。
一位软件工程师的7年总结:借此导航自己人生
第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”
其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!
2、一定要确定自己的发展方向,并为此目的制定可行的计划。
不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过 你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先 在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。
3、软件开发团队中,技术不是万能的,但没有技术是万万不能的!
在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在MM比较多的团队中。在软件项目团队 中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤 陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非 技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。
4、详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用 将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。5、书籍是人类进步的阶梯,对软件开发人员尤其如此。
书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些 家伙出的书,100%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技 能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。
6、不要仅局限于对某项 技术的表面使用上,哪怕你只是偶尔用一、二次。
“对任何事物不究就里”是任何行业的工程师所不应该具备的素质。开发Windows应用程序,看看 Windows程序的设计、加载、执行原理,分析一下PE文件格式,试试用SDK开发从头开发一个Windows应用程序;用VC++、
Delphi、Java、.Net开发应用程序,花时间去研究一下MFC、VCL、J2EE、.Net它们框架设计或者源码;除了会用J2EE、 JBoss、Spring、Hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。 试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!
7、在一种语言上编程,但别为其束缚了思想。
“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由, 所以也没有哪门语言是“包治百病”的“灵丹妙药”。编程语言对开发人员解决具体问题的思路和方式的影响与束缚的例子俯拾皆是。
我的经验是:用面对对象工具开发某些关键模块时,为什么不可以借鉴C、C51、汇编的模块化封装方式?用传统的桌面开发工具(目前主要有VC++、Delphi) 进行系统体统结构设计时,为什么不可以参考来自Java社区的IoC、AOP设计思想,甚至借鉴像Spring、Hibernate、JBoss等等优秀 的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时,为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式?为什么一切都必须 以个人、团队在当然开发语言上的传统或者经验来解决问题???“他山之石、可以攻玉”。
8、养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。
众所周知,对软件开发人员而言,有、无经验的一个显著区别是:无经验 者完成任何任务时都从头开始,而有经验者往往通过重组自己的可复用模块、类库来解决问题(其实这个结论不应该被局限在软件开发领域、可以延伸到很多方 面)。这并不是说,所有可复用的东西都必须自己实现,别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没 有知识产权、版权等问题,关键是自己实现后能真正掌握这个知识点,拥有这个技能。
9、理论与实践并重,内外双修。
工程师的内涵是:以工 程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发 语言、应用语言工具解决工作中的具体问题、完成目标任务是软件工程师的主要工作,但从软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工 作。学习、掌握软件产品开发理论知识、软件开发方法论,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的软件产品研发问题,才是真正的软 件工程师的工作。站在成熟理论与可靠方法论的高度思考、分析、解决问题,并在具体实践中验证和修正这些思想与方式,最终形成自己的理论体系和实用方法论。
10、心态有多开放,视野就有多开阔。
不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。请及时发布自己的研究成果:开发的 产品、有创意的设计或代码,公布出来让大家交流或者使用,你的成果才有进化和升华的机会。想想自己2000年间开发的那些Windows系统工具,5、6 年之后的今天,还是那个样子,今天流行的好多Windows系统工具都比自己的晚,但进化得很好,且有那么多用户在使用。并且,不要保守自己的技术和思 想,尽可能地与人交流与分享,或者传授给开发团队的成员。“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大 家都懂,但有多少人真正能做到呢?
11、尽量参加开源项目的开发、或者与朋友共同研制一些自己的产品,千万不要因为没有钱赚而不做网络早已不再只是“虚拟世界”,网上有很多的开源项目、合作开发项目、外包项目,这都是涉猎工作以外的知识的绝好机会,并且能够结识更广的人缘。不要因为工 作是做ERP,就不去学习和了解嵌入式、实时、通信、网络等方面的技术,反过来也是一样。如果当别人拿着合同找你合作,你却这也不会,那也不熟时,你将后 悔莫及。
12、书到用时方恨少,不要将自己的知识面仅仅局限于技术方面。
诺贝尔经济学奖得主西蒙教授的研究结果表明:“对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。
可见,掌握一门陌生的学问远远没有想象的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自己的影响圈、尽量扩大自己的关注圈。财务、经济、税务、管理等等知识,有空花时间看看,韬光养晦、未雨绸缪。
13、本文的总结与反思:
A:不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软件开发知识的建议,做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜任工作即止。
B:提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。软件专业知识的很多方法和原理,可以很容易地延伸、应用到生活的其它方面。
C:在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质,尤其是那些目标不在技术方面的朋友。
来源:草根网(www.20ju.com) - 互联网界的读者文摘
一个老程序员的感悟:做技术二十多年,突然明白的道理
技术已经有二十多年,每天忙忙碌碌,开始还对自己的职业生涯有些思考,时间一长,习惯了,再也没想过。前几天在办公楼上认识了一个朋友,他在某知名IT招聘网站做专业职业顾问,聊天的时候,他告诉我的这些话,让我顿时清醒了许多,现在我决定给自己这么多年的工作方式和思维模式做个改变,应该还不算晚。
不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。
一。不要以为技术可以换来稳定的生活和高的薪水待遇,更不要认为那些从事市场开发,跑腿的人没有前途。
中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一.
比之于我们,那些从事售前和市场开发的朋友,却有比我们多的多的工作之外的时间,甚至他们的工作有时候是可以兼顾生活的,坦率的说更有发财和发展的机会,只要他们跟我们一样勤奋。
二。不要认为如果做到技术最强,就可以成为100%受尊重的人。
如果你幸运的能够听到市场人员的谈话,或是领导们的谈话,你会隐约觉得他们都在把技术人员当作编码的机器来看,你的价值并没有你想象的那么重要。而在你所在的团队内部,你可能正在为一个技术问题的讨论再跟同事搞内耗,因为他不服你,你也不服他,你们都认为自己的对,其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好,比对方强。(在一个项目开发中,没有人愿意长期听别人的,总想换个位置领导别人。)
三。更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。
如果你那样认为,真的是大错特错了,你可以做个调查在非技术人群中,没有几个人知道C#与JAVA的,更谈不上来欣赏你的技术是好还是不好。一句话,技术仅仅是一个工具,善于运用这个工具为别人干活的人,却往往不太擅长用这个工具来为自己创业,因为这是两个概念,训练的技能也是完全不同的。
创业的时候,你的人际关系,你处理人际关系的能力,你对社会潜规则的认识,还有你明白不明白别人的心,你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等,这么多的问题都是客观存在着的。
[总之]
技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢它,但最好不要一辈子靠它生存。
原文转自:http://blog.csdn.net/jiangmeiling9921/article/details/5917025
相关推荐
### 游戏程序员编程方向知识点解析 #### 一、游戏程序员学习方向概述 在游戏开发领域,游戏程序员扮演着至关重要的角色。他们不仅需要具备扎实的编程基础,还需要对特定的技术领域有深入的理解。根据提供的部分...
指明你的后面的职业生涯规划,为你职业发展道路上指引明灯
### 程序员如何规划职业发展方向 #### 引言 在信息技术(IT)领域,作为程序员,职业规划和发展路径的选择尤为重要。随着技术日新月异的变化和个人能力的不断提升,每位程序员都会面临多重选择。本文旨在从不同的...
### 程序员的职业发展方向解析 随着信息技术的迅速发展,程序员已经成为当今社会不可或缺的重要职业之一。对于初入行或已经在行业中工作的程序员来说,明确自己的职业发展方向是非常重要的。本文将结合给定的信息来...
【程序员考试考点指导 软考方向】 程序员考试,全称为全国计算机技术与软件专业技术资格(水平)考试,是针对IT专业人士的一项国家级专业认证。它旨在检验和评估候选人在计算机编程、软件开发以及信息技术应用等...
普通程序员如何转向AI方向普通程序员如何转向AI方向普通程序员如何转向AI方向普通程序员如何转向AI方向
### 程序员的发展方向 在IT行业中,程序员作为技术的核心力量,其职业发展路径多样且具有广阔的空间。本文将根据给定的部分内容,详细阐述程序员可能的发展方向及其相关知识点。 #### 一、技术专家路线 对于喜欢...
从初级程序员到高级系统架构师,每一步都伴随着技能的深化和技术视野的拓宽。 #### 初级阶段:Java软件工程师 在这个阶段,重点在于掌握Java语言的基础语法和核心编程技术。这包括理解类、抽象类、接口、最终类、...
程序员方向是电子信息工程专业的一个热门方向。该方向主要从事软件的设计、开发和应用,需要熟练使用 C++编程,或者熟悉操作系统。如果您能够熟练使用 JAVA 或者熟悉操作系统,您可以成为专职程序员,熟悉底层软件...
了解程序员的未来发展方向 了解程序员的未来发展方向了解程序员的未来发展方向了解程序员的未来发展方向了解程序员的未来发展方向
程序员方向的就业前景非常广阔,你能熟练使用 C++编程,你能熟练使用 JAVA 或者熟悉操作系统,你可以成为专职程序员,熟悉底层软件你还可以成为系统工程师。是比较受累的活儿,但工资不低,一般可以达到 8000 以上...
这份“Java程序员就业方向解析共1页.pdf.zip”压缩文件,虽然仅有一页,但其内容很可能涵盖了Java开发者可能涉及的各种职业路径。让我们来详细探讨一下Java程序员的就业方向。 1. **Web开发**:Java在Web开发领域...
程序员方向则要求毕业生具备扎实的编程技能,能够熟练使用C++、JAVA等编程语言开发软件和系统。随着软件行业的发展,对于具有底层软件开发能力及系统工程师能力的人才需求日渐上升。 西京学院电子信息工程专业的...
望本书能让即将走向工作岗位的程序员和已经成为程序员的朋友,对工作和软件行业做到既“知己”又“知彼”,在入职前对职业状况清楚了解,入职后对职业方向清晰认识,使大家的工作更加得心应手,更加轻松愉快。
程序员需要在职业生涯的早期阶段就开始探索适合自己的发展方向,并且不断地根据自身特点和市场变化做出调整。 此外,文档还提到了程序员在技术深度上的追求,即成为某个领域的专家或者在技术上有自己独到的见解,...
本文将深入探讨Java程序员的职业发展方向,以及他们如何在技术与管理双轨并行的职业生涯中保持竞争力和活力。 首先,Java作为一门历史悠久且成熟的编程语言,在企业级应用、大型网站开发以及跨平台应用开发等方面...
### 程序员的八重境界解析 #### 前言 在IT行业中,程序员的成长与发展路径一直是人们关注的重点话题。《程序员的八重境界》这篇文章以幽默且深刻的笔触,描绘出了程序员职业生涯的不同阶段及其特点。文章不仅对...
程序员简历模板-多方向 包含多个方向的简历模板,如软件方向、通信方向、电子类方向等,同时还有一些面试框架+技巧+礼仪+法则+误区+案例分析等资料,帮助你更好的准备面试。 包含多个方向的简历模板,如软件方向、...
为有志从事C/C++开发的程序员提供了学习路线,发展方向
程序员选什么方向好_前端还是后端_在职程序员聊聊软件开发就业方向的选择问题