本人是一名才出校门的大学本科毕业生,之前实习过半年,这里有两个问题求教在软件开发行业上滚打多年的前辈:
一个关于工作学习技巧的,一个关于职场文化心理的问题,希望能得到大家的回答。
1.问题简介:提高工作效率是为了下来时间充电,如何快速解决问题,而不被解决方案中的新知识点所绊倒。
在工作中遇到一个编程问题需要解决时,我的第一反应是从自己的知识储备中找解决方案,但可悲的是大部分工作中遇到的问题自己的知识储备无法解决,因为才出学校,学 校学到的和平时积累的知识不多,之后我会去百度或者github、博客园上找解决方案 。假如我遇到的问题是A,在找A答案的过程中,可能A答案的解 决方案会包含B、C、D。。。等技术知识点我不会,之后我会继续去了解B、C、D这几 个知识点,然后回头整理得出解决A的方法。
这里的困惑我这样处理问题会让工作进度很慢:
有时候我知道解决问题A,不必要深入了解B、C、D知识点,只需知道如何调用B、C、D知识点中部分方法就够了,但是有时候必须了解B、C、D知识点才能解决,不深入了解则做不出来,这里真不知道要了解到什么程度才够。而且我平时喜欢多深入了解一些遇到的新知识以备以后用,这样造成了我工作中解决一个问题会花费很多时间或者在了解新知识时候打乱我原有解决A的思路。这里想看下各位是怎么看待和处理这个问题的,如何做到既能学习到新的知识点,又能在快速解决问题。
2.求教方式方法
来公司没多久,有很多公司框架和遇到的新问题,难免会问到老员工,但是有时候
经常去问,感觉让别人觉得你以前技术不精,怀疑你的能力,我承认自己才出来是菜
鸟,但如何既能向别人学到知识,有不被人反感呢,因为,我认为一个事情处理方法的好坏会影响其结果,比如向老员工请教问题这点上,你可以让别人觉得你好学肯干,也可以让别人认为你无脑、无能,这个问题大家是怎么面对解决的呢。
对于第二点,我不是因为虚荣心怕别人认为无能,而是马上面临转正,希望大家有个好印象。
希望大神、老鸟都能支支招(豆子不多啦),解决我心中的疑惑。
工作态度,学习方式都没有问题。
下面就是你学习的效率,是否比别人慢,或者问题反复问,或者问的问题总是没有切入重点,让其他人觉得你能力不够什么的,这种情况下要好好反思,自己是否适合干这一行了。
或者主动提出降低工作难度,或者减少负责范围,让自己工作范围小一点,专注学习一点,然后慢慢扩展开来
其实入职后,代码上的问题不是我主要困扰的,而是如何找到做程序员的节奏,工作效率提高了,下来才有跟多时间做自己想做的事情,感谢你的回复。
我也是刚实习 刚4个月,不会的就问,我并没有感觉怎么样,反而经理对我影响很好,一般遇到问题就百度,查不出来就问,一步一步来稳扎稳打不想太多别的东西吧。
感谢回复,你心态很好,我这里提出这个疑问只是想做好,可能我太注意别人的看法了,对于工作中解决问题方面,看了其他回答已经有了自己的答案,一天工作时间正常情况下就8小时,在8小时内想把遇到的新知识都搞懂是不可能的,每个知识都会有扩展,解决工作上的问题才是首要的,下来慢慢梳理不懂的。
第一,你没有金币,第二,你想太多了。走路都不会,还想着怎么省力气。
任何问题的解决都有最优方案。省力气是人类进步必然的选择。
welcome to earth.
@takeurhand: “偷懒”是程序员的一个好习惯,解决问题最优方法,需要经验积累。这里指的是学习优先级问题,自己面对问题时,容易想把其他的知识一并学透,吃撑大胖子,短时间不可能的,看到下面几位大神的回复,有了很多启发。
不会就问,愿意思考、责任心强,如果公司这样都嫌弃你,换了也无妨,经验是慢慢积累的,是一个过程,至于际遇,也就是你会遇到怎样的团队真的是未知的,你要做的事是做好自己该做的,知之为知之不知为不知。我之前的一个公司就是因为我经常问问题,也是实习什么都不知道,大概是觉得我不好吧,不欢而散,现在的公司,我也是很多东西都不知道,但是没什么,公司愿意培养一个能适合团队的人,不懂就问,放低姿态,拥有强烈的责任心,对于一个团队来说,无疑是最好的,所以,我觉得没什么不好的。以上
恩,希望我的公司是愿意培养我的公司,自己已经放下包袱了,其中理由:1.自己面对的也是大家遇到的,大家都是过来人,都从菜鸟到大神,都虚心请教,我还有什么放不下的呢。2.别无他法,自己去解决慢慢找方法,确实太慢,没有效率~
/* * @(#)SayGoodByeToNood.java $version Nov 6, 2015 * * Copyright 2015 [NOBODY] All rights Reserved. * [NOBODY] PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ public class SayGoodByeToNood { /** * 问题内部类 */ private class Problem{ public Problem(String problemName){ this.problemName = problemName; } private Problem(){ } /** * 问题名称 */ private String problemName; /** * 问题所产生子问题 */ private Problem childProblem; /** * 问题是否掌握 */ private boolean problemHoldFlag; /** * 问题是否感兴趣 */ private boolean problemInterestFlag; /** * 判断下级关联问题 */ public boolean hasChild(){ if (childProblem==null) { return false; } return true; } /** * getter setter */ public String getProblemName() { return problemName; } public void setProblemName(String problemName) { this.problemName = problemName; } public Problem getChildProblem() { return childProblem; } public void setChildProblem(Problem childProblem) { this.childProblem = childProblem; } public boolean isProblemHoldFlag() { return problemHoldFlag; } public void setProblemHoldFlag(boolean problemHoldFlag) { this.problemHoldFlag = problemHoldFlag; } public boolean isProblemInterestFlag() { return problemInterestFlag; } public void setProblemInterestFlag(boolean problemInterestFlag) { this.problemInterestFlag = problemInterestFlag; } } /** * 菜鸟逃脱 */ private void jump(Problem problem){ if (problem.problemHoldFlag) { System.out.println("我对"+problem.getProblemName()+"【有】掌握"); return ; }else { System.out.println("我对"+problem.getProblemName()+"【没】掌握"); if (problem.isProblemInterestFlag()) { System.out.println("我对"+problem.getProblemName()+"【有】兴趣"); if (problem.hasChild()) { System.out.println(problem.getProblemName()+"【有】关联问题【"+problem.getChildProblem().getProblemName()+"】"); jump(problem.getChildProblem()); }else { System.out.println(problem.getProblemName()+"【没】关联问题"); } } else { System.out.println("我对"+problem.getProblemName()+"【没】兴趣"); return ; } } } /** * 生成问题关系 */ private Problem makeProblem(){ SayGoodByeToNood.Problem pA = new SayGoodByeToNood.Problem("A"); SayGoodByeToNood.Problem pB = new SayGoodByeToNood.Problem("B"); SayGoodByeToNood.Problem pC = new SayGoodByeToNood.Problem("C"); SayGoodByeToNood.Problem pD = new SayGoodByeToNood.Problem("D"); SayGoodByeToNood.Problem pE = new SayGoodByeToNood.Problem("E"); pA.setChildProblem(pB); pA.setChildProblem(pE); pA.setProblemInterestFlag(true); pA.setProblemHoldFlag(false); pE.setProblemInterestFlag(true); pE.setProblemHoldFlag(false); pC.setProblemInterestFlag(false); pC.setProblemHoldFlag(false); pD.setProblemInterestFlag(true); pD.setProblemHoldFlag(false); pB.setChildProblem(pC); pB.setChildProblem(pD); pB.setProblemInterestFlag(true); pB.setProblemHoldFlag(false); return pA; } public static void main(String[] args) { SayGoodByeToNood nood = new SayGoodByeToNood(); Problem problem = nood.makeProblem(); nood.jump(problem); } }
运行了你把问题面向对象后的程序,不明白你表达的真正含义,
一个Problem不只是有兴趣、是否解决两个属性那样简单,我觉得应该加上PA是否必须解决,PA不解决,完成不了ParentPA的父节点,CanFind(ChildPA).
这里关于问题的属性有太多。
其实对于过来人,刚去公司就怕你不愿意开口,不明白就说出来,不会做也说出来,都没有关系,别怕问了,说了不会做觉得没面子,最重要的是别等到时间到了你说你不会,你一个问题问了一次,下次这类的都会了,还能扩展就会有好印象,认为准时完成才会有好印象,一般同事之间还是会帮忙的,你可以发现其实我们这行内部同事直接没有很多直接的竞争,所以只要你敢问,能思考,别怕逃避责任,就ok
谢谢你的答复~现在主要是积累吧~我也许在乎转正后的待遇太多了,急于想把所涉及的问题都了解清楚~