新入职的JAVA程序员刚入职一个月,完全看不懂公司代码怎么办?

孤单北半球108634571


不管任何语言写的东西,都有个入口,找到程序运行的源头,用短点调试,从入口开始跟踪程序代码执行的路径,抽象化地感觉上手码农写的代码的方式与想法,找到自己要改的功能点,然后再根据自己的能力决定是否推翻重做还是就地整改。多点参与github上的项目,练习读懂别人的代码,训练一下逆向思维。不要老想着自己是天下无敌,别人的代码都是垃圾,总想着推翻重构。除非旧版本真的很垃圾,完全无法使用或效率非常低,可以建议领导或老板根据实际情况做新版本重构的计划,再逐步过渡替换老系统。

不能快速读懂别人代码的程序员,不是一个及格的程序员


哈顿大叔


哈哈哈哈,让我先笑一会。ヾ(^Д^*)/ ,好言归正传。

新员工完全看不懂代码,我推测你可能是刚刚学习编程不久。或者是刚刚从培训班出来参加工作。

对于你这种情况我非常感同身受。那么作为一名经历过你一样的痛苦的工程师,我会给你一些下面的建议,帮助你从各个方面得到公司同事的认可。

一、端正态度

没办法了,我摊牌了!

神人也不可能让你立刻看懂公司项目的代码,熟悉完整流程。那就先从态度上入手。

1、每天一定要早点到公司,身边准备一个notbook,写一写,画一画。

2、每天晚上要晚点走,把今天遇到的问题列个清单,做个总结。

3、千万不要相信“有什么问题尽管问!”这句鬼话!任何问题,都要先自己去查阅资料,通过自己的努力要解决至少80%的问题。

4、面对上级或者长辈的批评,一定不要掉小脸子!要记住他们,回家再写在小本本上!

5、做事要积极主动,比如主动请求领导分配给自己一些小的功能做,不要怕做错,可以在请求任务的时候顺便表示一下“有不会的地方一定要多多指点”。

6、适当的夸夸同事的编码能力,因为这样可以拉近你和同事之间的距离。

二、从if-else入手

说实话,我就是先从最简单的if-else开始的,把这个记牢。

大部分编程工作就是在不断的if-else、if-else、if-else.......那句话怎么说来着?没错,人类的本质就是复读机!

如果你细心一点,你可以发现项目中大多数if-else还是可以看懂的。

三、看代码的时候假装自己是一名特工

这个不可外传,不过我还是希望能帮助到你。

这个方法就是我在看别人代码的时候养成的一种小习惯。假设自己是一名正在执行机密任务的中央特工,需要在短时间内破解敌人的内部代码,维护世界和平!

有了这种心理暗示,你将会不自觉的进入一种战斗状态!肾上腺素暴增!注意力高度集中,效率翻倍!

那么你的焦虑也会随之减少,因为没有时间紧张、恐惧,世界正在等着我去维护正义!

四、重视积累

这一点要从编程经验来谈。

对于软件行业来说,编程经验都是需要不断积累的,而且每个人都是这样走过来的,不用害怕。

你不必一天吃成一个胖子,只需要每天提高自己,将昨天的学习不断总结,你就会看到惊人的变化。

正所谓“不积跬步无以至千里”,其实你的领导和同事也没有要求你是个天才,你只需要像一个正常人一样,犯过的错误,不要重复犯错,掌握的知识能够乐于分享就可以了。他们一定会看到你的成长,并给予你鼓励,这个世界还是挺宽容的。

综上,就是我提供的帮助,希望点赞、关注哦!


高级Bug调查员


兄弟,坚持住!感觉你还没有入门儿,但是也不用或许焦虑,编程这就是这样,刚开始特别难熬,熬着熬着越来越轻松,毕竟编程门坎还是有一些的。

说说我的经历吧可能比较久远了,12年大学毕业来北京工作,学的计算机科学与技术,当然除了helle world程序别的真的就很费劲儿,基本分为以下几个阶段。


1,初窥门径(小白价格,学会为目标,初级开发工程师)

2,登堂入室(完成任务为目标,初中级开发)

