Wednesday, January 26, 2011

10 things to become an outstanding Java developer

If you are a java developer and passionate about technology, you can follow the below things which makes you an outstanding Java developer.

1. Have strong foundation and understanding on OO Principles
For a java developer having strong understanding on Object Oriented Programming is a must. Without having a strong foundation on OOPS, one can't realize the beauty of an Object Oriented Programming language like Java. If you don't have good idea on what OOPS is, eventhough you are using OOP language you may be still coding in procedural way.Just studying OO principles definitions won't help much. we should know how to apply those OO principles in designing a solution in OO way. So one should have a strong knowledge on Object modeling, Inheritance, Polymorphism, Design Patterns.

2. Master the core APIs
 It doesn't matter how strong you are in terms of theoretical knowledge if you don't know the language constructs and core APIs. In case of Java, one should have very strong hands on experience on core APIs like java.lang.*, I/O, Exceptions, Collections, Generics, Threads, JDBC etc. When it comes to Web application development, no matter which framework you are using having strong knowledge on Servlets, JSPs is a must.

3. Keep coding
Things look simpler when talking about them theoretically. We can give a solution to a problem very easily in theory. But we can realize the depth of the problem when we start implementing our approach. You will come to know the language limitations, or design best practices while coding. So keep coding.
   
4. Subscribe to forums
We are not alone. There are lots of people working on the same technologies that we are working on. When doing a simple proof of concept on a framework may not give you real challenges. But when you start using it on real projects you will face weird issues and you won't find any solution in their official documentation. When started working on a new technology the best and first thing to do is subscribing to that technology forums. Whatever the issue you are facing someone else in this world might have already faced it earlier and might have found the solution. And it would be really really great if you can answer the questions asked by other forum users.

5. Follow blogs and respond
As I already told you are not alone. There are thousands of enthusiastic technology freaks around the world blogging their insights on technology. You can see different perspectives of same technology on blogs. Someone can find great features in a technology and someone else feels its a stupid framework giving his own reasons of why he felt like that. So you can see both good and bad of a technology on blogs. Follow the good blogs and respond/comment on posts with your opinion on that.
       
6. Read open source frameworks source code
A good developer will learn how to use a framework. But if you want to be an outstanding developer you should study the source code of various successful, popular frameworks where you can see the internal working mechanism of the framework and lot of best practices. It will help a lot in using the frameworks in very effective way.
   
7. Know the technology trends
In the open source software development technology trends keep on changing. By the time you get good idea on a framework that might become obsolete and some brand new framework came into picture with super-set of features. The problem which you are trying to solve with your current framework may be already solved by the new framework with a single line of configuration. So keep an eye on whats coming in and whats going out.
       
8. Keep repeatedly using code snippets/utilities handy
Overtime you may need to write/copy-paste same piece of code/configuration again and again. Keeping those kind of configuration snippets like log4.properties, jdbc configuration etc and utilities like StringUtils, ReflectionUtils, DBUtils will be more helpful. I know it itself don't make you outstanding developer. But just imagine some co-developer came and ask you to help in fetching the list of values of a property from a collection of objects and then you just used your ReflectionUtil and gave the solution in few minutes. That will make you outstanding.
   
9. Know different development methodologies
Be familiar with various kinds of methodologies like Agile, SCRUM, XP, Waterfall etc. Nowadays choosing the development methodology is depending on the client. Some clients are preferring Agile and some clients are happy with waterfall model. So having an idea on various methodologies would be great.
   
10. Document/blog your thoughts on technology
In day to day job you may learn new things, new and better way of doing things, best practices, architectural ideas. Keep documenting those thoughts or blog it and share across the community. Imagine you solved a weird problem occurred while doing a simple POC and you blogged about it. May be some developer elsewhere in the world is facing the same issue on a production deployed application. Think how important that solution for that developer. So blog your thoughts, they might be helpful for others or to yourself.

