Here is a little background information.

  1. I have been working for Java 10 years.
  2. The product I am working on went to live about 3 years ago. Now, the product is getting stable.
  3. After all the post-product drama, I gained a lot of knowledge about Oracle & SQL. People(mainly management) were desperated enough to give me deep oracle-related task over DBAs. I admit I considered becoming DBA but eventually decided to remain as a programmer.
  4. DBAs & Management are demanding all the DB & Query related task back to DBA, which makes me a bit sad.

In short, I anticipate a lot of time next year. What would you do to improve your skillset??

I am thinking to upgrade my Java version(Not from experience though, we are using JDK1.5) to 1.6 getting certificate.

Any good idea from fellow developers??

-----------Edit ---------------------

How about data modeling for application? Do you guys think it is developer role??

  • 1
    Aside from developing, what other roles would you like to have? You have some freedom now to figure out what you want though I imagine some of us may need a bit more information to give you worthwhile suggestions.
    – JB King
    Dec 20, 2010 at 18:52
  • @JB King. Your question is one of my favorit subject nowadays. What if I want to be some kinds of technical manager(like directors, VPs...) for development team in the end. Would it be a lot different from being developer(including architect, lead developer etc)??
    – exiter2000
    Dec 20, 2010 at 20:35

4 Answers 4


This is something that I am copying from StackOverflow.

Being a programmer with that kind of experience, and wanting to learn things that take you into a new level, I strongly suggest that you study non-programming subjects that can make you a better programmer.

These are some subjects that I have studied and found extremely useful:

  • Cognitive psychology. It explains how people perceive and communicate information; it's the basis of conceptual modelling.
  • Organisational theory. It provides a good framework to understand the context where most information systems work.
  • Management "science" and people skills. It can give you clues about the social factors and motivations that interact with software systems.
  • Linguistics. Natural languages may be formal systems, after all, and thinking in terms of lexicon, syntax and semantics is always useful for software people.
  • Architecture (the one making houses and buildings, not software). Its abstract nature and the use of patterns make it a great exercise for the mind.

In general, anything involving formalisms would do you good. Anything that involves people plus information together is also very useful. I think that spending time learning these things will differentiate you from other people of your same age/experience.

Hope this helps.

  • Thank you for your answer. I followed your link and read other stuff as well
    – exiter2000
    Dec 22, 2010 at 20:59
  • You're welcome. And good luck!
    – CesarGon
    Dec 23, 2010 at 20:13

To me, "improving your skillset" has absolutely nothing to do with specific languages or technologies. Instead, it is improving your ability to write in general.

For a metaphor: If this field were like music (and it is), "improving your skillset" by getting JDK 1.6 instead of 1.5 is like learning the harmonic minor scale in the key of a. However, if you dedicate your time to pattern recognition, fore-sight, and design, you just learn to spot a harmonic minor scale in ANY key.

Great musicians, like great software developers, aren't restricted to a set a tools.

  • 1
    There's a good joke in there somewhere, I just can't think of it. If only there was a G# programming language (to go along with C# and F#). Dec 20, 2010 at 19:05
  • 1
    If only J# was a musical note. Dec 20, 2010 at 20:11
  • I would really want to have skillset you mentioned. So far, I learned those skills as I develop more and more. Do you think I could get those skills with limited experience?? Would you recommend one?
    – exiter2000
    Dec 20, 2010 at 20:42
  • I'd start with this: amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/…
    – Dexter
    Dec 20, 2010 at 20:44
  • Got the book already!! Thanks though
    – exiter2000
    Dec 20, 2010 at 20:53

In your position I would have a very close look on the JPA technology which is a bridge between objects and database tables. Very few people have both the hardcore Java experience, as well as the hardcore database experience needed to understand, analyze and improve this layer in a production setting.

Additionally it is part of recent versions of Java EE, which makes it very relevant to a Java EE team as this is essentially the backend engine.

  • Thank you for your suggestion. I could definitely go deeper with JPA next year but I am kind of exposed already. I think I could easily get more involved in this as I maintain the current product..
    – exiter2000
    Dec 20, 2010 at 20:44
  • You could always do some serious load testing to see when the current product break at the seams, which frequently happens at the persistance layer, and then learn how to fix it. That's the hardest thing to do under pressure so it is nice to do drills.
    – user1249
    Dec 20, 2010 at 23:00

DexterW made some good points, but if you still want to focus on expanding options for using your current skill set, with mobile development needs (corporate as well as general public) being so hot, why don't you consider learning some Android development? Java is the core language used for that.

  • I understand Android market has been hot for a while. And I have android phone(which is 1.5, not very good!! subject to upgrate any 2.X). Anyway, I am wondering if I develop small application in Android, I could apply my phone.. Will check out
    – exiter2000
    Dec 20, 2010 at 21:38

Not the answer you're looking for? Browse other questions tagged or ask your own question.