Ⅰ 工作一到五年的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等方案来实现。
Ⅱ 对程序员来说最难的是写代码吗
谢邀。我是一名Java后台开发,还是一名工作没多久的“码农”。写代码作为工作的一部分其实不算难,甚至程序员写代码的时间比其他事情花的更少。我就分享一下咱们Java后端开发的小体会吧:
初级程序猿大部分都是写增删改查的业务代码,增删改查最需要技术含量的是查,归根结底都是写SQL语句,有的业务逻辑复杂一点就SQL语句复杂一点,或者数据库里不好处理就在Java代码里处理。只要数据库学的还行,MySQL比较会用,Java功底有一定基础,基本上都能胜任敲代码的工作。
文|热心哥哥宇文笑
文|热心哥哥宇文笑
业务复杂
,有的系统尤其是一些toB的系统,比如一个上市公司的超市人力管理系统,这是非常复杂的,人事组织,薪资社保,还要针对不同地区分公司不同类别的员工进行不同的代码处理。
业务复杂
需求变动频繁
,有些项目的顾问或者产品经理没把控好,导致需求被客户拖着走,搞产品的可能觉得也就变化一点点东西,实际上有的功能代码需要后端重写,数据库的表结构一变,那改动也是得跟着变。咱们敲代码的朋友最不喜欢的就是返工,我们宁愿去接受更多的开发新任务也不想再去重写自己以前写的代码。(不用说什么重构,这些业务代码重构其实并没有什么技术上的突破)
需求变动频繁
代码优化
,其实比较难得住人得,尤其是难住我们这些刚入行的程序员。有的业务数据量庞大,就得先考虑数据库优化,代码多线程优化,总之优化代码倒是一件比较进阶的拆事,比敲代码难。
代码优化
来说说,作为程序员的你,最难的什么呢?
Ⅲ 作为一个程序员,我发现同事写的代码有Bug,怎么办
作为一个程序员,你发现同事写的代码有Bug,你会告诉他吗?讲真的,这个事情对我来讲,很难,因为我在这个事情上吃过苦头!
看待这个问题首先得看对方脾气咋样,如果对方脾气不好,或者很难搞,还是想想其他办法。直接跟他讲可能会遭到对方的白眼!
别看我们程序员一个个傻傻呆呆的,其实自尊心特别强!除非你是他的领导,否则即使你发现了他代码里的Bug,他也不会服你!虽然还是会改,但内心一定在想:“就你能?自己管好你自己就成,看我代码干啥?”
其实我也是这样的心理,好像程序员除非自己愿意,否则都不怎么喜欢别人去研究自己的代码,好像对方故意找自己茬的意思。
但是不管咋样,不管是有意无意,我们既然发现了同事写的代码有问题,就不能坐视不管!
我最近在调一个小伙伴的接口时,因为涉及到数据回滚,所以就想知道他的代码有没有做回滚操作。如果没有,可能我这边数据已经回滚了,他那边没回滚就会导致数据前后不一致。所以我也不是有意要审查他的代码。
然后我就发现他不光没有做回滚操作,也没有做批处理。几个涉及到修改数据的代码就这样一行一行走下来,看着直让人挠后脑勺。
于是我就把这个事情告诉了他,让他要么做事物(如果操作有问题,可以自动回滚),要么做主动回滚。否则我在调他接口时,如果我这边撤销了数据修改,他那边却提交了修改,就会导致数据丢失或前后不一致。
当我告诉他这个情况和解决方案以后,我能很明显地感受到他有点不愉快。但事实摆在眼前,也只能修改。可修改归修改,他还是有点脾气的。于是他写了一个事物,将大部分涉及到增删改的语句全部包在了里面,唯一把一个删日志的语句留在了外面。
我看到这个情况,就委婉地跟他说:“”好像这个删日志的语句也要包在事物里面哦!”
但是他却说,这个无关紧要,他特意放在外面的。
我跟他说,既然这里有数据存在,就不是无关紧要的。不管咋样,也不能无缘无故就把数据给删了。但是他很倔强,执意不改,还说如果我觉得这个数据有用,那就让我自己“顺手”把这里的代码改一下。
此时我能明显地感受到他已经有点烦我了!无奈之下,我把这段代码给移动到了事物里面。
而我为什么说我因为发现同事代码有Bug告诉同事而吃过亏呢?
原因在于我之前待过的一家公司,有一个工作了几年的程序员同事,而我当时是个萌新。因为我专门培训过,所以代码能力还行。可这个同事虽然工作了几年,但写出来的程序代码却Bug一堆,常规测试手段还测不出来。
我是在偶然之间发现他写的一个程序是有Bug,但是又不确定,所以就想看看他代码是咋写的。不看不知道,一看吓一跳,他写的好大一部分代码都有问题!
我当时初生牛犊不怕虎,发现一个跟他说一个,结果最后把他给惹毛了,当场就要跟我动手,说我专门针对他。我哪有针对他的心呀!我当时想的是把这些Bug找出来,让他改掉,否则对公司也不好。
但是他想的估计是被我这个萌新发现了一堆Bug很丢人。我总是针对他的代码找Bug,他就是脾气再好也绷不住啊!
后来我们的部门经理为了不让他难堪,也为了给他个台阶下,找了我写的程序里的一个缺点,猛批了下,然后跟大家说:“我刚才看了看,大家写的代码有好多问题。这样,大家都各自检查一下自己的代码,看看有没有问题,有问题尽快改过来,然后我们统一测试!”
直到现在,我也没学会当发现同事代码有Bug以后,在不让同事产生不愉快的心理的情况下,委婉地告诉同事他代码写的有问题的方法。
Ⅳ 做了1年的程序员,发现自己不适合做开发
你看看暴风影音的老板冯鑫的传记,销售出身,见识广,了解市场,有自己的关系群,对编程一点都不懂. 所以最好还是去做销售.不过冯鑫到哪个公司都能做到销售冠军. 程序员一般创业基本上都挂.
Ⅳ 本人程序员刚进一家公司,半个月了,现在写代码写不出来怎么办
我没有做过程序员,但稍稍会点简单的(自学)。我感觉一个成熟的程序是系统工程,初接触者:无从下配厅败手个人感觉很正常!
经常在网站上看到公司骂老的离职程序员代码烂。我认为有二个原因:
1、培颤新入职的员工看不懂,自己不懂但骂骂别人,可以转嫁风险,让离职的背锅,为自己争取时间过渡或重建。
2、程序代码易读性太差,相关伏含说明文档缺失。虽然实现了功能,但别人接手太难(普遍情况)。新入职除了重建,要么深入读懂每个逻辑结构(比重建难,要跟着前一程序员思维走)。
以上二点你大概也清楚什么意思了。不知道你是维护老代码呢,还是新项目?
如果是维护老代码,多看文档、查资料、了解程序思维,反正有工资拿,也不急。
如果入职的是新项目,说明你技术还不成熟,那就加紧学呗。我个人预计:程序员这行,边学边卖的占总比90%
个人见识有限,错误难免,重在交流交流!
Ⅵ 程序员写100万行代码,到底是什么感觉
内心是自豪的,头发是掉光的。
一般来讲程序员写代码,写了几万行代码都已经很不错了,当然,一些工作时间长的是可以达到这个数量的。
搞开发这个东西虽然是创造的过程,但是实际工作还是比较辛苦的。
吃饭不准时,加班家常事,所以,还是以身体为重。
Ⅶ 写代码已经感觉写不动了,一写代码就好累,这种时候是瓶颈期,还是需要停下来休息的讯号
如果你敲代码没有写诗一样的感觉,那么证明你不是一个好的程序员
Ⅷ 如何看待程序员日均写7行代码被开除,大家对此事件有什么想说的呢
不是我不明白,这世界变化快。俺当年入职时,一些公司的确会问代码量。当时的标准大约是每周40到400行代码,可以少,但不能多——换句话说,平均来说,每周多于400行代码的可能得不到工作机会。因为你的代码质量和工作态度让人家心里发毛。当然,也没人太较真。功能点完成了、代码质量可以(bug少、代码逻辑清晰、文档齐全),多点少点无所谓。
先后在多家公司担任技术专家;平均来说,每周代码量也就200行上下。当然,也搞过一次一天写了2000行代码的壮举,结果是之后一个多月脑袋嗡嗡响,眼花,恶心。这个东西我事先花了一周多做设计、写文档,然后第二周的某天一气呵成,写完bug;然后累伤了,一个多月没法工作。换句话说,相当于还是花了6周;平均下来,仍然是每周300来行代码。
公司在与李某某签订劳动合同时并没有约定一定要进行深度学习识别算法代码编写,3D点云算法和多摄像头联合算法代码编写的具体工作内容,所以没有指明非要编写这些代码;拿什么同级别同行业的平均每日编写代码的统计数据来作为考核的依据,没有法律根据,任务不同,编写难度不同,不能以编写条数作为考核的依据;
至于工作内容,作为程序员并一定非要整天的在编写代码,也有可能在设计新的方案,或是对数据进行统计分析和总结等,不能以什么编码工作没有做,就认为李某某没有做出“成绩”;作为刚来才两个多月的程序员,前期的准备和熟悉是需要一个过程的,随着对公司的熟悉和项目的了解,编写代码的速度必然会提高,而不能在刚来两个月就以其他老员工的标准来进行考核;在发出解聘通知书后,马上将其办公电脑进行收回,这是严重的不尊重人,这属于单方面强制辞退,没有给李某某一点申辩的余地。以上,公司理应对李某某进行赔偿。