请问一下前辈们,你刚去做程序员的时候适应了多久才能开发?有哪些职场技巧?

Struggle1


我从 07 年的时候进入职场,成为了一名程序员,到现在已经十多年了,在最初进入职场的时候,我也和题主一样茫然过、无所适从过;我从一个刚毕业的学生转变成公司的一名员工,“入门”就大概花了两三个月的时间,如果算真正地适应职场的节奏,大概用了半年的时间。


01. 初入职场的困境

我在工作之前,掌握着 Java 的基本语法,以及那时候非常流程的 SSH 框架,当然只停留在“使用”这个程度,而我的第一个项目,拿到的源码是基于 Buffalo 写的,可能大部分同学看到这里会一脸蒙,这是个什么框架?我怎么都没听说过?这是一个国产的 AJAX 框架,具体大家可以不用了解,我只简要的概括一下这个框架:你只需要写也页面中的 JavaScript 就可以完成对数据库的增删查改,所有的业务逻辑也都在 JS 中的。

是的,在工作的第一个半年,我没有摸过 Java,一直都在写 JS!其实这并不是重点,那个阶段对于我最困难的是:以我当时的技术积累,在面对一个全新的技术框架的时候,学起来是非常困难的,甚至会无从下手。


02. 对于这个阶段的建议

  • 能力不够,态度来凑:虽然我个人是不建议加班的,但是在这个“未入门”的阶段,建议还是加加班,多看看项目的代码,争取早日上手;另外也可以让领导看到你的工作态度。

  • 不懂就问,但是一定要经过思考:新人难免有很多不懂的地方,所以你可以去问你的同事和领导,但是不要遇到问题就去问,而是先经过自己的思考,自己想了一些办法但是没有解决之后,再去问。

  • 相同的问题不要问第二遍:每次问题解决完之后,把解决的过程记录下来,避免相同的问题问多次,这是很让别人讨厌的事情。

  • 多和同事交流:可能很多人听过这样的说法,同事不可能成为朋友的,其实不是这样的,千万不要进入一个团队后,就“自闭”起来,也不交流工作以外的事情。建议大家还是能和周围的同事“打成一片”,当你接触的人多了,你会发现很多事情都非常好推进。


03. 独当一面才算是真正的成长

我真正适应了职场工作,是在一次独立出差之后,因为这代表了我有能力可以独当一面了,虽然这一面是非常小的一面。

08 年出差去上海,也就是我的第一个项目要交付实施了,其实在开发测试过程中,我已经去过上海两次了,不过以前都是跟着项目经理一起出差,而这次出差是我一个人来的;这一次我独立支持客户上线部署、生产环境验证,在此过程中遇到的问题都是自己来解决,经此一役,我才觉得我自己真正地从学校的学生变成了公司的员工。

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


会点代码的大叔


从业余程序员到职业程序员

程序员刚入行时,我觉得最重要的是把自己培养成职业的程序员。

我的程序员起步比同龄人都晚了很多,更不用说现在的年轻人了。我大学读的是生物专业,在上大学前基本算是完全没接触过计算机。军训的时候因为很无聊,我和室友每天跑去学校的机房玩,我现在还印象很深刻,我第一次走进机房的时候,别人问,你是要玩windows,还是dos,我那是完全的一抹黑。后来就只记得在机房一堆人都是在练习盲打,军训完,盲打倒是练的差不多了,对计算机就这么产生了浓厚的兴趣,大一的时候都是玩组装机,捣鼓了一些,对计算机的硬件有了那么一些了解。

到大二后,买了一些书开始学习当时最火的网页三剑客,学会了手写HTML、PS的基本玩法之类的,课余、暑假也能开始给人做做网站什么的(那个时候做网站真的好赚钱),可能那样过了个一年左右,做静态的网页就不好赚钱了,也不好找实习工作,于是就开始学asp,写些简单的CRUD,做做留言板、论坛这些动态程序,应该算是在这个阶段接触编程了。

毕业后加入了深圳的一家做政府行业软件的公司,一个非常靠谱和给我空间的Leader,使得自己在那几年有了不错的成长,终于成了一个职业的程序员。

