⑴ 为什么年纪大的程序员都转行了
我不确定多大年纪才算是“年纪大”。我今年43岁仍然做程序员。
从九几年开始进入这一行,中间也曾自己做过传统业行,也做IT行业不同岗位做过,在程序员的晋升通道中也做过研发总监,可这些,都没法带给自己那种写代码得到的乐趣。,最终还是又回到程序员岗位。
在中国,愿意一直写代码的人,并不多,这是事实,但我的看法是,这并不是因为年纪的原因,也不是因为竞争的原因,而主要是【中国式职业规划】和【IT企业的生存压力】的带来的。
中国式职业规划
现在很多培训机构、很多企业,都在谈职业规划。
企业告诉你:我们这个岗位的晋升通道是这样的,巴拉巴拉巴拉……
这意思就是说,你来做这岗位吧,做若干年,你就可以在这个通道上往上爬一层……
那么好了,不管这个晋升通道是什么样的,你一开始是程序员,爬几步后肯定就不是了。
培训机构告诉你:要有职业规划,要有人生规划。
在我看来,这是洗脑:他们的人生规划的核心是"努力挣钱,然后去过幸福的日子",然后根据这个再推出相应的职业规划:努力工作->获取更高的职位->挣更多的钱->更努力工作……
如果信奉了这些,那么,当一个程序员接近个人能力的瓶颈或者职业、行业的瓶颈时,感受到那种突破的压力,他就会考虑转换岗位以寻求更容易突破的方向。而遇到这类瓶颈的程序员,估计多数就是所谓的”年纪大“的范围了。
中国经济正处在高增速阶段,这导致每个家庭、每个人需要不断提高自己的收入水平以保持与之同步,这一方面导致这种将”钱“作为核心词汇的人生规划大有市场,另一方面,也使中国企业的生存压力高于其它国家。
IT企业的生存压力
世界的变化正在加速,在IT这个行业尤其显着。
对企业来说,速度就是利润,就是生存的机会。早些年流行的一句话”快鱼吃慢鱼“把这个道理形容得十分形象。所有行业上,竞争都是越来越激烈,IT企业只会更甚。
二十年前,一个软件开发公司可以花三到五年来打磨一个产品;十年前,这个时间只有一年;而现在,更是缩短到几个月。
IT行业对开发速度的要求越来越高,这种速度是的提升,主要是从三个方面实现的:增加人手、优化开发流程、压榨人力。前两者对于一个具体的IT企业来说,在没有业务变化的前提下,都是有明显的极限的,所以,最终,还是落到第三个手段上:压榨人力。
在你以为996就是程序员世界的现实时,真正的现实是:在996之外,你还得保持随时待命的状态:电话保持通畅、微信常开什么的只是小儿科,网上随手搜搜就能搜到程序员深夜在马路边、地铁上改代码的消息。这种对工作时间的压榨,在其它职业上是很少见的。所以,程序员的工作压力之大,也是少见的。
基于这两个主要原因,程序员,尤其在中国,年轻化相对于其它行业是十分明显的。
但是,当摆脱了经济压力后,大部分人还是会想寻找一个自己喜欢的工作或事业去投入自己的精力与时间的,这时,如果对coder是真爱,还是会再次回到这个岗位上的。只是,在经济快速增长阶段,企业与这类人在工作时间方面的冲突难以调和,所以,这类人就比较少见了。
随着经济增速放缓,会有更多的大龄程序员活跃在代码界的。
⑵ java的单例模式在开发中有哪些应用
比如:程序员定义的一个读取配置文件的工具类。在项目中可能多次使用这个类,如果每次都new一个实例出来,这样在运行期间就会存在很多实例,而实际上只需要一个实例对象就可以了。多出来的实例对象会浪费内存资源
⑶ 有哪些老程序员都知道对新手很有用的经验
一说到程序员,想必大家的第一印象就是头发少,很大程度上就是因为压力大导致的,有生活压力,也有工作压力。
今天说说工作方面的压力,想必看到这个问题的小伙伴都有一个认知,就是一个项目往往比预期的要长,说不定从哪天开始就加班了,一出现BUG真的要人命。此时,考研新老选手心态的时候和经验的时候了,老程序员或许能从容应对,新手可能完全不知错所。
这些信息包括户口档案、社保、公积金等信息,程序员新手可能跳槽比较频繁,有人甚至还换个城市工作。除了户口可能其他的信息都乱了,可能当时觉得不那么重要,但是十年、二十年后,可能会非常重要。
·工作日志可以提升脑容量;
·不要先写框架再写实现,要反过来;
·重构/优化/修复Bug,不要同时做;
·简化开发流程,加快迭代速度;
·纸笔是最好的工具,其次是markdown;
·画出结果,一目了然。
·要学会进行清晰的命名;
·问问题前先调查,要问到点上。
·不要小看程序员
⑷ 我先跟大家说说我的情况,我是个程序员,但是因为我的精力不足了,想要换个工作。下边是我的具体情况。
给编程爱好者的忠告
近来有不少人问我是学Vb好还是学C好,还有人问Vc和C++Builder哪个更好,还有人说只要是面向对象的就是好的所以C++和Java最有前途。以我从事计算机教育多年的经验我要告诉这些编程爱好者,如果只是一味追求学会一门所谓的最先进的编程语言(事实上不存在最优),而忽视了编程思想和基础知识无疑是犯了学习编程的大忌。
就拿面向对象来说,人们一提到它就赞不绝口,然而又有多少人领会到什么是面向对象的思想,我想如果没有真正做过大项目的人是很难体会到其优越性的,这不是通过学习C++或Java就能掌握的。我的意思是编程注重的是想法而不是语言,这就是计算机专业要开设“算法分析”和“数据结构”的原因,如果一头钻到某一门语言中无疑于作茧自缚,束缚了自己的思想,打一个不好的比方一个程序员的工作性质和民工没什么两样只是在垒砖头,而真正的计算机人才应该是一个设计师、工程师。
现在国外的一些优秀的计算机着作的都是一些从事如生物、化学等领域的专家,我想这是因为他们以前没学过计算机,没有被某些传统的观点所束缚,从宏观上来看待问题,反而在思想上有所突破,这是值得我们深思的。
真正的程序员(转贴)
作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。
1:团队精神和协作能力
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
3:规范化,标准化的代码编写习惯
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助踊同技术人员之间的协作。有些codingfans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
4:需求理解能力
程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系统,他也做不出太极链的并访能力。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
5:复用性,模块化思维能力
经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费
了时间和精力。
6:测试习惯
作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可*性就有了最大的保证。测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定性测试,用户潜在的异常输入情下的测试,整体系统局部故障情下该模块受影响状的测试,频发的异常请求阻塞资源时的模块稳定测试等等。当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到的需求理解能力。
7:学习和总结的能力
程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。但是学习也要找对目标,一些小coding fans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东西和名词,做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术人员,不管掌握了多少所谓的新语
言,永远不会有质的提高。
善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。一个不具备成长性的程序员,即便眼前看是个高手,建议也不要选用,因为他落伍的时候马上就到了。具备以上全部素质的人,应当说是够格的程序员了,请注意以上的各种素质都不是由IQ决定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序员对自己工作的认识,是一种意识上的问题。
⑸ 作为一名优秀的程序员,要具备哪些基本功
程序员(英文Programmer)是从事程序开发、维护的专业人员。
作一个真正合格的程序员,需要具备:
1:团队精神和协作能力
团队精神和协作能力是作为一个程序员应具备的最基本的素质。
2:文档习惯
文档是一个软件系统的生命力。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。
5:模块化思维能力
作为一个优秀的程序员,其思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。
⑹ 程序员35岁后,应该做什么
在打工的生涯中,我从一个小程序员走到了公司总监,在创业的生涯中,我从一个人单枪匹马做到了几十人的IT公司。活在这个圈中,每天面对着那些可爱的IT人,我不得不编造各种谎言,不断给他们希望,却让他们不断的在希望中走向失望。
我见过很多老程序员,甚至比我还老。他们曾经创造了令人骄傲的业绩,那是在当他们年轻的时候。在中国,程序员的大限是28岁。看看今天的他们吧,挂在脸上的是那无法掩饰的焦虑和孤独寂寞的迷茫。很多老程产生了种种生存的障碍,他们说着刻板的话,似乎是由程序语言结合人类文字诞生的新型语言;他们渴望和别人接触,而他们的孤独令所有人远离;他们经常回忆起当年的辉煌,脸上充满着兴奋的色彩,就象吸了毒的人在巅峰徘徊。当他们回到现实,你却能发现他们脸上那无奈惨白。他们越来越感到压力,他们越来越发现精力不济,他们越来越感到迷茫,不写程序,他们还能做什么?学习的压力、生活的压力、前途渺茫的压力,把他们从阳光灿烂的脸压成了一张张灰色的,扭曲的,无奈的和迷茫的脸。这就是程序员的悲哀。
老程序员面对着两个选择,要么转型,要么退出这个圈子。于是可爱的IT人开始了第一次分流,他们大多处在26-28岁之间。经过放弃的痛苦和不断的努力,他们中的很少的一部分人留了下来,继续耕耘在这片中国IT贫瘠的土地上。能够留下来的是那些语言功能尚未退化的人,他们不但还保留着技术的残迹,同时他们迅速练就了听说读写的能力,于是他们成为了IT公司的中流砥柱,他们通常充当着顾问、经理等重要的职位。他们也分为两种人,一种人继续耕耘在技术的领域中,一种人分流到了纯粹业务的领域中。由于技术的封闭性,导致那些继续从事技术领导的人逐渐产生了更大的压力,他们在技术的漩涡中被更深的卷了进去。而那些从事业务的人,逐渐从技术的漩涡中解脱出来,步入了正常人的生活圈子。从事技术的人,无论他们从事哪种技术,在中国,他们的上限最高也就是32岁。从事业务的人,无论他们从事哪种业务,他们几乎都没有了上限。可以说,选择技术的人,他们是勇敢的,无论是盲目的勇敢还是理性的勇敢,他们都将陷入更深的泥潭,面对他们,我只能敬佩的说,他们才是真正的IT人。
在中国,他们的悲剧是早就注定了的。中国的IT业是在一穷二白的基础上来追赶第一世界的,在这个过程中,国家的投入可谓微不足道。
在这8年中,我看到了很多IT人的命运,最好的命运是出国继续搞IT,最差的命运是消失。转了行的人,从此在IT界消失了,几年之后他们几乎不会留下任何痕迹,他们的代码早就过时了,他们的思想早就随着程序的删除而被永远的删除了。
⑺ vb中程序出错就自动退出的处理
不建议你这么做,你这是逃避错误,而不是改正错误。真正好的程序,是完全不存在On Error语句的!所谓程序的健壮性,指的就是这些。很多错误并不是像你说的是无法预料的(除非是VB集成环境本身的BUG),我们应该预先设想程序可能出现的各种情况,然后逐条解决。比如要想在一个文本框中要求用户输入一个指定范围的数字,结果不外乎这么几种:空白、非数字、超出范围的数字、完全符合要求的数字,那么程序中就可以通过检测把前面的几种情况排除,只让最后一种情况通过,而不是直接把文本框的输入结果拿来就用,然后出了错误就用On Error擦屁股了事!
打个比方:是在水灾发生前就做好各种防灾措施,把水灾扼杀在萌芽状态,还是坐等水灾的发生,然后进行各种补救措施?我相信任何正常的人都会做出明智的选择!
程序员,尤其是初学者,最好不要习惯性地使用On Error 语句,否则的话你的程序永远不可能提高,因为你永远不知道你的程序是怎么出错的!
以上是一个做了10多年的老程序员的忠告!
⑻ 程序员过35岁就找不到工作了是真的吗好害怕
过了35岁后,程序员真的是一个没前途的工作了吗?
很多过了不惑之年仍活跃于这个领域的精英
无论你相信与否,在这个领域仍有很多成功的程序员早已过了不惑之年。他们中的一些人甚至是行业内的最好的精英。
还记得你第一次写代码的时候吗?那种难以抗拒的兴奋和激动——不断变化的技术,充满挑战的工作……
这个行业让你看到了活力,无时无刻都有最新、最前沿的想法和不断涌现的机会!
你说你不如年轻人敏捷了,不如他们聪明了,都不是!只是因为他们就和当年的你一样,面对机会、学习、哪怕在这个过程中犯错,都毫不犹豫,前赴后继。那样的热情,那样的激情澎湃充满了梦想!
想起来了是吗?
你要做的只是找回你当年的感觉!
2.创新需要暂时抛开已有经验
有一句编码格言是这样说的:有时增加代码并不能更好地改进软件,删除代码才可以。人生亦是如此,特别是程序员的人生。这句话中蕴含的哲理远远超过你的想象。任何一个阻止你去“删除你人生代码”的因素——无论是一个你早该放弃的旧程序,或一个陈旧老套的想法——都阻碍了你的进步。
作为一个有经验的程序员,我们的工具包里充满了作为我们技能基础的那些“经过检验而可靠的”技术。但这是福亦是祸。
举个例子,我们自己编写解析例程有时候要比提前导入预先写好的编码包更快。这往往是因为在开始码程序之前,我们想要检查确保这个编码包里没有错误。但是我们的本能其实是很不合时宜的。我们本应该输入开放源代码包并进行检验。如果结果是编码包中有错误,应该尽力解决这个问题直到完善,可重复使用的代码胜过重塑。
大多数时候,“经过检验而可靠的”经验是创新的敌人。唯一能让你进步的方法,只有“对你已知的经验持怀疑态度”。只有当你尝试了新的方式,并对它进行检验才能知道它是否有效,这时候你再决定如何做。
通常情况下,这种方法会花费你大量的时间,很有可能最后还是会回归到原有的习惯。但在这个过程中,你会自己将新的创意添加到工具包中,并逐一发现哪些技术是有价值的,值得保留的。做出这些选择是最重要的,直觉起着至关重要的作用。幸运的是,你有几十年的经验,有着比大多数人更好的直觉。只是不要让偏见堵塞你的灵感源泉。
3.身体是革命的本钱
那一年,你二十出头,耳机里的音乐隔绝了外部世界的一切,你面前只有发着微光的电脑屏幕,那些代码是你如今的全世界,凌乱一地的可乐罐,披萨盒里还剩下一块,凌晨三四点,有些饿了你吃掉了最后一块披萨,接着肝,睡眠是什么?管他的呢……
时光一晃,你已经老去,可不能再这样折腾自己了。你的体重、你的肌肉、你的视力……别不把医生的话当回事,去减肥、去锻炼、早点睡!运动和规律的生活方式会让你越来越有精神。你是比年轻人有更多的挑战,但只有照顾好你自己,拥有充足的精气神,才能去迎接这些挑战,越战越勇啊!
总结
程序开发最好的地方就是它只和你的激情和学习能力有关,那些数以千计上了年纪却依旧杰出的程序员的职业生涯就是最佳证明。如果你没有这些特质,那么开发对你来说是无论在任何年龄都做不好的职业。但只要你有激情和能力,就无需掣肘于年龄,哪怕你四五十岁,甚至六十岁也都不算晚。
⑼ 程序员老了怎么办
很多人都是说程序猿是吃青春饭的,上了年纪的程序猿将会面临着脑力或者体力不支的问题,导致一些老程序猿不再被公司重用或者重视,甚至面临失业的危险。然而我却不这么认为,其实程序猿老了未必就没有用了,很多老程序还是大用用武之地的。