1. 工作一到五年的Java程序员遇到瓶颈应该如何提升
工作了5年的Java程序员,该如何提升,做了3~5年Java开发,你已经积累了不少项目经验,扩宽了技术广度,也许已发力成为团队管理者。到了这个阶段,大家却常有这种感受:感觉自己卡在瓶颈进步缓慢,技术水平很难像早期一样实现大幅突破?
其实大家往往忽略了这一点——提升自己的架构认知(工作5年左右程序员必须重视架构认知的提升,这会很大程度上推动你今后的成长)。架构的本质在于面对业务场景给出优雅的解决方案,使得业务能够快速迭代和持续交付,从而达到降本增效的目标。提升架构认知高度,就像达克效应所描述的一样,要敢于从愚昧之巅跳到绝望之谷,通过爬升开悟之坡,从而达到架构认知的巅峰时刻。到达巅峰时刻也就掌握了架构背后设计的哲学,面对具体业务场景在架构层面你便能够轻松应对,以无招胜有招。
提升架构认知,要紧抓3个关键点:业务洞察力、技术视野、原创力(执行力)。
1.业务洞察力是技术战略层面的问题,在当下能够做出合理的判断,清楚公司做什么事情收益最大;
2. 技术视野即技术选型能力,是技术战术层面的问题,在清楚做什么事情后,需要进一步解决怎么做的问题,也就是能够给出合理的技术选型方案:是完全基于开源的方案,还是基于开源二次开发的方案,还是完全自研的方案;
3. 原创力(执行力)是技术落地执行层面的问题,一旦技术设计方案确定后,需要能够快速Rush完成。
这3点层层递进,最重要的是先把技术战略问题思考清楚,然后再进一步解决技术战术问题,最后是快速落地执行的问题。
工作5年左右的程序员,在原创力(执行力)层面比较有竞争力,往往欠缺技术视野以及业务洞察力。后面2点更加重要,这2点解决的是架构设计哲学问题,是架构师能够持续拥有竞争力和影响力的立身之道。
举个场景的例子来详细说明:一提到分布式锁问题,大多数人想到的方案是基于Redis的Master-Slave模式来实现。这个实现方案行不行?分布式锁本质是一个CP需求,基于Redis的实现是一个AP需求,乍一看基于Redis的实现是无法满足的。脱离业务场景来谈架构都是耍流氓。
从技术战略的需求层面来看,如果分布式锁在极端情况下获取锁的不一致,社交业务场景能够接受,那么基于Redis的实现是完全可行的。如果业务是交易场景,分布式锁在极端情况下获取锁的不一致性无法接受,那么基于Redis的实现方案是不可行的。在锁强一致性的场景下,需要采取基于CP模型的etcd等方案来实现。
2. 我是一个IT程序员,工作一年了,感觉上班的时候效率不高。没有学的什么东西。郁闷,我该怎么办
那是因为你太安逸了,技术没怎么提高,工作也没有什么挑战。这时候你需要在能力上有所提升,因此还是建议业余时间多学习点东西吧。
你可以看下这里,有很多技术资料,希望对你的能力提升有帮助,谢谢!
3. 为什么程序员到一定年纪开始关注管理相关的内容,不再在技术上深入下去
导致目前不少程序员在35岁以后不再从事研发工作的原因主要有以下几个方面:
第一:软件开发岗位的工作压力较大。程序员的工作压力普遍偏大,尤其是互联网公司更是如此,项目的开发周期短,加班更是家常便饭。
第二:程序员的知识结构更新速度快。程序员不仅要承受较大的工作压力,同时还面临知识结构更新的问题,这就导致程序员在忙碌的工作中还要抽出一定的时间来进行自主学习,这是对程序员工作能力和学习能力的双重考验。
第三:职位提升。由于我国在互联网领域发展速度非常快,导致人才培养速度明显跟不上行业的发展速度,所以不少程序员在35岁以后普遍走到了管理岗位上,以便于培养更多的专业开发人才,这也是一个比较常见的情况。
文章图片4
说白了,35岁了,如果你还是普通的码农级别,而没有达到“码管”级别,思维枯竭了,中年的身体体质出来了,家里有娃要开始拖累了,有哪个大型的民企会养着经常因家庭和身体健康原因而请假的高龄码农?这确实是很一个很现实很残酷的问题,因为35岁的你无法适应996的强度了。
4. java程序员干了一年了,觉得没什么进步,怎么办
其实这真是你的一个优势 你现在搞运维 应该时间很充足 为什么不利用这个时间好好学习那些原理那些思想 我深刻理解只用基础才是硬道理 当然基础不是你会封装继承多态 而是你写的每个关键字都有预见它 我举两个很基础的例子 System.out.print() 我以前的理解就是死记硬背 现在感觉System类里面应该有个out成员变量 out作为System的一个成员变量 肯定是全局的 不可能还要new个System()对象才能得到它 那多浪费内存 所以必须添加static 另外out既然给大家用 就要有个规范性 肯定不希望别人对它进行修改 所以必须添加final 然后根据out得到printStream的方法print就可能实现打印了 还有一个hashmap的hashcode和equals 原本我一直纳闷已经有equals方法为什么还得有hashcode方法 用equals效率太低了 每个都得查找 浪费内存 用hashcode算法得到hashcode值 在map.set中就已经为键加上了hashcode值 然后根据hashcode立马找到了你要实现的值 但是hashcode算法不能确定每个都是唯一的 所以虽然hashcode相等了 还是要实现object类的equals方法 如果相等就不用操作了 如果不相等就散列到旁边其它的空间
当然我很多也不懂 我在某软件公司也搞了一年了 基本上也是菜鸟 我认为基础最重要 思想最重要 技术再新底层你搞明白了 还担心你比不上所谓的coder吗
5. 程序员的工作有多难,为何职场当中程序员最容易被淘汰
主要是因为程序员这个职业面对的新鲜事物发展的太快,如果不认真的学习和接触新鲜事物,很快的就会跟不上潮流,跟不上这个时代。所以程序员的工作压力非常的大,几乎可以说是每天加班到很晚,这样才能保住自己的职业。所以说,程序员他的工作压力是非常的大的,而且很多的突发性疾病在这一行业也是非常常见的。
当然也是因为自己平时非常忙于工作,并没有太多的时间来注意身边发生的新鲜事物以及新鲜科技。因为我们都知道,需要静下心来学习才是最好的方式。但是他们平时会注意养家糊口,所以他们会变得非常的机械性,然而程序员这项工作不能有机械性的,工作需要非常富有创造性。所以淘汰是很正常的事。
6. 我是一个IT程序员,工作一年了,感觉上班的时候效率不高。没有学的什么东西。郁闷,我该怎么办
效率不高是什么原因呢。是工作量太少了,那就把剩下的时间学一些东西。若是给的任务做不来,就得向同事请教,自己主动上网查,把不懂的知识补全。程序员一定要多练,只看是不行的
7. 程序员35岁后就淘汰,为啥不是越老越香
程序员这份工作并不是越老越吃香的一个职业。因为自己了解和从事过这个行业,在这方面有着非常深刻地体会。
程序员在很多人眼中是一份高收入的工作,但是高收入的背后往往有着非常惨痛的代价,尤其是年龄上的问题,让很多程序员不得不面临转业或者是选择第二职业的考虑。
其实从整个中国互联网的行业以及包括未来的发展方向,中国也肯定会出现大龄程序员,这也是未来的一个发展方向。因为专业人才和技术上的沉淀才是老程序未来的发展优势,也是整个互联网行业所要解决的人才问题。
8. 为什么老程序员的效率如此高
程序员老师傅的解决问题能力要比初级甚至是普通的程序员都要高出很多倍,所以每个软件公司都会在保留1,2个经验丰富的资深级软件工程师,这样在遇到项目或者产品难点的时候能够力挽狂澜,这种水准的程序员也是很多公司追求的对象,而且和年龄没有太直接的关系,编程最终的就是给出解决问题的方案,从解决问题的角度出发解决方案还是非常多,但是在不同的人会给出不同的解决方案,但是有经验的程序员在解决问题的时候就会思考的比较多,不容易导致引入新的问题。
编程能力最直接的表现不是写代码的能力,因为随着时间的推移时间积累够了代码能力自然就上去了,很多程序员在工作多年之后虽然代码能力得到极大的提升,但是还是不具备独立的框架或者功能复杂的模块设计能力,所以很多人在工作多年之后工资一直不能得到上涨,这是主要原因编程的关键还是思路问题,关键点还是在于有正确的解决问题的思路,思路的切实性是需要经过项目实战的积累。
所以优秀的程序员一定是身经百战的经历过项目的洗礼,只有经历过项目才能真正意义上懂得编程是怎么回事,而且每次经历的项目都能够获取足够多的营养出来,越是优秀的程序员经历过项目之后知识体系构建越是完善,越是老程序员越是觉得程序深奥之初,所以老程序员轻易不动手都会思前想后把事情搞明白之后才去真正动手,所以讲老程序员真正动手写代码的时间还是非常短,大部分的时间都是在构思其可行性,真正动手的时间会非常短所以大家看到老程序员大部分的时间都是在看代码或者看一些资料,甚至有些人很少看到老程序员在大块的时间写代码。
越是老程序员对于编程语法看的越是淡薄,编程语言到了一定层面就是工具般的存在,就是为了编程思想服务,如果还在为了编程功能实现代码而烦恼证明了还在初级的学习阶段,度过了这个阶段之后就要考虑如何驾驭架构以及如何锤炼自己的编程思想了,编程的学习过程是需要循序渐进的不要觉得距离自己老程序员有非常遥远的距离,从开始入行就要慢慢去积累不断打磨自己的思想,希望能帮到你。
25年老程序员,20年CTO,来解答一下:
1、经验、教训使然,所谓亏吃多了,也就不吃亏了。
2、长久工作,养成了一定良好的习惯。
3、代码量到一定程度,自然而然会更熟练。
4、一些非技术的经验知识,还是需要时间来积累。
5、老程序员的思维经过多年的训练,更有利于直达本质。
6、他们的方案可行性更高,这样减少返工。
7、代码质量高,测试通过率高,考虑的因素更周全。
8、代码改起来更容易,找问题也相对容易。
9、对任务的理解更全面,能够从更多的角度去设计程序,权衡效率、速度、性能、扩展性等各方面的因素。
10、也不是所有的老程序员都能这样,这个还是跟这人的学习能力有关系,所以大家是能3年变成老程序员,还是10年,就看自己的个人努力了。
在IT编程开发的过程中,老程序员开发的效率会非常高。比如:一个网站模板,新程序员可能要花上一个星期的时间才可以完成,而老程序员却可能只需要1-2天就可以做好。这是为什么?莫非他们天生就有神相助。非也,这所以会这样,据我分析,主要有以下几点。
因为长期的编写代码,所以,会碰到非常多的问题,然后就会去解决这些问题,这就让老程序员有了丰富的实战经验。反观新程序员,碰到一个问题,因为以前没碰到过,所以要花大量时间去解决。而老程序员碰到问题,因为以前解决过,所以,很快就会弄好。
在IT编程中,很多的代码都是可以用来搬运的。因为长期的工作,老程序员会把一些功能代码记录或储存下来,以备后期使用。也就是说,他们就像记笔记一样,把一些功能代码记下来,以备不时之需。所以,在新的编程中需要用到时,他们就可以直接拿来就用,自然效率就高,开发就快。
老程序员在编写代码时,一般都会对代码的规范和格式比较重视,使用代码清晰有条理,阅读代码时就不费力气,而且还会做好每个功能代码的注释。这样,不管是对现有开发,还是对后期维护,都是非常有利的。如有代码出现bug,可以很容易地找到,这同样节省了大量的时间。
老程序员在编写代码时,会先从大处着手,把大的框架给弄好,然后,再对整个编程的细节有针对性地编写。这就好比开发一个高楼大厦,开发商会先把主体框架搭建好,然后,再一层一层地去弄每一层楼的细节。这样,往往目标会更加清晰,只要按步就班地执行计划,就可以很快完工。
熟能生巧
为什么老程序员的效率如此高?
首先, 敲代码的效率 != 工作效率
并不是老程序员效率就高,而是程序员要提高效率需要一些方法,这些 方法的学习和掌握需要一定的时间 ,结果就是老程序员的效率会相对要高一些。
所使用的编程语言的熟练程度我经常会看到一些新手程序员在写代码的时候需要频繁的去查看文档或者是网络搜索各种接口的用法,有时写一个功能要查个几十次,很多时间都浪费在了搜索上,真的写代码的时间很少。
而一个在这门语言浸淫了几年甚至是十几年的程序员,对这些接口了若指掌,使用的时候信手拈来,还知道接口里面的实现机制,可能会碰到哪些坑也一清二楚,减少了很多bug的出现。
你是不是有把那些接口拿出来反复琢磨,去研究它的源码,认真地了解它呢?
对编程工具的掌握程度工欲善其事,必先利其器。
一个好的编程工具有很多可以帮助程序员减少工作量的功能,比如代码重构、自动格式化、语法检查、代码提示和补完等等,掌握这些也能大大提高开发效率。
随着IDE的发展和进步,现在很多工具都不需要太复杂的学习就可以操作,所以这个是一个投入小而回报很高的事。
业务需求的熟悉程度代码是为业务服务的,我们首先得理清楚业务逻辑,才能知道要怎么写代码,而新手对业务不熟悉的时候,光是弄明白业务需求是什么可能都需要不少时间,有时候还可能会错误理解需求,导致写出的代码文不对题,只能重写。
所以多思考,多问,多讨论,不会花太多时间却会减少很多时间的浪费。
调试的效率写出来的代码还需要经过测试,如果有bug就需要调试了。
很多新手只重视写代码的工作,对于怎么调试却忽略了,有的人甚至只会使用打印功能一步步通过排查找bug,并且对写出来的代码没有概念,连bug大概可能在什么地方也不清楚。
老练的程序员不只是靠打印,有时候只看报错信息就能知道bug大概在什么位置,配合上打印还有断点功能很快就可以找到bug的位置,更不要说他们很清楚怎么写出容易调试的代码。他们会在写代码的时候就对可能出问题的边界条件进行检查,并且会利用自动化测试来减少工作量。
写代码之前的构思新手很容易犯的一个错误就是拿到功能需求马上就开始写代码,可能写到一半会发现前面的代码有问题需要推翻重来,或者是写错了方向。
老程序员写代码之前会先进行构思,把功能需求拆解,分成不同的小模块,甚至会在纸上把这些想法画下来,基本上在这一步就把问题已经解决了,写代码只是把解决方案用代码表达出来而已。
所以,如果你也想做一个十倍程序员,记得不要只是埋头写代码,还要刻意去练习这些提高效率的好方法!
在写代码前,代码差不多已经刻在脑子里了,写代码的时候,总觉得双手敲键盘的速度赶不上脑子的速度,写出的代码几乎不需要调试,你说效率高不高?
因为老程序员经历多了,一些常规性的BUG基本不会出现,对用户需求也能做到最大的完善,还有对需求增加和修改有个大概了解,会提前预留接口和模块,还有对用户的硬件有了解,在程序上会有相对优化。所以老程序员写的程序不一定美观,也不一定最简化,但是可能是最合适的,可惜中国的程序员刚成熟就要面临失业。年轻的程序员啥都不懂,片面追求性能,美观简洁的程序,在兼容性和实用性上大打折扣,不顾用户的使用情况和硬件情况,项目一上线问题多。
老程序员分为两种,一种是年纪老,常常被换做“老X”,一种是能力老,常被人换做“x老师”。
老程序员之所以效率高,离不开几点:
程序员是一份高强度的脑力工作,能成为老程序员者,智力,体力无一不是同龄人中佼佼者。能够更加效率的工作自然是理所应当,方符合家有一老,如有一宝的普世价值。
祝广大码农早日修炼成为这样的老程序员。
老程序员,码代码速度并不见得比年轻人快。但老程序再面对需求时,能很快抓住技术关键点,难点,重点,如何突破都了然于胸。当出现问题,老程序员有经过实践的诊断定位排错的逻辑思路与手段 。其实这些熟能生巧是一方面,学习与实践 领悟是另外的方面。年轻人观察能力强 悟性高,也会青出于蓝
老成员就是图书馆,硬盘存满了各种经过调试且运行过的程序,只需要复制粘贴,效率肯定高
9. 程序员工作2年后会越来越轻松吗
绝大部分人都是一直那么忙的
因为你刚开始做的事情跟自己熟练后做的事情不一样的。有些人认为工作2年后会越轻松,其实是认为程序员的工作开始的时候因为自己的技能不够熟悉,然后才那么忙碌的。等自己的技术水平提高了,工作就不会那么忙了。
其实这种想法是不对的。
随着你工作技能的提高,你所负责的事情也往往有变化。
给你派活的技术领导,会根据你的能力来分配任务的,大部分技术领导,派活的时候,都是会尽量让所有人的工作都饱和,能力强的人做些难点复杂的任务,能力差的,就做些简单快速的任务。
而如果你升上技术管理的岗位,你会发现更加忙了。怎么样合理分配任务,更好的提高团队效率本身就是个特别难处理的问题。需要花费很大的时间和精力才能处理好这个问题。
大部分程序员工作2年后,也是一样的忙,并不存在随着技能的提升,工作越来越容易的情况。
10. 程序员工作繁忙完全没时间提升自己该怎么办
高效利用每天的时间。
即使工作再忙,总有碎片化的时间。将碎片化时间利用好,那么长此以往就会得到很多的积累。一个知识点通过无无数个碎片时间的学习,那么也会得到很好的巩固。工作的性质不一样,那么繁忙程度也就不一样。程序员需要经常性加班,回到家以后基本上都是深更半夜了。当公司忙的时候,更不要说按时吃饭了。有些程序员长期加班加点,身体都已经吃不消了,更不要说去提升自己了,他们就连睡觉都是没有充足的时间的。
1、工作忙只是借口而已。
不管多忙,睡前的时间,吃饭的时间都可以拿来利用的。这些时间经常会被大家忽视,也就是我们俗称的碎片时间,只有将这些时间好好利用了,我相信你会比别人提升的更加快。
平时生活当中,你有遇见过程序员吗?他们平常的工作是不是真的很忙呢?你见过最晚的加班是到几点? 在你学习的时候有什么技巧和方法吗?你又是通过什么样的方式提升自己的呢?当你感觉到时间不够用的时候,你会怎么办?