38 comments:

  1. Hi Siva,

    Nice post. Is there an e-mail I can contact you in private? Thanx.

    Fabrizio

    ReplyDelete
  2. You can reach me @ sivaprasadreddy.k@gmail.com

    ReplyDelete
    Replies
    1. I got a job by saying this answer in my last interview. thanks for awesome help.
      I got more idea about Java from Besant Technologies. If anyone wants to get Java Training in Chennai visit Besant Technologies.

      Delete
    2. hello Mr.Udhayaa Kumar, i'm sharath B.tech IT 2014 passed out. i wanna to learn java, if i join into the besant technologies is it help full for my job? plz reply thanks

      Delete
  3. hi siva,

    really good post,
    all those points seems to be so obvious but
    so hard to follow.

    marek

    ReplyDelete
  4. Would you mind sharing the forums and blogs you read?

    And what kind of methods do you have in your StringUtils, ReflectionUtils and DBUtils.

    Always looking for better ways of doing the same thing.

    Thanks

    ReplyDelete
  5. My favorites are:

    http://java.dzone.com/
    http://www.theserverside.com/
    http://www.ibm.com/developerworks
    http://forum.springsource.org/
    http://www.javaranch.com/
    http://www.learntechnology.net
    http://www.java2s.com/

    From the above websites we can get lot of links to many more other blogs.

    ReplyDelete
  6. Github is your friend, will open your mind and change your life. You can also chekout my blog :) http://geeks.aretotally.in/

    ReplyDelete
  7. Checkout this project I found today: ProjectLombok. Nice huh?

    ReplyDelete
  8. Nice advices, those blogs mentioned in comments are valuable too :)
    Thanks for sharing!

    ReplyDelete
  9. Good post. There is really no alternative to "keep coding".

    ReplyDelete
  10. Hi Siva,
    These are very impressive for me to follow you.

    Thanks a lot.

    ReplyDelete
  11. indeed Good list another thing you can add into this as doing code review, participate in code review , try to explain your code to some one else and you will find that you have missed something. this will also improve your think through ability.

    Javin
    How HashMap works in Java

    ReplyDelete
  12. Hi Siva
    Thanks for this great post

    If you can help, please let me know how to begin on oss. i mean where to look for, which oss project to begin with...

    thanks
    ravi

    ReplyDelete
  13. Hi Ravi,
    You can find so many open source projects on sourceforge.net, googlecode,http://java-source.net/.

    Get the source code and read it and you can definitely find some areas to improve or new features to add.

    Try to implement those features locally and test them and send an email to the authors about your improvements/bug fixes.

    ReplyDelete
  14. Hi Siva,
    Thanks again.

    i have been to some of the oss sites for projects and it really scares me a lot, there are so many projects!!!
    as i dont have the expertise im not able to judge and pick one.
    i have basic knowledge of java, servlets, jsp, struts and bit of spring and hibernate.
    if you know any small project from where i can learn something more on the technologies i already know, pls share.

    Thanks
    ravi

    ReplyDelete
  15. Bhayyya Blog adirindi... i always wanted to learn technology from scratch.. i read few of your blogs very much impressed ... i wish i could become like you one day ..:)

    ReplyDelete
  16. What I have found in 10 yrs of running Java dev teams is that Java developers do not get taught OO priciples in school. What I see is 95+% of devs code Java like it was C. They can't model real world things or ideas in objects.

    Any idea why the universities and extenal courses are so bad in this regard?

    ReplyDelete
  17. Hi Shiva,

    These 10 points are really very helpful and get a good turning pont to be a outstanding java programmer.

    Thanks so much..

    ReplyDelete
  18. Hi Brother ,

    I'm a Fresher. I want to become a Good Java developer. what should i do?
    please help me.

    Thanks in advance.

    ReplyDelete
  19. JavaOne 2013 is apparently being held at Hyderabad this year as well (8-9 May) at the same place guys…. They have also started accepting registrations (check this: http://bit.ly/YMPeJ8 )

    ReplyDelete
  20. hi siva,
    this is satnam singh from Chandigarh (punjab). I m s/w developer as well trainer in java from the last five years. Knowledge always grows with sharing, so can we be a friend (for technical discussions on new technologies). Plz reply me on ssubhi_2003@yahoo.com

    ReplyDelete
  21. Thanks Siva,
    Good Points raised by you to become a good Developer.

    Please refer www.tkhts.com to learn Java, as they provide good content and also examples to learn Java in a better way.

    ReplyDelete
  22. hi siva i am system administrator ( WebSphere ) in IBM and know core java but now i am working in middleware but i want to become developer in java this is my passion so how can i develope my concept in coding please help .

    ReplyDelete
  23. Hi,
    Recently I am getting many comments/emails asking for where to start to become a good java developer if they are coming from various other backgrounds. I think to post another article on this subject instead of keep on replying through emails. I will post an article very soon.

    ReplyDelete
  24. Good to know about it, i think what to learn or say where to concentrate more in Java concepts is necessary to know and your post being a great guide.
    Core java training

    ReplyDelete
  25. I agreed, These are the most important things if someone want to become a professional developer.
    web application development US

    ReplyDelete
  26. Hi Siva,
    I am new in Java technology.how can I check myself to become a good in Java technology.

    ReplyDelete
  27. Thanx for the post . Sir I have just completed engineering and till now I only know core java . What next . I am very confused. Should I learn servelets jsp struts hibernate or should I go for spring . Is learning spring technology only will work and i don't have to learn other technology.please provide a brief overview of what java technologies are required for what purpose and what are the new technologies available now that one should directly learn instead of learning old technologies which are no longer used. Suppose if I want to make 1) standalone application 2) web application so what should I learn which I necessary to create such applications

    ReplyDelete
    Replies
    1. It is better to learn jsp ,servelets and then spring (core,mvc,security) ,JPA-Hiberantes

      Delete
  28. Thanx for the post . Sir I have just completed engineering and till now I only know core java . What next . I am very confused. Should I learn servelets jsp struts hibernate or should I go for spring . Is learning spring technology only will work and i don't have to learn other technology.please provide a brief overview of what java technologies are required for what purpose and what are the new technologies available now that one should directly learn instead of learning old technologies which are no longer used. Suppose if I want to make 1) standalone application 2) web application so what should I learn which I necessary to create such applications

    ReplyDelete
  29. hi siva,
    can you please recommend me some books or websites from where,I can get enough practice materials on java programming.

    ReplyDelete
  30. hey siva ,
    can you please recommend me some books or websites from where I can get enough programming practice materials on java

    ReplyDelete
  31. Excellent post about java technology and very much interesting as well for many youngsters. In order to get Java training, these will be very much useful and helpful for everyone. All the 10 things are excellent info for becoming a java expert. Thanks a lot for everyone and please stop posting spam comments guys. Thanks for java post expecting many more about java technology..

    ReplyDelete