22

At the moment I'm 23 and working as a junior programmer at a software service provider. While I'm really happy with my job and my colleagues, I sometimes would love to have someone who could tell me what is bad about my code (architecture and so on), why it is bad AND what could I do to make it better.

As we have no senior java programmers anymore (I'm the last one who can program java), I would love to get your advice about becoming a better programmer.

Disclaimer: Sometimes I ask my non java programmer colleagues if my code is "good" or "bad" but I have the feeling that they can't judge because they aren't java programmers. (They hardly program anything)

Are there any communities which are happy to mentor junior developers? Would it help if I read tons of books? Any advice how I can improve my existing skills and learn if what I'm doing is bad or good?

Epilog:

I didn't even think about switching the employer back in May when I asked this question but what all of you said was stuck in my head and I decided to switch in April. I now found a new employer and I got a position as a junior Java developer at the new company. I hope my professional growth will get better in future with my new employer.

I just wanted to say thank you for all of your advices.

OemerA
  • 331
  • 2
  • 7
  • Why are you the only one programming Java? –  Jul 08 '11 at 12:18
  • related: [How to salvage my internship](http://programmers.stackexchange.com/questions/201796/how-to-salvage-my-internship) _"...no one on my team, in the building, or even in the neighboring locations has any background in software development.... This is especially troubling for me since I'm not very confident with my development skills in the first place..."_ – gnat Jun 18 '13 at 06:15

8 Answers8

22

I was in your position once where my employers small programming team dissolved fairly quickly to just me when I was right out of college. My recommendation, for your professional growth, is start looking for a new employer now.

Being on a team of one will foster bad habits that will be hard to break when you work on larger teams later in your career. I've become a fan of young developers spending some time in consulting (at a salary consulting shop, not an hourly contracting style shop) then working as an employee in a small shop.

You'll get to work in several different organizations and under several different leads/architects from your company and your clients. You'll see different archtectual styles and programming styles firsthand, while witnessing the strengths and weaknesses of them.

Think of it like the rotations medical school students do during their last two years of medical school, where they spend a couple months in bunch of different departments at several hospitals. It lets them see a bunch of different fields and situations, giving them greater bredth of experience then just what they want to specialize in.

Software developers need to do the same thing, because for the most part, there never is only one way to do something right. [You can subsitute consulting for working for a large company that explicitly lets people change roles and teams relatively freely as this will get you almost as good of a set of experiences.]

Jim G.
  • 8,006
  • 3
  • 35
  • 66
ben f.
  • 436
  • 2
  • 4
  • 1
    This, and also this is sound advice for any situation where your co-workers are unable to improve *their* programming skills and, therefore, where you cannot learn anything except bad practices from them. – Wayne Molina Jul 08 '11 at 14:42
6

Since you don't have access to a live person on-site, you could post samples of code that you think might be fishy to sites like https://codereview.stackexchange.com/questions , explain why you're posting it ("maybe I can do this better?",...) and see what people think (be sure to scrub and company-sensitive information from it first).

If you like books, there are some "best practices" books you can check out. "Effective Java" by Bloch ( http://java.sun.com/docs/books/effective/ ) is very good. It's more a reference book than a cover-to-cover book, but still very useful.

FrustratedWithFormsDesigner
  • 46,105
  • 7
  • 126
  • 176
  • Be sure to pick up the second edition of effective java, it's been updated for generics etc. – Kevin D May 06 '11 at 13:25
  • Thank you for mentioning the Codereview site. I didn't know about it. Also thank you for mentioning Effective Java. I will definitely check that one out. – OemerA May 06 '11 at 13:31
4

Assuming you can't leave your organisation and there is no mentoring scheme there you can (in addition to online forums such as SO and Javaranch) join you local Java User Group. The one I help run specifically runs a graduate developer sub group and hosts coding dojos and workshops. Also join your local software craftsmanship community, they'll do likewise!

HTH

Martijn Verburg
  • 22,006
  • 1
  • 49
  • 81
  • +1 Hadn't ever thought to look for the Seattle Java User group before, and it turns out they meet 15 minutes away from where I live. Great suggestion! – Panky Sep 18 '12 at 20:06
3

OemerA,

It is great that you like the people you work with and probably you get a sense of belonging since it sounds that the people at your company now are relying on you for things to get done.

Not to be philosophical on you but the Japanise say " It is easier to walk to path already charted." A sure way to improve is to hang out with people who are better programmers then you are. You could look around for a new job which would put you in an engineering team. You could also do side projects like open source. Your work would be reviewed by other pears but also you would be exposed to others work.

In an ideal world, you want to be challenged and improve at work environment and relax outside of work.

The best way to improve your programming is to read other peoples code. If you are not in that position, that should be an indication for you that something has to change.

Erion
  • 471
  • 2
  • 10
  • thank you for your advice. I would love to hang out with people who can better program than me but I don't know anyone (don't get me wron, I don't think that I'm the bets programmer around but I don't have much friends who are programmers and they only do hobby-PHP). However I would love to join a open source to improve my abilities but I always think I'm way to bad to join to "big" guys. How would want a junior programmer in a open source high-end project? – OemerA May 06 '11 at 15:28
  • I work on .NET environment, and wish I could just have links to pass at you. My strategy is the first one. I work for an engineering firm for 4 years and when I felt that I was not learning anything new, I just changed jobs. There is nothing personal to the people I knew. Actually I am planning to play tennis with them. If you like open source, i'd would be pick an open source software you use and like. Anyone can contribute, noone will judge you. I know this because some .net projects are open source, and everyone is very welcoming. For example, we re wrote some code from Agatha package. – Erion May 06 '11 at 15:32
  • @OemerA If you don't have much friends you could join a community and make friends. – Searock May 06 '11 at 18:12
  • @Searock any suggestions on communities? I don't know any programmer communities. Thank you. – OemerA May 06 '11 at 20:19
  • @OemerA [Stackoverflow](http://www.stackoverflow.com), [Dream.in.code](http://www.dreamincode.net), [Daniweb](http://www.daniweb.com/), [Codeproject](http://www.codeproject.com) – Searock May 08 '11 at 18:21
2

If you don't have any senior programmer you could always ask for suggestions in communities like Code Review or any other communities.

Make sure you follow the coding conventions.

Don't forget to review your code for any resource leaks.

And finally you could improve your skills by participating in communities like stackoverflow by studying others problem or by helping them out.

Searock
  • 336
  • 1
  • 6
  • 13
2

Have Passion

Without a mentor, the primary thing that is going to keep you improving is if you are passionate about what you are doing. Because if you are not, no one is going to push you. You will become stagnant like all the mediocre programmers out there.

You have to push yourself. Always be learning, trying new things, reading books, blogs, SO, etc.

JD Isaacks
  • 8,924
  • 12
  • 47
  • 54
1

Code is good if it matches the accept practices of your organization and/or say the accepted practices of the java standard. Microsoft for example as published the C# Standard and the format they suggest a C# programmer use.

The word you are looking to use is actually colleagues.

I feel the only difference between a junior developer and a senior developer is the amount of mistakes they each have learned from.

Ramhound
  • 871
  • 8
  • 12
1

Find an open source project you like and get involved. It's a great way to write code and get many more experienced eyes on it.

HedgeMage
  • 4,313
  • 1
  • 22
  • 28