share
Stack OverflowOK, so I'm not a beginner anymore... (Java specific)
[+6] [10] Alistair Collins
[2010-07-16 08:32:35]
[ java ]
[ http://stackoverflow.com/questions/3263156] [DELETED]

In the style of this question: http://stackoverflow.com/questions/3257749/ok-so-im-not-a-beginner-anymore-what-comes-next

I've been programming in Java SE for a while now, so how do I move beyond the "beginner" stage to be a more successful and useful programmer?

possible duplicate of OK, so I'm not a beginner anymore. What comes next? - High Performance Mark
(1) Voted to close as a duplicate, in the style of SO. - High Performance Mark
(1) I disagree that this is a duplicate, because this question is specifically about Java, while the supposed duplicate is about C++. Also, this is not "subjective and argumentative". - Jesper
To answer the question (which I can't do below because it's closed): read the book "Effective Java". - Jesper
Also... later, Java Concurrency in Practice. - Tim Bender
I'm annoyed that this question was closed. It's not a dupe if it's for a different language, it's not argumentative because there's nothing to argue about, and legitimate and useful answers are possible. - Carl Smotricz
Why not do Java EE? then you can have exposure? - The Elite Gentleman
None of the answers on the first page of the general question were C++-specific, they apply to a Java programmer as well, and most of the answers to this question aren't Java-specific either, including the accepted one, so I see no reason for them to remain separate - Michael Mrozek
[+8] [2010-07-16 08:37:52] willcodejavaforfood

Stop asking yourself if you are a beginner or not and just get on with the coding :)


1
[+6] [2010-07-16 08:36:25] Aaron Digulla [ACCEPTED]

Try a couple of problems from Project Euler [1].

[1] http://projecteuler.net/

Hadn't heard of this, but seems a great way to have some fun with algorithms - thanks Aaron. - Alistair Collins
The high numbered problems usually need you to figure out how to get around limitations set by your computer or programming language. They are not as easy as they seem (but the low numbered are :) ) - Thorbjørn Ravn Andersen
(1) @Alistair: I also suggest that you add project Euler tags on ignore here at Stackoverflow, that way you won't be tempted to read the solutions beforehand. - Esko
@Esko Don't you trust me..??!! But thanks for the idea. - Alistair Collins
@Alist: Nothing is as efficient as a lazy engineer :) - Esko
2
[+4] [2010-07-16 10:02:09] Pierre

The day you will attack (I really mean 'attack') a problem - and resolve it - in a way that outdoes many (if not all) previous designs and implementations...

... this day, you will see yourself as something else than a beginner - EVEN IF you are still a beginner in every new area that you start working on for the first time.

30 years ago I started with 'small' projects like a GUI, a 3D engine, OCR, pencil-signature recognition, etc.

Simplicity of design, conciseness of the code, efficiency, clarity - all these symptoms will confirm your skills.

My latest program, a Web App. Server with ANSI C scripts is something like 5,000 times smaller in footprint than IIS + C#... and 5 million times faster (see my homepage).

When your work outdoes the world leader in software, then you are no longer seen as a beginner.

Yet, one year ago (before I started this project), I was a total beginner in Web development (and I still feel that I have to learn a lot in this matter).

So, to sum it up: being a beginner is the best thing that can happen to you - as long as you know how (and enjoy) to cure your ignorance.


+1 Poetic :-) Thank you. - Aaron Digulla
+1 - Realising that there will always be more to learn is very important - willcodejavaforfood
3
[+3] [2010-07-16 10:01:52] Jesper

Read the book Effective Java [1] - it will teach you good practices and open your eyes to a number of pitfalls in Java.

The book Java Puzzlers [2] (by the same authors) is also good.

[1] http://java.sun.com/docs/books/effective/
[2] http://www.javapuzzlers.com/

4
[+2] [2010-07-16 20:04:40] BalusC

Try to reinvent existing big wheels. Try to reinvent an ORM [1] like Hibernate. Try to reinvent a webserver like Tomcat. Try to reinvent a (webbased) MVC [2] framework like Wicket or JSF. Lot of lessons and fun guaranteed. Reflection, Generics, Caching, JDBC, Collections, Sockets, I/O, Concurrency, Design Patterns, etc, almost everything is involved.

Whenever you stucks during reinventing, peek a bit in the sourcecode of the widely used and well known project (most of them are just open source) to take a look how they did it and learn from it.

I did it as well and I learnt a lot.

If it might happen that your wheel is actually more superior than the existing wheels, you may do yourself and the world a benefit by bringing it into public.

[1] http://en.wikipedia.org/wiki/Object-relational_mapping
[2] http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

5
[+1] [2010-07-16 09:43:03] Thorbjørn Ravn Andersen

Next step would be learning to use the search box to locate questions others like you have asked before about things that interest you and study the answers.


6
[0] [2010-07-16 08:35:24] SiLent SoNG

My experience is to know "best practice" of programming in the language.

Know what is good way to code and what are bad ways to code. Also, look into the language API's source code to see how it implements and start thinking the efficiency when writing methods.


7
[0] [2010-07-16 10:57:51] fwielstra
  1. Get a job as a developer.
  2. Get good / challenging assignments with medium runtimes and smallish teams.
  3. Strive for only the best. Then improve.
  4. Never stop learning or trying to figure out if there's a better solution for a problem.

Probably the hardest bit is getting a job where you get all the time you need to learn things and to improve your code. I was lucky I got an internship and was left free to my own devices for half a year - that's where I learned most.


8
[0] [2010-07-16 19:50:29] thebackhand

Building Skills in Object-Oriented Design is a great book, written for either Java or Python, that teaches object-oriented skills. Any Java programmer should read it.

It's available free online:

http://homepage.mac.com/s_lott/books/oodesign/build-java/html/index.html


9
[0] [2010-07-16 19:58:11] Mark Peters

Have a friend make up a project for you, including requirements, etc. When you're 80% through, have him change 40% of the requirements to be 5-40% different than they were when you started. Remove some and add some new ones.

Evaluate how you and your code cope with this change.


10