通常来说,业余或半职业的程序员,多数是1个人,或者很小的一个团队一起开发,使得在开发流程、协作工具(例如jira、cvs/svn/git等)、测试上通常会有很大的欠缺,而职业的程序员在这方面则会专业很多。另外,通常职业的程序员做的系统都要运行较长的时间,所以在可维护性上会特别注意,这点我是在加入阿里后理解更深的。一个运行10年的系统,和一个写来玩玩的系统显然是有非常大差别的。

这块自己感觉也很难讲清楚,只能说模模糊糊有个这样的概念。通常在有兴趣的基础上,从业余程序员跨越到成为职业程序员我觉得不会太难。

编程能力的成长

作为程序员,最重要的能力始终是编程能力,就我自己的感受而言,我觉得编程能力的成长主要有这么几个部分:

1、编程能力初级:会用

编程,首先都是从学习编程语言的基本知识学起的,不论是什么编程语言,有很多共同的基本知识,例如怎么写第一个Hello World、if/while/for、变量等,因此我比较建议在刚刚开始学一门编程语言的时候,看看编程语言自己的一些文档就好,不要上来就去看一些高阶的书。我当年学Java的时候上来就看Think in Java、Effective Java之类的,真心好难懂。

除了看文档以外,编程是个超级实践的活,所以一定要多写代码,只有这样才能真正熟练起来。这也是为什么我还是觉得在面试的时候让面试者手写代码是很重要的,这个过程是非常容易判断写代码的熟悉程度的。很多人会说由于写代码都是高度依赖IDE的,导致手写很难,但我绝对相信写代码写了很多的人,手写一段不太复杂的、可运行的代码是不难的。即使像我这种三年多没写过代码的人,让我现在手写一段不太复杂的可运行的Java程序,还是没问题的,前面N年的写代码生涯使得很多东西已经深入骨髓了。

我觉得编程能力初级这个阶段对于大部分程序员来说都不会是问题,勤学苦练,是这个阶段的核心。

2、编程能力中级:会查和避免问题

除了初级要掌握的会熟练的使用编程语言去解决问题外,中级我觉得首先是提升查问题的能力。

在写代码的过程中,出问题是非常正常的,怎么去有效且高效的排查问题,是程序员群体中通常能感受到的大家在编程能力上最大的差距。

解决问题能力强的基本很容易在程序员群体里得到很高的认可。在查问题的能力上,首先要掌握的是一些基本的调试技巧,好用的调试工具,在Java里有JDK自带的jstat、jmap、jinfo,不在JDK里的有mat、gperf、btrace等。工欲善其事必先利其器,在查问题上是非常典型的,有些时候大家在查问题时的能力差距,有可能仅仅是因为别人比你多知道一个工具而已。

除了调试技巧和工具外,查问题的更高境界就是懂原理。一个懂原理的程序员在查问题的水平上和其他程序员是有明显差距的。我想很多的同学应该能感受到,有些时候查出问题的原因仅仅是因为有效的工具,知其然不知其所以然。

我给很多阿里的同学培训过Java排查问题的方法,在这个培训里,我经常也会讲到查问题的能力的培养最主要的也是熟练,多尝试给自己写一些会出问题的程序,多积极的看别人是怎么查问题的,多积极的去参与排查问题,很多最后查问题能力强的人多数仅仅是因为“无他,但手熟尔”。

我自己排查问题能力的提升主要是在2009年和2010年。那两年作为淘宝消防队(处理各种问题和故障的虚拟团队)的成员,处理了很多的故障和问题。当时消防队还有阿里最公认的技术大神——多隆,我向他学习到了很多排查问题的技巧。和他比,我排查问题的能力就是初级的那种。

印象最深刻的是一次我们一起查一个应用cpu us高的问题,我们两定位到是一段代码在某种输入参数的时候会造成cpu us高的原因后,我能想到的继续查的方法是去生产环境抓输入参数,然后再用参数来本地debug看是什么原因。但多隆在看了一会那段代码后,给了我一个输入参数,我拿这个参数一运行,果然cpu us很高!这种case不是一次两次。所以我经常和别人说,我是需要有问题场景才能排查出问题的,但多隆是完全有可能直接看代码就能看出问题的,这是本质的差距。

除了查问题外,更厉害的程序员是在写代码的过程就会很好的去避免问题。大家最容易理解的就是在写代码时处理各种异常情况,这里通常也是造成程序员们之间很大的差距的地方。

