‘壹’ 网站程序员的程序员成长之路大概分几个阶段和未来的发展
信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,如何才能成为一名合格的程序员,一名合格的程序员需要掌握哪些技能呢?为此天天招生网采访到几位孳生的程序工作人员,就如何做好一名成功的程序员谈出了自己的经验。
熟练掌握开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C和JAVA是重点推荐的开发工具,C/C以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
熟知数据库
为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
对操作系统有一定的了解
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要缓此深入了解操作系统,了解它渣哪斗的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
懂得网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP//CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
不要将软件工程与CMM分开
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是如磨一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
拥有强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
真实,最准确的相关信息。
‘贰’ 程序员以后的发展是什么
程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术。程序员职业生涯发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员。
绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业去当老板,也有部分人转行了,当老板的人毕竟是少数,转行的人都不在这行做了,自然没什么好说的了。一般来说,程序员的发展基本上都会经历这么几条路径。程序员——系统分析员——架构师——技术经理——CTO,程序员——项目组长——项目经理——项目总监——CTO,程序员——产品设计师——产品经理——CTO。
当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而最终做到CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO。
也就是说,许多的程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答案,因为每个人的性格不一样,际遇也不一样,就像你从小希望当贪官,可是命运却偏偏让你做了一个程序员。所以应该根据你的兴趣、性格与际遇选择一条道路,比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以选择向项目经理方向发展。
实际上很多时候,有些公司并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是由一个人承担。在外包公司里,通常会有项目经理和系统分析员(也可能是技术经理)。在一些非IT公司里,可能会是部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让正在徘徊的程序员有一个大致的了解。
项目经理是项目的直接负责人,这个角色相当于一个中间接口,不管是团队成员还是需求方(客户),或者是上级领导,有事都直接找他,所以这个职位着重于管理与沟通。一般来说,项目经理的工作重点在同客户沟通需求、项目进度的把控、团队的沟通方面,有些公司也会需要项目经理承担团队建设的工作,不过貌似很多国内公司都忽略了团队建设这个工作了。对于项目经理来说,重点会要求沟通能力、协调能力、危机把控能力、执行力、团队管理能力,着重于沟通、管理与计划。当然也有些公司还要求项目经历要参与招标谈判,这就要求项目经理有一定的商务谈判能力。
技术经理有时候也可能叫系统分析员,一些小公司可能会整个部门有一个技术经理。技术经理承担的角色主要是系统分析、架构搭建、系统构建、代码走查等工作,如果说项目经理是总统,那么技术经理就是总理。当然不是所有公司都是这样的,有些公司项目经理是不管技术团队的,只做需求、进度和同客户沟通,那么这个时候的项目经理就好像工厂里的跟单人员了,这种情况在外包公司比较多。对于技术经理来说,着重于技术方面,你需要知道某种功能用哪些技术合适,需要知道某项功能需要多长的开发时间等。同时,技术经理也应该承担提高团队整体技术水平的工作。
产品经理这个职位一般在有自己产品(不管是软件还是网站产品)的公司比较常见,产品经理主要会负责产品的设计、产品的改良等工作。需要注意的是,产品设计与设计师是两个不一样的工作,产品设计主要会从用户体验、业务需要等层面去设计产品,而设计师更多是从用户的视觉上去做。产品经理应该是最懂业务的人,比如说你在设计一个微博的产品,就要求你对微博这个东西非常熟悉,从用户习惯、用户体验、公司的发展战略上去设计这个产品,还要对比同类产品会有什么优势等等。
不管是项目经理还是技术经理与产品经理,都要求要熟悉业务,业务是需求的来源,没有不谈业务的技术,所以不管你从哪个方向发展,都要求对业务熟悉。产品经理要求对业务最熟悉,项目经理次之,技术经理排最后。对于程序员来说,刚开始工作的前几年可以埋头扎到技术里面,一般这个时间在2-3年的时间,然后就应该多关注业务了。这个业务不一定是指某个具体的业务,因为具体的业务的范围太少,而且也需要机遇。
‘叁’ 避免迷茫跳槽,程序员有哪些发展路径
程序员一般的发展方向主要包括:技术专家,架构师,技术管理,管理,产品。接下来通过例子和大家分享以下四种不同的发展路径及适合走这四类路径的人群的三个关键词
我之前的一位候选人Z先生,他12年从湖北工业大学毕业,而后去了搜狗担任工程师,做了两年后,跳到了另一家公司叫小麦公社,是当时一家风头正劲的创业公司,担任B端高级开发,后来去到了因果树担任B端的技术资深开发,在今年2月份入职了杭州阿里巴巴,同样是负责B端商家后台部门,担任技术专家,他职业规划最大的亮点是找到自己想要专注的领域并且一直坚持至今。
也是之前100offer的一个用户,H先生,他11年北航毕业,而后选择创业做SAAS平台当时担任前端负责人,两年后选择加入搜狗成为一名高级前端工程师,后来去到了音悦台担任架构师,目前在一家创业公司担任前端架构师,他职业规划的最大亮点是在前端领域各个方向都深入见解,而后负责多条产品线的架构设计。
那以上两种技术路线有什么不同呢,应该如何选择呢?
技术专家,是偏理论研究的,对某个或某些相关的专业领域深入了解,能直接或通过提供思路间接解决这些领域的各种问题;架构师,是偏工程实践的,与技术专家的区别在于它需要一专多能,提供方案解决问题已经不是它最重要的价值,它的价值体现在选择性价比最高的方案。
说我们100offer的一位用户Q先生吧,他在30岁就成为了某知名共享单车公司的CTO,说一下他的职业规划,09年首都经理贸易大学毕业加入一家创业公司担任开发移动端工程师,两年后加入360担任资深研发工程师,而后加入新浪微博担任移动端部门的技术负责人,而后加入了宜信担任技术总监,在去年7月加入共享单车公司担任CTO。他职业规划的最大亮点是一直在核心业务上往技术管理进阶,最终成为一名优秀的管理者。
谈到这类管理路径,必须要说明下技术管理和管理的区别,技术管理是事情为中心,管理是以人为中心,技术管理主要工作是保证事情能按时按质完成,管理需要考虑团队的士气和稳定性、阶梯性。
X先生是100offer的一位深度用户,也带来一个海龟码农成功转行产品经理的故事,09年毕业于美国工程类名校普渡大学,而后回国在一家外企担任开发工程师,一做就是5年,14年一个幸运的机会加入了腾讯,当时腾讯面试了7轮,拿到了T1-2,月薪1W2的工程师offer,基本是刚毕业一年左右应届生的水平。在腾讯主要做手机QQ红点系统,做了两年,他从未抱怨。他也给我们展示了所谓"红点",其实就是手机QQ上不同接口旁的红点引流。手机QQ流量日活上亿,但是会点击那些游戏、商城、音乐等接口的用户大概只有1%,红点主要就是吸引那些有强迫症的用户点进去引流。从最开始的红点数量的改进,到后面根据不同属性用户设置不同红点,再到后来和其他产品合作比如京东商场,搞红点的竞价排名...就这么一个小功能腾讯专门养了一个团队去做,对于BAT这种大公司来说,一个小的模块和功能的改进能带来很大的利润,很多人常年都在做很小一个模块的重复工作,很难独立完整去做项目,里面闲人很多。
所以工作两年后,许宁也想做点商业化的东西了,给部门老大反馈了想法没得到支持,在内部其他部门也争取了问了一圈没能成功转岗,于是就想出来,不想继续在腾讯里面慢慢熬晋升了,从腾讯出来是那年是2016年3月,T2-3。而后在100offer上入职了一家投资公司,以产品经理的身份加入,两年过去了,目前已经成为了一名高级产品经理。他职业规划的最大亮点是深思熟虑后立刻决定和行动,没有犹豫,而机会往往更容易留给有准备和有勇气的人。
(资料来源:100offer网)
‘肆’ 做一名JAVA程序员要经历一种怎样的过程
第一阶段:三年
我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。
第二阶段:五年
五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年 后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。
第三阶段:十年
十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席 架构师等关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你。
‘伍’ 北大青鸟分享Java程序员也有很多发展方向
绝大多数Java程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业去让闷当老板,也有部分人转行了,当老板的牛人也有。一般来说,北大青鸟发现Java程序员的发展基本上都会经历这么几条路径。程序员-系统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO。
当然这只是一个大致的路径,不是所有Java程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而很显然,CTO,是大多数程序员的终极梦想。
也就是说,许多的Java程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答案,因为每个人的个性和情况不同。但有一点是重要的,一是有际遇一定要抓住,二是自己要努力。
比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以考虑向项目经理发展。因为老板让你做,说明他看到你有这个素质和潜力。要相信别人的眼光。
但是大多数人是遇不见这么好的伯乐的,那就要自己努力。没有能力就学能力,没有知识就学知识,没有气场就每天照镜子练。如果你的确不知道怎样才能从众多的程序员中脱颖而出,那么就举正去参加培训,培训别选学费巨贵的,选有特色还不贵的。用一两个月工资,可以换来你能力的快速提升。
再说有些公司,并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是几个人混搭的。在外包公司里,通常会有项目经理和系统分析员(也可能是技术经理)。在一正滑悔些非IT公司里,可能会是部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让正在徘徊的程序员有一个大致的了解。
‘陆’ IT行业大多数技术人员的成长阶段大致分为哪几个呢
第一阶段:学徒阶段
这个阶段有些人是在学校里完成,有些是通过自学完成,有些人是半路出家通过各种教育平台完成。这个阶段,刚接触代码不久,有些问题变如同雾里看花,但终究是开始行动了,所以这个阶段过得很快,心态上可能还是觉得前路不清晰但已经逐渐有了成就感。
第二阶段:初级程序员
这个阶段的人通过学习已经掌握了一部分的技能,比如知道如何团队协作、项目版本如何控制、如何使用项目管理工具、如何让代码顺利运行上线等等,这个阶段也许做了一些小的项目便开始觉得自己会得东西不少,其实只是算个半吊子程序员,这个时期的程序员很容易觉得其他程序员也不过如此。
第三阶段:中级程序员
这个阶段的程序员已经掌握了进阶的技能,并逐步确立了自己的专长,在职场中开始能够独立承担项目,并会有意识地去学习。这个阶段像一个分水岭,有些程序员除了工作不研究其他的技术,虽然在工作中很容易完成任务,但很容易就被更加年轻的程序员所代替;有些人则是不断的提升自己,热衷于研究各种技术实现细节,多和他人讨论,多看了很多书籍文献,这些人有着自己的规划,在工作几年后就是项目组中不可或缺的人。这个时期他们的薪资暂时没有太大的差距体现,也是在程序员平均水平。
第四阶段:高级程序员
这个阶段对各种编程已经有了自己的认识,一些程序员脱颖而出开始带领团队。这个阶段的程序员基本上在公司担任CTO、技术专家、首席架构师等非常关键的职位。随着自己知识的深度和广度的提高,反而会觉得自己需要学习的东西更多了,在这个阶段,他们对于团队在工作中遇到的问题,基本都能解决,因为很多知识都自成体系了,站在更高的角度宏观的看待问题。
第五阶段:自我创业
这个阶段的程序员已经有了自己的资本和人脉,很多人开始选择自我创业,哪怕不想自己成为老板也会选择与人合作创办公司,他们有些是为了实现自己的理想,有些是为了能够获得更高的生活,这个阶段的程序员已经不是单纯只考虑编程本身了,还会开始接触很多商业知识。
以上就是我的回答,希望对你有所帮助
‘柒’ 《内外兼修:程序员的成长之路》pdf下载在线阅读全文,求百度网盘云资源
《内外兼修:程序员的成长之路》(罗飞)电子书网盘下载免费在线阅读
链接:
书名:内外兼修:程序员的成长之路
作者:罗飞
豆瓣评分:6.6
出版社:机械工业出版社
出版年份:2016-9-1
页数:176
内容简介:
本书作者将分享自己在做程序员路上的一些经验。分为“程序篇”和“人生篇”两部分。在“程序篇”,作者会介绍程序员要经历哪几个阶段,每个阶段要做什么,程序员遇到问题如何解决,介绍程序员要学什么、要看什么开源程序。在“人生篇”,会介绍程序员的人生态度,程序员大多内向、缺乏自信,只有内心强大了,才能勇敢面对困难,解决程序和生活上的问题。
罗飞是优伯立信的CEO,曾就职于新浪云计算,也在创新工场创业过,是国内流行的PHP框架ThinkPHP的核心开发者之一,开发过多个专利,写过编程书,做过一些视频教程,是优才网全栈工程师讲师。罗飞高中辍学,程序都是自学的。在学习和工作过程中遇到过很多困难,也曾经差点放弃过。后面掌握了良好编程学习方法以及解决问题的方法,之后的职业生涯就比较顺利。
本书的另一位作者伍星老师,他是优才学院的CEO,十多年技术开发经验,开心网早期创始团队成员,处理过亿级高并发的情况,亲手部署了开心网从两台机器到数千台机器的架构,在开心网培养了数十优秀人才。他们现在已经是各大互联网公司的资深工程师、创业公司CTO。他为大家制定的学习路线是非常有说服力的。
作者简介:
罗飞,优伯立信创始人,ThinkPHP核心开发者,移动开发精英俱乐部发起人。待过新浪、创新工场。高中肄业,自学编程。涉足于人工智能、互联网+领域。
伍星,80后,湖南人,国内首*全栈工程师培养机构优才学院创始人。擅长互联网架构与技术研发,专注在线教育、教育科技、O2O教学的实践与探索。
‘捌’ 作为一名普通的程序员,需要怎么给自己找一条后路呢
作为一名程序员,在未来可能会面临技术淘汰、公司倒闭、经济不景气等风险。因此,找到一条后路是非常必要的。
以下是一些可以帮助程序员找到后路的建议:
1.不断学习新技能:随着技术的不断发展,新技能的学习变得非常重要。程序员应该不断关注行业的动态,并且学习新的编程语言、开发工具和技术。
2.建立广泛的人脉:建立广泛的人脉可以帮助程序员在职场上更好地生存。这些人脉可以包括同事、老板、行业专家和其他程序员。
3.做好个人品牌建设:通过博客、社交媒体和GitHub等平台,程孝祥序员可以建立自己的个人品牌,提高自己的知名度和可见祥凯度。这可以帮助程序员在找工作或者自主创业时更有优势。
4.考虑转行:如果程序员发现自己的技能在行业中逐渐被淘汰,或者自己的工作面临很大风巧宴搏险,那么可以考虑转行到其他领域。这需要程序员具备开放的心态和勇气,但也可能会开启一条新的、更有前途的职业道路。
综上所述,作为一名程序员,需要不断学习新技能、建立广泛的人脉,做好个人品牌建设,不行就要提前考虑转行。