Sunday, January 11, 2009

Your journey begins now

Congratulations !!! if you have reached here after completing all tasks. You have successfully completed the JavaInsights 101 course.

I hope it has given you insights about good coding practices, and the Java ecosystem.

This course consisted of writing code, reading code, and blogging. I personally believe (though some people may differ) that all these activities are extremely important to learn and become a successful software developer. I will urge you to continue with all of the above on a regular basis.

Since you are a software developer, your work will largely consist of writing code. This will help you sharpen your skills and learn more, but at the same time writing code at work is not the same as writing code to practice. You must perform periodic coding kata's to improve your programming skills further. Please read this blog post to learn more about coding kata's.

Your work will also offer you plenty of opportunities for reading code. You will often have to refactor existing code. Every time you so this, try to understand how the code functions and think if it same could have been implemented in a more efficient way. This simple exercise will help improve your programming skills. If you do not get such opportunities at work, then visit an open source project of your choice and either study it, or even better participate on the project.

Reading good books, blogs, and articles have helped me a lot. Here are some resources I frequent :
I also listen to the JavaPosse podcast. It is humurous, insighful, and it brings you the latest Java news.

Last but not the least, I would like to stress on the importance of writing. I started blogging so I could share my knowledge, and to improve my own skills. Blogging has helped me improve my communication and technical skills. Writing helps clarify my thoughts and also improve memory recall. Blogging forces me to think about the correctness of what I write. I do not want to embarrass myself by posting incorrect information on the web :-) This makes me think about various pros and cons, alternative solutions, and the like. The thought process which accompanies blogging has helped deepen my understanding of what I write.

I hope my experiences will help you and you will continue with all of these activities. Regardless of this I am sure you will become a very good software developer. As you scale new heights, don't forget to help others on the way, and share your knowledge freely :-)

Finally coming to this last task, write a blog post summarizing the most important things you have learned in this course. Then read some on line resource on programming (you can use the list I have mentioned above), and summarize it on your blog. If you liked the post, or if you have any thoughts on the topic, you may also leave a comment on the original post.

After completing this task, please leave a comment here with your post's URL.

Wish you good luck!

Task: Ensuring code quality with FindBugs

We have written a lot of code till now. We have used Java collections, Swing, as well as threading concepts.

However, cranking code is not all. Software that we write has to be bug free and it also has to be maintained over time. There are several reports which suggest that a bug caught early in the development lifecycle is orders of magnitude easier (and cheaper) to fix than one caught later in the development lifecycle.

Because of this we want to ensure code quality. There are several ways of doing this. Diligent coding, manual code reviews, and automated code reviews. I am already going to assume that everyone is writing their code diligently. We have also done manual code reviews. This task deals with setting up automated code reviews.

FindBugs is an excellent software which statically reviews Java code. Download and install FindBugs as a plugin for your IDE and see how many bugs it reports for your code.

Then understand and fix all the bugs.

Describe what you did, any problems that you may have faced and how you overcame them, in a blog post.

Leave a comment here after completing this task.

Task: Build the project using ANT

Till now we have relied on our IDE to compile code. However, in most organizations, build systems use build scripts to generate a build.

This means that even though individual developers might continue to build using Eclipse's compiler (this does have a huge advantage due to it's on the fly error checking), the organization's nightly build system will most likely use build scripts written in ANT, or perhaps a full fledged build system like Maven. We will not talk about Maven in this course, but we will learn how to create simple build scripts in ANT.

First download ANT, and create a simple build script that will compile your project.

Describe what you did, any problems that you may have faced and how you overcame them, in a blog post.

Leave a comment here after completing this task.