64

I recently finished my Master of Science in Software Engineering, and I am about to start my professional career in a few weeks. My role will be as a Junior Developer for a company which develops software using Java & related technologies (among them Spring and Hibernate). To be honest, I am really excited about what is coming, especially because I want to develop my career as a Java developer. I am also very interested in gaining experience in the field. Additionally, this is going to be my first work experience as a professional developer so I really want to do my best from the very beginning.

I would like to know which skills and abilities, both soft and technical, would be most appreciated in a new professional (Junior Developer) that could be part of your team and in which skills I should focus on to achieve a successful career as a Software Engineer.

Thomas Owens
  • 82,739
Bartzilla
  • 361
  • 13
    A wonderful question asked eloquently. – Adam Crossland Feb 15 '11 at 14:15
  • 2
    Find a gateway drug/activity for when things in the real-world work setting do not work out as you would imagine, but make sure that its effect does not spill into morning. – Job Feb 15 '11 at 20:37
  • Attention To Detail - nothing is more important. – Orbling Feb 16 '11 at 03:26
  • 1
    Since you're a JSWE. Be competent in the languages you said you were competent in. Nothing is more exasperating to hire someone who says they know a language but only learned it in one class. Example: people who list C/C++ on their resume but can't use one or the other (god forbid, can't use either!) – aqua Feb 16 '11 at 04:40
  • What happened to the dream of making video games? You "want to develop [your] career as a Java developer", seriously? just kidding, to each his own :) – cambraca Feb 16 '11 at 05:03

19 Answers19

61

Here's a quick list off the top of my head:

  • Follow-through (finish what you start)
  • Honesty (tell me if you're stuck)
  • Curiosity (find out better ways to do things)
  • Open-mindedness (both to criticism and to ideas that aren't yours)
  • Generosity (share what you learn; train the next generation)
Alex Feinman
  • 5,792
  • 1
    I agree with all of the listed qualities. If I were asked to mentor such a junior programmer, I would be glad to do so, and it would make my work day much mor eenjoyable. – Adam Crossland Feb 15 '11 at 14:14
  • 3
    I think this list pretty much sums it up, the only thing I could possibly add is communication. I have seen so many promising young developers get left behind because they simply didn't want to communication with their team members. Coding alone just doesn't cut it these days, you have to talk to users, team members, and get involved. Also, learn how to write well since you will be doing more of that than you ever thought you would. – Nodey The Node Guy Feb 15 '11 at 15:14
  • 14
    +1 Honesty: Learning to say, "I don't understand this." -- first to yourself and then to your colleagues -- is really important. It opens the door to communication and to learning. I've seen too many programmers who allowed their ego to get in the way of expanding their minds. I've been working in this industry for most of 4 decades and I still run into stuff every single day that I don't understand. So I google, I read, I write practice code, and then I have one more skill I can bring to the table. – Peter Rowell Feb 15 '11 at 15:20
  • On open-mindedness - this particularly includes exceptions to the rule-book. I've failed on this point. Part of experience is learning when to break the rules. Sometimes, forcing everything to fit your ideals just makes everything more complicated. OTOH, not knowing the rule-book at all... –  Feb 15 '11 at 15:44
  • Great list, and not limited to junior developers. Some of those skills are the hardest to learn and the easiest to forget. – Wonko the Sane Feb 15 '11 at 16:32
  • 1
    On the Honesty part: What I tell people working for me is to spend a half hour trying to figure it out on your own, then ask me for help or a pointer. If I don't have an immediate answer, bang on it for four hours or so before letting me know it's taking more than that. That's when we start dragging people off of other tasks to help. These days, I would also counsel them to search in, and then ask in Stack Overflow, and google in general, early on in that process. My goal here is to prevent the instant interruption response, which can kill the productivity of the folks around you. – Hack Saw Feb 15 '11 at 23:18
  • Being willing ask question and learn. Yes I may have been doing this for 20 years to your 2, but if you have a good idea spit it out, you might be right. But even more importantly we might both learn something talking about it! – Zachary K Feb 16 '11 at 12:40
50

A lot of these are true no matter where you are in your career, but might be especially important for someone who is just starting out.

  • Listen more than you talk. Learn from what other people are saying.
  • Be humble. Don't be afraid to share your ideas, but don't assume that you're right and everyone else is wrong. If you see something you think is wrong, ask about it, don't make pronouncements about it.
  • Keep learning. The foundation from your education is (should be) great, but you have only begun to learn the profession. Learn by doing. I don't think you can really learn unless you are actually practicing what you are learning.
  • The customer rarely knows what he wants until he sees it. Get used to your requirements changing. Adopt a style of development (if allowed) that gets things in front of the customer quickly to get feedback.
  • Find people who are good at working with customers and ask them to mentor you in how to develop relationships with them.
  • Write well-tested, robust code. Getting it done is not the goal; getting it done right is. If you're any good at it, speed will come with time.
  • Work hard. Don't wait to be asked to do something; look for or ask for things to do.
  • Own up to your mistakes or your team's mistakes. Don't throw your team members under the bus in front of the customer, but be honest when you have code problems.
  • You may think that your teammates want you to be a brilliant coder. That would be awesome, but your teammates really want you to be competent and not a jerk. If you're going to be a jerk, you'd better be brilliant.
tvanfosson
  • 2,249
  • 3
    +1 for "The customer rarely knows what he wants until he sees it..." – FrustratedWithFormsDesigner Feb 15 '11 at 14:36
  • 1
    +1 for "Keep Learning". That is probably the most important thing I would look for in a junior level programmer – Rachel Feb 15 '11 at 15:13
  • for "Getting it done is not the goal; getting it done right is" Making sure your code not only works, but is rigorously tested is very important. Also getting it done right means another developer can look at your code, understand it and read the comments to then take over maintaining said code.
  • – Jeremy Apr 12 '11 at 21:24