写一段正向逻辑的代码,大部分情况下即使有差距,也不会太大,但在怎么很好的处理这个过程中有可能出现的异常上,这个时候的功力差距会非常明显。很多时候一段代码里处理异常逻辑的部分都会超过正常逻辑的代码量。

我经常说,一个优秀程序员和普通程序员的差距,很多时候压根就不需要看什么满天飞的架构图,而只用show一小段的代码就可以。

举一个小case大家感受下。当年有一个严重故障,最后查出的原因是输入的参数里有一个是数组,把这个数组里的值作为参数去查数据库,结果前面输入了一个很大的数组,导致从数据库查了大量的数据,内存溢出了,很多程序员现在看都会明白对入参、出参的保护check,但类似这样的case我真的碰到了很多。

在中级这个阶段,我会推荐大家尽可能的多刻意的去培养下自己这两个方面的能力,成为一个能写出高质量代码、有效排查问题的优秀程序员。

3、编程能力高级:懂高级API和原理

就我自己的经历而言,我是在写了多年的Java代码后,才开始真正更细致的学习和掌握Java的一些更高级的API,我相信多数Java程序员也是如此。

我算是从2003年开始用Java写商业系统的代码,但直到在2007年加入淘宝后,才开始非常认真地学习Java的IO通信、并发这些部分的API。尽管以前也学过也写过一些这样的代码,但完全就是皮毛。当然,这些通常来说有很大部分的原因会是工作的相关性,多数的写业务系统的程序员可能基本就不需要用到这些,所以导致会很难懂这些相对高级一些的API,但这些API对真正的理解一门编程语言,我觉得至关重要。

在之前的程序员成长路线的文章里我也讲到了这个部分,在没有场景的情况下,只能靠自己去创造场景来学习好。我觉得只要有足够的兴趣,这个问题还是不大的,毕竟现在有各种开源,这些是可以非常好的帮助自己创造机会学习的,例如学Java NIO,可以自己基于NIO包一个框架,然后对比Netty,看看哪些写的是不如Netty的,这样会非常有助于真正的理解。

在学习高级API的过程中,以及排查问题的过程中,我自己越来越明白懂编程语言的运行原理是非常重要的,因此我到了后面的阶段开始学习Java的编译机制、内存管理、线程机制等。对于我这种非科班出身的而言,学这些会因为缺乏基础更难很多,但这些更原理性的东西学会了后,对自己的编程能力会有质的提升,包括以后学习其他编程语言的能力,学这些原理最好的方法我觉得是先看看一些讲相关知识的书,然后去翻看源码,这样才能真正的更好的掌握,最后是在以后写代码的过程中、查问题的过程中多结合掌握的原理,才能做到即使在N年后也不会忘。

在编程能力的成长上,我觉得没什么捷径。我非常赞同1万小时理论,在中级、高级阶段,如果有人指点或和优秀的程序员们共事,会好非常多。不过我觉得这个和读书也有点像,到了一定阶段后(例如高中),天分会成为最重要的分水岭,不过就和大部分行业一样,大部分的情况下都还没到拼天分的时候,只需要拼勤奋就好。

系统设计能力的成长

除了少数程序员会进入专深的领域,例如Linux Kernel、JVM,其他多数的程序员除了编程能力的成长外,也会越来越需要在系统设计能力上成长。

通常一个编程能力不错的程序员,在一定阶段后就会开始承担一个模块的工作,进而承担一个子系统、系统、跨多领域的更大系统等。

我自己在工作的第三年开始承担一个流程引擎的设计和实现工作,一个不算小的系统,并且也是当时那个项目里的核心部分。那个阶段我学会了一些系统设计的基本知识,例如需要想清楚整个系统的目标、模块的划分和职责、关键的对象设计等,而不是上来就开始写代码。但那个时候由于我是一个人写整个系统,所以其实对设计的感觉并还没有那么强力的感觉。

在那之后的几年也负责过一些系统,但总体感觉好像在系统设计上的成长没那么多,直到在阿里的经历,在系统设计上才有了越来越多的体会。(点击文末阅读原文,查看:我在系统设计上犯过的14个错,可以看到我走的一堆的弯路)。

在阿里有一次做分享,讲到我在系统设计能力方面的成长,主要是因为三段经历,负责专业领域系统的设计 - 负责跨专业领域的专业系统的设计 - 负责阿里电商系统架构级改造的设计。

第一段经历,是我负责HSF。HSF是一个从0开始打造的系统,它主要是作为支撑服务化的框架,是个非常专业领域的系统,放在整个淘宝电商的大系统来看,其实它就是一个很小的子系统,这段经历里让我最深刻的有三点:

1).要设计好这种非常专业领域的系统,专业的知识深度是非常重要的。我在最早设计HSF的几个框的时候,是没有设计好服务消费者/提供者要怎么和现有框架结合的,在设计负载均衡这个部分也反复了几次,这个主要是因为自己当时对这个领域掌握不深的原因造成的;

2). 太技术化。在HSF的阶段,出于情怀,在有一个版本里投入了非常大的精力去引进OSGi以及去做动态化,这个后来事实证明是个非常非常错误的决定,从这个点我才真正明白在设计系统时一定要想清楚目标,而目标很重要的是和公司发展阶段结合;

3). 可持续性。作为一个要在生产环境持续运行很多年的系统而言,怎么样让其在未来更可持续的发展,这个对设计阶段来说至关重要。这里最low的例子是最早设计HSF协议的时候,协议头里竟然没有版本号,导致后来升级都特别复杂;最典型的例子是HSF在早期缺乏了缺乏了服务Tracing这方面的设计,导致后面发现了这个地方非常重要后,全部落地花了长达几年的时间;又例如HSF早期缺乏Filter Chain的设计,导致很多扩展、定制化做起来非常不方便。

第二段经历,是做T4。T4是基于LXC的阿里的容器,它和HSF的不同是,它其实是一个跨多领域的系统,包括了单机上的容器引擎,容器管理系统,容器管理系统对外提供API,其他系统或用户通过这个来管理容器。这个系统发展过程也是各种犯错,犯错的主要原因也是因为领域掌握不深。在做T4的日子里,学会到的最重要的是怎么去设计这种跨多个专业领域的系统,怎么更好的划分模块的职责,设计交互逻辑,这段经历对我自己更为重要的意义是我有了做更大一些系统的架构的信心。

第三段经历,是做阿里电商的异地多活。这对我来说是真正的去做一个巨大系统的架构师,尽管我以前做HSF的时候参与了淘宝电商2.0-3.0的重大技术改造,但参与和自己主导是有很大区别的,这个架构改造涉及到了阿里电商众多不同专业领域的技术团队。在这个阶段,我学会的最主要的:

1). 子系统职责划分。在这种超大的技术方案中,很容易出现某些部分的职责重叠和冲突,这个时候怎么去划分子系统,就非常重要了。作为大架构师,这个时候要从团队的职责、团队的可持续性上去选择团队;

2). 大架构师最主要的职责是控制系统风险。对于这种超大系统,一定是多个专业领域的架构师和大架构师共同设计,怎么确保在执行的过程中对于系统而言最重要的风险能够被控制住,这是我真正的理解什么叫系统设计文档里设计原则的部分。

设计原则我自己觉得就是用来确保各个子系统在设计时都会遵循和考虑的,一定不能是虚的东西,例如在异地多活架构里,最重要的是如何控制数据风险,这个需要在原则里写上,最基本的原则是可接受系统不可用,但也要保障数据一致,而我看过更多的系统设计里设计原则只是写写的,或者千篇一律的,设计原则切实的体现了架构师对目标的理解(例如当时异地多活这个其实开始只是个概念,但做到什么程度才叫做到异地多活,这是需要解读的,也要确保在技术层面的设计上是达到了目标的),技术方案层面上的选择原则,并确保在细节的设计方案里有对于设计原则的承接以及执行;

3). 考虑问题的全面性。像异地多活这种大架构改造,涉及业务层面、各种基础技术层面、基础设施层面,对于执行节奏的决定要综合考虑人力投入、机器成本、基础设施布局诉求、稳定性控制等,这会比只是做一个小的系统的设计复杂非常多。

系统设计能力的成长,我自己觉得最重要的一是先在一两个技术领域做到专业,然后尽量扩大自己的知识广度。例如除了自己的代码部分外,还应该知道具体是怎么部署的,部署到哪去了,部署的环境具体是怎么样的,和整个系统的关系是什么样的。

像我自己,是在加入基础设施团队后才更加明白有些时候软件上做的一个决策,会导致基础设施上巨大的硬件、网络或机房的投入,但其实有可能只需要在软件上做些调整就可以避免,做做研发、做做运维可能是比较好的把知识广度扩大的方法。