3,得心应手(轻松完成任务,工作逐渐由脑力劳动转为体力)

4,融汇贯通(高开,逐渐摆脱纯体力工作,思考架构问题)

而且我是从来没接触过的delphi,java大学还学了一点,delphi就是个全新的东西了,那段时间差不多一个半月吧真的挺难熬,天天加班到十点以后,其实当时压力大,看到别人都会而自己跟不上特别急躁,越急躁大脑越不清晰,加班也没啥效率,根本就是磨时间,无奈抛开任务看书,看基础知识,就这样坚持认真看了大半本delphi指导书才有初窥门径的感觉,开始觉得一天比一天轻松了,慢慢能够理解之前的一些东西了,遇到简单问题也不会手足无措了。感觉兄弟还没过这个阶段。可能公司的架构和培训的有出入,毕竟培训是入门级别的应用,每个公司根据自身业务会调整代码结构,做高聚合的分层,这样对入门级别的小白来说难度就大了很多,但是别灰心,坚持学习相关知识,投入更多的时间去看公司代码,从一个外部请求开始,还原代码链路,在这个过程中梳理公司技术架构,多做笔记多请教,有两周时间你的信心就回来了!


大狂客,七年软件开发,三年架构!持续为大家解惑,欢迎关注!


狂客说技术


这个问题让我想起了刚毕业参加工作那会儿,进公司头几天也是一年懵逼的状态。在这里就分享一下我是如何从学生模式调整成员工模式的吧。

连cvs都不懂的我

十多年前参加工作的时候,公司还在使用cvs来作版本控制。进公司第一天就要求把代码下载下来研究,负责带我们的老同事就问了一句:cvs会吗?为了不丢面儿,我和一个一起进公司的同学异口同声的回答:会!毕竟毕业实习的时候好像用过。

一上午就这样过去了,一个代码影子都没看到。最后还是虚心的请教了前辈,才拿到了代码。

说实话,我们当时看到的代码就是你说的control、service、dao,标准的MVC框架!可是我们在学校没见过呀,我只知道java可以写application,最多知道可以写servlet,MVC什么的听都没听过。

看不懂的就删

我最开始接触的这个项目也有4、5年的开发历史了,里面的千疮百孔只有经历过的人才知道。看着代码里面一段段让人心酸的注释,让我下定了决心要删掉它们。就这样,一段段的历史,被我成功改写。

删不掉的就硬着头皮上

实际上,能够被我们这些新手重写的代码并不多,大量的代码是看上去就像天书一样看不懂逻辑,也没有注释,而且还很长。我相信前辈也不愿意写的这么复杂,只是因为复杂的业务逻辑导致了这夸张的代码。所以就要赶紧了解业务逻辑,当你十分了解这段代码的业务逻辑之后,也就基本上明白了这段长代码的意义了。

所以我觉得刚入职一个月还没入门没有关系,每个公司的框架都可能有不同的风格,一定要虚心请教老同事,大胆尝试自己的想法,努力学习和了解公司的业务,这样你才能快速的成长起来。

我是程序员爱编程,一个资深非专业码农,科技领域段子手!如本回答能够讨得您的欢心,劳请点赞、转发、关注我,如有不同看法可以在评论区留言,谢谢!

程序员爱编程


我非计算机专业打的,刚转行做前端时语法都不太懂,然后刚进公司,老大先给了一本介绍思维导图的书给我看了一天,后来一周看官方帮助文档用思维导图做总结,后来几个月就开始画官方api的UML图,后来画项目的UML图。不过很少有公司能这么有耐心培养你


Roy42757


首先我自己也是培训班出来的,工作了三年,很有资格说下我的感受。刚出来时,确实有楼主说的情况,看不懂相关公司的代码,培训班培训的跟实际可能存在着差异。代码本身并不难,大部分有javase知识都能看不懂。难的是公司代码逻辑的机构和层次。可能他自己封装了底层,可能他们自己做了框架。可能他们自己重写了jdk的方法。这很可能是导致新来员工看不懂的原因,其次就是代码讲究独立性,解偶性,可重复性。可能一个功能的实现,要有大量的架包和方法支持,你从controll看一个方法,他调用了service层,service层做逻辑判断,可能调用其他包的方法。。。其他包的方法可能又调用了其他包的方法,如此循环下去,导致看不懂。最后就是新技术的引用,现在主流技术是spring微服务,zk,redis,kafka等,可能楼主对这些远程调用,负载均衡不太熟悉导致看不懂。

对于这三个问题,首先第一个问题。楼主可以多问问老员工,不要害怕他们冷嘲热讽,只要能赚到钱,这点委屈不算什么,毕竟公司封装的自己的东西,真的和所学有所差别。第二个问题,楼主要夯实自己的基础,知道自己去看代码,代码不是一行一行看的,看三层,主要侧重看返回值,第三个问题,楼主要树立终身学习的观念,程序员不学习,两三年就会被淘汰,现在技术水平更新那么快,所以只要有心,这些都不算什么!


大圣湖闲人


稳住,不要慌。

刚参加工作的Java程序员,看不懂公司的代码是很正常的一件事儿,不过题主已经入职一个月了,如果依然是懵懵懂懂的状态,那么一定要紧张起来了。


为什么看不懂公司的代码

  • 题主说自己是培训机构出身,通常来说,培训机构为了把一个学员短期内培训出来,通常培训的内容都是停留在“会用”这个程度。大部分时候会告诉学员,这样做可以,那样写可以;但是如果稍加变化的话,有时候学员就变得无从下手的;

  • 培训机构的项目,通常业务比较简单,甚至没有什么业务,只是几个框架做了集成,实现对数据的增删查改,而公司的项目一定是需要了解业务流程的;

  • 题主说自己了解Control,Service,Dao这些代码分层,因为这是培训机构教科书似的项目,而且确实应该这样遵守;不过现实中,特别是老项目,有些公司是不注意这些代码规范和分层的,或者虽然有分层,但是程序员没有严格要求,比如Service层直接访问了数据库,Dao中包含了复杂的业务逻辑;所以你会觉得“杂七杂八的一大堆”。

那么需要如何解决呢?给题主几条建议:

  • 首先,最容易改变的就是工作态度,既然工作比较吃力,那么多投入一些时间,没事儿多加加班,至少让领导觉得你是一个肯吃苦的新人;

  • 不懂就多问:通常新人进公司,都会安排一个老人带的,如果没有特殊指定的话,你可以选择问直属的领导,或者项目组中看起来比较和蔼的前辈,都可以直接问;

  • 询问之前,你至少看过代码,带着问题去问,千万别上来就说:“代码我看不懂,你给我讲讲”;

  • 自己看代码的时候,首先要在自己电脑上,把项目跑起来,知道功能入口是什么;比如有些系统有前端页面,那么功能入口就是前台页面的某个操作;有些系统没有页面,那么入口可能是接口或定时服务;一定要了解如何操作,然后给代码加上断点,一步一步地跟踪下来,了解一个功能是如何触发、处理、返回;

  • 每次问问题之后,如果当时不能理解,一定要先记录下来,然后再反复地看代码;简单的问题,千万不要重复问;

  • 利用一切可以利用的文档和注释;包括需求文档、设计文档、操作手册、数据库设计文档等。

刚工作的这段阶段是很痛苦的,一定要多投入些时间,早日突破这个瓶颈期。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。


会点代码的大叔


程序员都是从新人过来的,不要着急,我认为可以从三个方面来解决:


1 有师兄

大公司一般都有师兄制。所谓师兄制就是项目组会为新同事分配一个固定的师兄,带着熟悉业务和相关技术框架。师弟对代码掌握情况和能否快速融入团队是师兄考核指标。我认为这是非常好的传帮带模式。

如果没有师兄制,建议你主动为找一个师兄,虚心向他请教和学习,师兄可以帮你少走技术弯路。


2 有态度

师兄平常也有自己繁忙的工作,所以关键还是要靠自己。师兄可以帮你少走弯路,但是大量的学习工作还是要靠自己,所以刚进项目组要比别人多花时间钻研,看代码,看文档,看架构图。


3 有方法

首先从项目全貌来观察项目,最好有业务架构图和技术架构图。业务架构图帮你梳理整个业务解决了什么问题,进入了什么阶段。技术架构图拆解了每个技术模块,要熟悉每个技术模块作用,以及自己要做的模块处在整个技术架构的什么位置。

其次要读代码。从功能最核心的入口开始,把项目跑起来,断点把代码跟进下去,我认为这是比较有效的方法。

最后要动手练。光看是不够的,要从一个简单的功能开始做起来,边做边熟悉,并且要跟进整个项目周期(需求、设计、开发、测试、打包、上线、监控)为后续复杂功能做准备。


敬请关注

请点击关注按钮【IT徐胖子】会持续为大家奉献互联网和技术干货内容,感谢支持


IT徐胖子


我从三个层面来说:

  • 阅读业务代码的方法

  • 脸皮要厚,不会就问

  • 可以考虑换公司

阅读业务代码的方法

之前我回答了一篇关于《如何快速阅读源码》的问题,那个主要是针对阅读开源框架的,针对公司的业务代码,其实流程差不多,我简单说下不同点。具体流程题主可以去找一下,我就不贴在这里了。

主要流程分四步:

  • 先「跑起来」:在这里就是先要去了解项目的业务流程,能够先搞懂业务是什么样的
  • 自顶向下拆解:从业务流程对应到代码里面去,先找模块、再到包、然后是类、最后是方法。注意这里不要在意细节,能够把类,方法按照业务流程给串起来就行。
  • 深入细节:然后再到方法里面去看具体的细节
  • 延伸改进:这是在你梳理完了代码之后,再考虑的事情。可以想想为什么代码这么写,有没有什么更好的方法。

脸皮要厚,不会就问

公司肯定有老员工,逮到了就问,别怕人烦,现在你不搞清楚了,后面正式开始写代码的时候,写出来一堆问题,同事和领导的意见会更大。

我就遇到过几个人,真的是郁闷。不问他,一句话都不说,一问全是问题。一些小问题卡了好几个小时,也不说,就闷在那里不知道在干嘛。

按照上面的流程,先找人把业务给理清楚了,然后再去理代码。注意代码问题也主要关注业务流程层面,而不是语法层面,语法层面的自己去搜搜就可以了。

问的标准是自己十到二十分钟搞不定的问题,就立刻去问!!!

可以考虑换公司

工作本来就是双向选择。如果代码逻辑很乱,又没人能把业务和代码给你讲清楚,或者没人愿意给你讲。那说明这家公司的管理很乱,你可能接的是个锅,你在这家公司不一定能学到东西,要不要继续待在这里是很值得考虑的。


架构思维


对于新入职的程序员,如何能快速的熟悉公司业务,并能读懂公司原有项目的代码呢?以下三点建议可以参考一下。

1、熟悉公司业务

新入职公司,一般都会有个老人带你或者公司组织培训。这是全面了解公司业务的好的时机。公司产品属性,面向群体,盈利模式,都需要了解清楚。

2、亲自使用公司的产品

作为新入职的研发人员,对于公司的线上系统或者app一定要实际操作或者下载使用。对于每个功能都要使用一边。通过使用的过程,自己去设想它背后的实现逻辑。

3、结合系统读代码、调试代码

读代码不是拿到一个工程代码就开始读。首先,我们搞清它的构建方式。目前很多java工程代码都是基于maven或者gradle构建,确保本地有相应的环境。其次,尝试本地启动工程。在启动过程中,第一次多半不会成功。不成功的话,一般都会有错误信息输出,我们根据log信息来判断不能成功启动的原因。最后,我们开始阅读代码。阅读代码的时候我们需要结合系统的功能。我们打开系统,分别点击每一个功能,然后通过浏览器的开发者工具或者一些文档,找到这个功能调用的接口。然后在代码中找到相应的接口,再具体读其实现代码。

总之读别人的代码开始都比较痛苦。只要我们找到一个入口,一切就会变得容易。千万不要拿到代码,就从第一个代码文件开始读。这样,永远不会明白其中的逻辑实现。


分享到:


相關文章: