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.

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.