第二点是练习自己做tradeoff的能力,这个比较难,做tradeoff这事需要综合各种因素做选择,但这也是所有的架构师最关键的,可以回头反思下自己在做各种系统设计时做出的tradeoff是什么。这个最好是亲身经历,听一些有经验的架构师分享他们选择背后的逻辑也会很有帮助,尤其是如果恰好你也在同样的挑战阶段,光听最终的架构结果其实大多数时候帮助有限。

技术Leader我觉得最好是能在架构师的基础上,后续注重成长的方面还是有挺大差别,就不在这篇里写了,后面再专门来写一篇。

程序员金字塔

我认为程序员的价值关键体现在作品上,被打上作品标签是一种很大的荣幸,作品影响程度的大小我觉得决定了金字塔的层次,所以我会这么去理解程序员的金字塔。

当然,要打造一款作品,仅有上面的两点能力是不够的,作品里很重要的一点是对业务、技术趋势的判断。

希望作为程序员的大伙,都能有机会打造一款世界级的作品,去为技术圈的发展做出贡献。

由于目前IT技术更新速度还是很快的,程序员这个行当是特别需要学习能力的。我一直认为,只有对程序员这个职业真正的充满兴趣,保持自驱,才有可能在这个职业上做好,否则的话是很容易淘汰的。

作者:毕玄,2007年加入阿里,十多年来主要从事在软件基础设施领域,先后负责阿里的服务框架、Hbase、Sigma、异地多活等重大的基础技术产品和整体架构改造。


51CTO


我刚进入公司时对Java是一窍不通,现在也已经是拥有多年经验的资深Java开发了,说说我的经历吧,希望能对你有所帮助。

我是以Android开发的身份进入第一家公司的,由于公司那段时间没有进行中的Android项目,所以让我转了Java Web开发,当时我的处境可比你惨多啦,Web开发我可以说是一窍不通啊,而且那时候还不流行前后端分离,一个人既要写后端又要写页面,同时还要兼顾数据库设计等其他的一大堆工作。项目代码拿到手,几乎是看不懂,连基本的项目结构都搞不清楚,那么我是怎么做到快速熟悉项目的呢?


主动学习

首先要做到的就是主动学习,把项目中用到的技术点列出来,不会的自己一定要去主动学习。

作为程序员,我相信找文档、查资料的本领还是有的吧,那么我们可以适当利用一下晚上的休息时间来学习,不要怕辛苦。特别强调一点,学习的时候一定要自己动手去实践,这样知识点才能掌握牢固。


脸皮要厚

其次要做到的就是脸皮要厚,对项目中任何有疑问的地方,及时向其他同事请教,千万不要爱面子而不好意思问。

新人刚进公司脸皮薄,加上同事之间不怎么熟悉,所以遇到问题不好意思问,自己一个人在那瞎折腾,最后时间花了还走了弯路。


提问的技巧

前面虽然说了脸皮要厚,遇到问题要及时提问,但是呢有一个前提,一定要带着自己的思考提问。

遇到问题,首先要自己尝试解决,解决不了的再向同事提问,提问时可以说说自己的思路,再把不明白的点和同事一点探讨,这样对于问题才会有一个更加深刻的理解。


总结

要想快速熟悉公司项目,先列出项目中用到的技术点,首先对于不会的技术进行针对性的学习,其次有疑问要多向同事提问,同时提问一定要带有自己的思考。


代码那些事儿


我是11年7月入行的,那会刚毕业然后半年培训出来的,刚踏入社会很渴望立马就工作进去职场,只要有公司收留我我就很开心所以第一家公司待了有7年时间。入职没多久就跟着一个比我早的同事学习跟着做,公司人都很好我也比较好学所以没多久就熟悉了公司的框架和业务。一开始会分派一些维护工作带着熟悉系统,后来渐渐熟练了就直接负责一个模块到后来就是项目负责和系统设计。程序员这一行必须有些浓烈的兴趣进入职场,目前快10年还有3年左右本人就不想干了,有点无聊不刺激,哈哈哈(ಡωಡ)hiahiahia


LancCJ


作为同行,算不上前辈,仅仅比你多工作了两年时间,刚入公司做项目时也很迷茫,看不懂,连从哪下手都不知道,着急入手所以直接一行一行去读别人代码,遇到不知道的技术就去百度,虽然效率低下但是总比没有进展强,现在回头想想其实当时挺蠢的,我们要明白技术主要是为了实现业务,无非就是对几个表的增删改查,不会写增删改查没关系,我们不要看到不会的就立马去查去百度,那样我们就会迷失在代码里面,永远走不出来。最简单的入门就是你找到一个最近简单的业务,这个你可以问产品,问技术,大家应该都会说,顺着这个业务去跟代码,你就会很容易找到入口和出口,理解代码的速度就会更快


乌鲁奇奥拉湮


感谢题主的邀请,鉴于题主的问题是很多代码看不懂,我以前是按照以下方法做的。

我当初进入一个公司,都是先不急着看代码,先花个2天把公司项目的需求,接口文档,业务逻辑自己过一遍。

题主虽然是一个实习生,但是也要有紧迫感。10年前我才出来撸代码的时候,都是时刻担心被炒。毕竟公司不是慈善机构,对我们都有考核期。你要尽快把需求,接口文档把业务逻辑走一遍。


善于做笔记,哪里不懂的要记录下来,遇到核心不懂的代码,就问技术负责人。问他的时候最好是一次性问,而且要问有价值的问题。因为问多了别人也烦。我当初是深有感触。

不懂得代码通过搜索引擎,Stackoverflow或者CSDN论坛去找答案

你不懂的代码。你要自己多尝试去通过搜索引擎去解决。看看这个框架怎么介绍的,以及如何使用。其实搜索引擎能解决我们日常工作的大部分问题。

通过自己Debug调试去熟悉代码

看代码不能就一直盯着代码看。你要动手实践,通过代码断点调试去看代码。多看看代码的注释,我想很多核心功能都会有注释的。如果代码能拷贝回去,晚上回家了也加加班,多研究代码。

多跟熟悉产品的同事交流

多与公司的销售,设计,产品经理,测试交流。我想测试跟产品就是个”活文档“,他们能让你快速的了解公司的产品,对你熟悉代码有很大的帮助。

加入一些技术群,里面一般都有大佬的

你可以加入一些技术群。不懂的代码,你可以问群里的大佬,哪怕是有偿的也可以。但是有些代码涉及到公司的机密,您注意把握这方面的尺度就好了。对于大佬告诉了你的答案,你一定要弄清楚里面的逻辑

上班时间努力熟悉代码,下班了晚上回去了,业余时间可以买相关书籍资料看


个人建议:

题主有危机感的同时也不要太过着急。我想技术官既然把你招进来了,说明你还是得到公司的认可了的。其次我认为,想要彻底把整个项目完全弄懂是不可能的。毕竟是接手别人的项目。但是只要你能通过断点调试找到核心代码的地方,不影响您日常开发就好了。加油!我相信通过以上方法再加上您的努力肯定会很快熟悉代码的。


希望我的回答对你有所帮助,欢迎关注我这个IT从业者一起学习交流!

胖子李爱互联网


本人10年开发培训经验,期间经历了Java Web,Android,H5,大数据,PHP等多个不同的方向的开发,也做过软件培训公司的金牌讲师,很有兴趣回答你这个问题。

你现在实习的过程中碰见的这种茫然状态,是很多新人刚入行时候的一个常见现象。造成这个问题的原因,有这么几点吧。

1.技能不足

你目前主流的框架掌握的是SSH,目前SSH这套组合其实已经比较陈旧了,尤其是在一线城市,新项目基本不会采用SSH组合了,最次也得SSM,一般都会上SpringBoot,或者SpringCloud,然后技术储备丰厚的公司,往往都采用自己的框架了。你们公司就有特别的ext,所以你学习的技术得与公司的需求保持一致。

2.项目经验不够

刚从学校出来,可能也做过一些小型的项目,但是碰见实际的大型的项目,光是看代码可能都觉得头大,更不能很快的理顺项目思路,不知道从哪里下手。别人的代码也看不懂,也不知道该怎么梳理项目思路等。

3.业务不熟悉

对自己公司的项目,具体的业务也不够熟悉,不是很明确的了解项目中各个功能,业务之间的关系,具体该怎么一个处理流程不够熟悉,也会造成这个茫然的问题。

4.工具不熟悉

开发过程中需要使用很多的开发工具,尤其是团队协作,新手常见的问题就是SVN,Git这样的工具使用不熟练,不敢用,害怕把别人的代码一下子给弄坏了,经常提心吊胆的状态。

5.环境不熟悉

刚到一个新的公司,公司的环境,人员都不熟悉,碰见了问题也不知道问谁,也不敢去打扰别人,害怕别人批评自己等。

6.其他因素

可能还有其他一些因素,会导致一个实习生刚进公司的时候比较茫然,工作不能很顺利的开展。


说了这么多因素,那么如何解决呢?解决办法可以参考如下:

1.多与同事交流

作为一个新人,尤其是实习生,不熟悉业务,不熟悉技能是正常的,大家也都知道这一点。所以不用害怕露怯,那么就大胆的去问你的领导,问你的师傅,即使让人家怼几句,也无所谓,把自尊心调整的”大条“一点!

2.快速融入环境

与同事尽快熟悉起来,搞好个人关系,碰见男同事就散烟,碰见女同事就请喝奶茶,多帮别人跑跑腿,你和别人关系好了,遇到问题别人才愿意帮你!

3.加强技术学习

最重要的是你得加强自己的技术能力,项目中涉及到的技术,自己回到家就多钻研多学习,网上应该有很多资料,去下载学习。技术实力提升了,这样工作的时候,碰见的小问题就自己解决了,不能事事麻烦别人。

4.多加班

既然自己短期内无法快速解决问题,那就多付出点时间呗,别一下班就急着回家,你领导看见你这样也不喜欢啊,新人就要多表现。


希望以上的回答可以解决你的问题吧!


我从事互联网开发10年,主要的研究方向集中在Java web微服务架构领域,Android移动端研发,HTML5前端方向,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信你一定会有所收获。

如果有Java,Android,H5等开发方面的问题,或者是开发求职方面的问题,都可以在评论区留言,或者私信我。


一一哥Sun


算不上前辈们,只能说是多吃了两年饭。新人刚入行可能会手忙脚乱,什么都不会,不用慌张,这些都是正常的。

第一个建议就是多跟同事熟悉了解,不要自顾高冷,这对你没好处,嘴巴甜一点,勤快些,自己有啥问题他们也愿意帮你回答,毕竟你是应届生,不会是正常的。

第二条建议就是凡事务必先百度、谷歌,你在编程中所能遇到的99.9%的问题,搜索引擎都能给你解决,剩下的才能去问同事啥的,要尽量避免问别人,因为别人也有事,不可能一天被你大段时间还心平气和。

第三条就是要能坐得下冷板凳,编程技术都是苦熬出来的,除了必要的工作,私底下也要不断的学习,要随时了解自己行业的最新技术变化,紧跟着变化。个人建议多关注一些质量高的公众号、学习网站等。

配图是安卓开发的[捂脸],本人安卓开发



我叫陈壮士


我一直用的几招,可以分享。

  1. 首先把这个信息管理系统大致了解下,至少做到看到页面或功能时,知道代码大致在哪个地方。以及公共部分的库,接口。

  2. 一般不会把整个项目都让你接手。所以重点就落在你接手的那部分了。这就需要每一行一行地去看,要是有注释还好,没有注释的话,日志、输出、断点都要试试。要深入理解。

  3. 如果以上两步你都能做到,那么恭喜你,你可以开始修改之前留下的BUG或者需要优化的部分。


李老师tome


入行时,新单位对要开发的项目的认知还非常不圆满。原来的负责任,很快就调任其他工作了。

1、Extjs是Sencha的那个产品吗?你说的“整个”有点模糊,什么意思?

2、Sencha的ExtJS是付费的用户吗?什么版本?

搞清这几点,其他就简单了。

ExtJS倾向于独占“整个项目”。这个可以接受,就可以开工了。

a、用途ExtJS的组件,设计(纸面画图)、实现所有的用户功能(前端可视冰点)和操作流程。

b、用ExtJS实现(a)的前端设计。

c、逐一搞定“前端”需要的“数据源”。

做好了(a、),(b、)的开发可以并行展开。(c、)需要多请教前辈,如果在开始(a、)的工作前,对现有数据库(所谓“整合”的原因?)系统有所了解的话,会有事半功倍的效果。


分享到:


相關文章: