|
This is my first blog post. I'm not really part of any other communities, and this community seems to be pretty smart anyways, so it's probably as good a place as any other to post this.
Anyways, I've been feeling really stupid lately at my internship. I constantly do stupid things, usually minor, but some major. As an example (and what prompted me to post this), a month ago, one of the other developers released completely new, reworked server code. I checked that out and put it in a separate directory because we weren't ready to work with it yet. A week later I got another email saying that he had updated that code again, and he told me to check it out. However, we were in the middle of a bunch of demos for customers and nobody wanted to run the new server code yet, so I didn't check it out. In hindsight, I could have just checked it out because it was in a separate folder anyways and it wouldn't have made a difference.
Fastforward to today, where another developer was working on his own code. He was getting flustered because he wasn't receiving the messages he was expecting. Unfortunately, the problem was that the server code wasn't up to date. I have no idea how much time he wasted debugging, and quite honestly, I hate to think about it.
I feel like there is a huge pool of other cs undergrads they could have selected and they could all do the job better than me, with fewer mistakes. The company I'm working for is a pretty small agile company, about 20 people, which means there isn't really an HR department to speak of. More specifically, it's a defense contractor that works on cutting edge technology (e.g. pre-shot sniper detection systems and binoculars that establish optical links which you can use to communicate). I don't say this to brag, merely to better frame my situation.
Anyways, I feel really incompetent at this place sometimes and I feel like I make a ton of mistakes. In fact, I feel like they could have hired from a huge pool of other cs undergraduates that could do a better job than me.
Does anyone have any similar experience or advice or anything? I don't know if my situation is typical or not...
|
Being in an environment like that should motivate you to do better. Mistakes happen, but learning from them is what's important.
|
No one is perfect...
Those other undergrads probably look great on paper as well but are human too
just watch, i bet if you pay attention you'll see that the actual employees make mistakes too
|
I wrote up a huge response and then realized that it was all a brag. For my summer job:
I probably wasn't the best choice, but I probably wasn't the worst either, and someone would take advantage of the opportunity. It might as well be me. I'm doing web design. Just finished a site for the company: specialized shift report with features similar to but more refined than basecamp: also features the ability to be expanded.
Still I get your point. There are lots of smarter students in my major than me, who might still be looking for jobs because they want a computer job and don't speak English as well as I do, or who just haven't had the same luck I've had.
|
Your situation is VERY typical. Depending on the complexity of a job, it can take years before you're confident in what you're doing. In jobs like software development, mistakes are practically unavoidable even for veteran programmers. As long as you learn from your mistakes and don't repeat them, you'll get better and gain respect on the job.
|
Don't worry about it. I've done 7 internships in the past, and I made tons of mistakes and received all very positive reviews. Your mentor or whoever you are working with is cognizant of the fact that you are an intern, and mistakes are part of the learning experience.
There is a reason you get paid less than they do, no one expects you to be perfect, just give it your best shot, be open to criticisms and learn from your mistakes.
|
It seems like a really strange way to use version control to me. Why was another developer relying on what you had checked out to do his work?
I also don't understand why you were expected to check out different versions of the project to different folders... The whole point of version control is that it handles revisions/branches so things like this don't happen.
Very confusing situation. It doesn't sound like it was your fault at all.
|
16927 Posts
The great thing about an internship is that it's your chance to make mistakes and learn from them with pretty much no consequence. You have a great opportunity to learn as much as possible, get a feel for how the company operates, and actually make a positive difference through your assigned projects. The people at the company know about the intern experience, and they understand that it's probably one of your first forays into whatever industry/environment you're interning in. Fellow employees are there to help you and coach you through your mistakes, and you shouldn't worry about making them, but rather about how you can get the most from your intern experience.
That's sourced directly from the Managing Director of Genzyme China (except she said it in Chinese, of course).
EDIT: Have you guys considered using Git for version control?
EDIT2: Oh, it looks like you do ... question answered hahaha.
|
Thanks for the support guys.
On July 19 2011 12:12 vek wrote: It seems like a really strange way to use version control to me. Why was another developer relying on what you had checked out to do his work?
I also don't understand why you were expected to check out different versions of the project to different folders... The whole point of version control is that it handles revisions/branches so things like this don't happen.
Very confusing situation. It doesn't sound like it was your fault at all.
Well, as with many things, it's kind of complicated. The original directory we were using was copied from a git repo. Ordinarily, one would just do a git pull and update it, but since it wasn't a git repo, we had to leave it there. We cloned the git repo containing the new code and that's why it was in a separate folder. After we had transitioned to the new code, we would have deleted the old, non-git folder.
As far as the developer relying on what I had checked out, let me provide more detail. The code that I had checked out is relatively low level code. It interfaces with a sensor module and at a very basic level, sends out well-formed messages. The other developer writes the server software that takes those messages and maintains a database and eventually interacts with the client, which is what I'm in charge of. Maybe it's less confusing now that I've explained it.
|
If you feel like you're smart or exceptionally effective at your internship you're probably working with some pretty shit people. You're expected to make mistakes and generally be the weakest person on the team, otherwise you wouldn't be an intern you would be a full time employee.
|
Man, I remember my first internship. Bumbled around like an idiot trying to learn sketchup and photoshop as fast as possible to keep up with the people I worked with. It was at this big architecture firm in Beijing too, so I didn't wanna be the cause of missed deadlines. The first couple of days can be harrowing, but what helped me was making friends and generally becoming comfortable in that work environment. When you aren't worrying left and right about random stuff, you'll naturally work more efficiently and make less mistakes.
|
I should probably mention that I've been working there for a year now, actually. Many people might think that it's just the whole getting into it thing, but after a year, I figure people should have their shit together. Furthermore, this isn't a company that actually has an internship program. Therefore, I don't get a whole lot of feedback. They have never had an intern before (and probably never will again after me, heh)
|
Im sure there were times even Bill Gate felt as you do....look where he is to day. Bottom line: its part of being human.
|
On July 19 2011 12:48 Xanbatou wrote: I should probably mention that I've been working there for a year now, actually. Many people might think that it's just the whole getting into it thing, but after a year, I figure people should have their shit together.
Then learn from your mistakes. Like you said in your OP, in hindsight, you probably could've checked the code out anyway. Next time someone tells you a new code is out, check it ASAP. Weigh your priorities.
I still think it's completely psychological. You've psyched yourself out by those little mistakes, and eventually, you worry so much that it effects your ability to work.
|
I'm afraid to ask for help so i spend an entire day just reading through proprietary source code and getting no where. Today I wrote 0 lines of code, i asked at the end of the day how to do it lol.
|
Oh god, I remember an internship last year now. Completely failed at a VB coding and got fired immediately. I didn't know how to parse TT SO SAD TT
You need to be able to ask for help chaotic! Putting off asking for help only makes it worse.
|
Well, it doesn't seem like anyone was really bothered by it today, so I think i'm okay.
However, today I learned that you should always have a release directory and a development directory. I didn't cause any problems, but I modified the client and I guess people were surprised because I never made an official release or anything. I typically make sure it works before we go out and demo it, but now that it's been pointed out, it makes a lot of sense to have both a development directory and a release directory.
Is this something they are supposed to teach you in school? Maybe I haven't taken that class yet. Or is that something that's taught in industry?
|
My advice to people with internships is this:
Its easier to ask for forgiveness than permission.
Don't be afraid to take some initiative and risks- not sure how to do something? Guess! Just be sure you have someone check your work before it becomes to official. I usually keep a running list of questions for my boss so I can ask him a bunch at once rather than one every ten minutes.
You're not expected to know everything as an intern- guessing right is more impressive than guessing wrong, which is more impressive than asking (IMO).
|
On July 20 2011 06:23 TwistedHelix wrote: My advice to people with internships is this:
Its easier to ask for forgiveness than permission.
Don't be afraid to take some initiative and risks- not sure how to do something? Guess! Just be sure you have someone check your work before it becomes to official. I usually keep a running list of questions for my boss so I can ask him a bunch at once rather than one every ten minutes.
You're not expected to know everything as an intern- guessing right is more impressive than guessing wrong, which is more impressive than asking (IMO).
Alternatively, couldn't you discuss your approach with whoever it is you are involved with, rather than waste your time doing something wrong? Then they get to see your insight, you learn, and you don't waste your time?
|
On July 19 2011 11:05 Xanbatou wrote: Anyways, I feel really incompetent at this place sometimes and I feel like I make a ton of mistakes. In fact, I feel like they could have hired from a huge pool of other cs undergraduates that could do a better job than me.
Does anyone have any similar experience or advice or anything? I don't know if my situation is typical or not...
Three years ago I interned at a paper mill (I'm a chemical engineer). I made a few small slips, but nothing worth writing home about. Then one day I was monitoring the flow of a chemical line. It's called a draw down where we shut off the chemical supply, run the chemical through a graduated cylinder, and time how much passes in a minute. The tube was dirty and felt that letting it drain would be beneficial. For about 20 seconds the machine wasn't getting this chemical. Two minutes two of the three paper machines went down as a result. They were down for an entire hour. One little mistake cost the company $20,000 in down time.
I got a lot of crap from floor workers and a slap on the wrist from the machine manager, but the plant manager's reaction was basically "meh, we all make mistakes, don't do it again". Over the course of the summer I made a couple more mistakes, one of which ruined 6 tons of paper and another spilled about 50 gallons of chemicals on the floor, but I learned a lot. When I got to my second internship last summer I rocked the house!
Then I got to grad school and started research. My mistakes are comparatively minor (ruining test runs, breaking equipment, etc.) but this fosters a sense of mindfulness around the lab (not to mention an appreciation of the equipment I keep fixing!).
Whenever you start a new job you screw up. The measure of an effective worker isn't how little they screw up but how much they learn. You will be expected to make mistakes because the people above you were in your shoes not too long ago.
|
On July 20 2011 06:37 Xanbatou wrote:Show nested quote +On July 20 2011 06:23 TwistedHelix wrote: My advice to people with internships is this:
Its easier to ask for forgiveness than permission.
Don't be afraid to take some initiative and risks- not sure how to do something? Guess! Just be sure you have someone check your work before it becomes to official. I usually keep a running list of questions for my boss so I can ask him a bunch at once rather than one every ten minutes.
You're not expected to know everything as an intern- guessing right is more impressive than guessing wrong, which is more impressive than asking (IMO). Alternatively, couldn't you discuss your approach with whoever it is you are involved with, rather than waste your time doing something wrong? Then they get to see your insight, you learn, and you don't waste your time?
This works with some people. Others (like my graduate adviser) think that their time is so valuable that they get mad whenever you ask something "trivial". More often than not my research buddies don't know either. Then it becomes a matter of finding a solution and backing it up. It's definitely uncomfortable, and you're certainly not immune from mistakes, but more often than not your education kicks in and leads you in the right direction.
|
On July 20 2011 06:37 Xanbatou wrote:Show nested quote +On July 20 2011 06:23 TwistedHelix wrote: My advice to people with internships is this:
Its easier to ask for forgiveness than permission.
Don't be afraid to take some initiative and risks- not sure how to do something? Guess! Just be sure you have someone check your work before it becomes to official. I usually keep a running list of questions for my boss so I can ask him a bunch at once rather than one every ten minutes.
You're not expected to know everything as an intern- guessing right is more impressive than guessing wrong, which is more impressive than asking (IMO). Alternatively, couldn't you discuss your approach with whoever it is you are involved with, rather than waste your time doing something wrong? Then they get to see your insight, you learn, and you don't waste your time?
Its situation dependent. I just had a bad habit of asking too many questions. You def want to be sure you have the correct approach, and discussing that with coworkers is a great way to go about confirming that. I'm just saying to be careful that you don't become too dependent on asking for help, and don't be afraid to trust your own judgement.
Edit: And like the poster above said, many people think their time is valuable and don't want to spend time walking you through trivial issues. That's why I make a list of questions to ask all at once.
|
United States4991 Posts
On July 20 2011 06:23 TwistedHelix wrote: My advice to people with internships is this:
Its easier to ask for forgiveness than permission.
Don't be afraid to take some initiative and risks- not sure how to do something? Guess! Just be sure you have someone check your work before it becomes to official. I usually keep a running list of questions for my boss so I can ask him a bunch at once rather than one every ten minutes.
You're not expected to know everything as an intern- guessing right is more impressive than guessing wrong, which is more impressive than asking (IMO). Hmm, I don't really agree about "guessing right"... While it's good to come up with your own approach on things, if you truly don't know about something, it's best to consult with someone on the matter. Not necessarily actually your boss - as an intern, it helps a ton to find some helpful co-worker (commonly who hasn't been in the field for an eternity, so they understand better where you're coming from) who can help you out with bouncing ideas off them, giving general advice, etc. A lot of what you're learning as an intern is also how to work in a team (something a lot of universities don't teach very effectively), and building relationships with your co-workers is a large part of that.
|
On July 20 2011 05:02 Xanbatou wrote: Well, it doesn't seem like anyone was really bothered by it today, so I think i'm okay.
However, today I learned that you should always have a release directory and a development directory. I didn't cause any problems, but I modified the client and I guess people were surprised because I never made an official release or anything. I typically make sure it works before we go out and demo it, but now that it's been pointed out, it makes a lot of sense to have both a development directory and a release directory.
Is this something they are supposed to teach you in school? Maybe I haven't taken that class yet. Or is that something that's taught in industry?
It's not really something they teach because almost every development house uses different version control software and uses it in a different way.
We don't separate "release" and "development". It's the same to us. Our code is always ready for "release" (we just call it deployment).
The pipeline goes like this:
- Developer checks in code - Build server sees new revision, checks it out, runs unit and integration tests If the build passes all the tests then it will create JARs, package dependencies and deploy to our test environment. If it doesn't pass tests then we get an email detailing why.
If there was a major new feature or bug fix we let people do some testing in the test environment to make sure things that can't be covered by automated tests still work.
If testers are happy then that build gets deployed to production.
Sometimes we deploy to production multiple times a day. Sometimes none at all.
|
In none of my interns (or my fulltime now) do I ever have a development and release. What's the point in having release? I mean, if QA says "there's a bug blah blah" and it doesn't appear in your current development code, then there's no point in fixing it since it's been fixed. Every place I've been at if we use version control on a project everyone (barring weird circumstances) uses the same branch and checks in against the same code.
Either way what's the worst that could happen? You're probably not working on mission-critical code (you said client interface right?) so if you screw up a little it's no big deal. Just be careful and double check whatever you check in against the latest code. Everyone knows you're an intern.
|
On July 20 2011 11:50 King K. Rool wrote: In none of my interns (or my fulltime now) do I ever have a development and release. What's the point in having release? I mean, if QA says "there's a bug blah blah" and it doesn't appear in your current development code, then there's no point in fixing it since it's been fixed. Every place I've been at if we use version control on a project everyone (barring weird circumstances) uses the same branch and checks in against the same code.
Either way what's the worst that could happen? You're probably not working on mission-critical code (you said client interface right?) so if you screw up a little it's no big deal. Just be careful and double check whatever you check in against the latest code. Everyone knows you're an intern.
Well, the reason we have release and development folders is because sometimes we have to demo for customers, and if we are in the middle of developing something that breaks existing functionality, it's much better to be able to just use something that is known to be good. It's kind of worrying developing new stuff when you have to demo the next day.
Also, what I am working on is semi-critical, because it's the client interface to a system. I mean sure, if I break something, the only one impacted is me (or the end user), but I don't think I can afford to do that anymore than the developer working on the server code could.
|
|
|
|