Good vs. Great Developer

As a follow up for the post before, I would like to make you think of the following:

Are you a Good or a Great developer?

If you do not know what is the difference between the two above, just make some time and watch the presentation bellow:

http://www.infoq.com/presentations/Good-to-Great-Developer-Chris-Hedgate

These things you hear in the presentation are not news, or at least they should not be, but maybe they will make you think a bit on the way you work…

I have to say that most of the time is really (I mean extremely) hard to convince somebody to “please, at least try to” leave a clean code after you. And by clean code I mean not nicely indented code, but nicely structured (architectured ) code. I have seen nicely indented code which was totally unreadable…

I still cannot believe how come people with ~10+ years of java development experience have no idea what MVC means, or what a good frameworks should look like. I would not like to speak about Dependency Injection or OSGi bundles… I have talked to developers who have completed a huge Eclispe RCP project and still have no idea what OSGi is… Ad you know what? I would bet that most of them would answer the above question with: I am a Great developer.

Well guys, I have news for you:

YOU ARE NOT and if you do not change the way you think, you will NEVER BECOME.

You should start by identifying in which stage of competence are you:

  1. Unconscious incompetence
    The individual neither understands nor knows how to do something, nor recognizes the deficit, nor has a desire to address it.
  2. Conscious incompetence
    Though the individual does not understand or know how to do something, he or she does recognize the deficit, without yet addressing it.
  3. Conscious competence
    The individual understands or knows how to do something. However, demonstrating the skill or knowledge requires a great deal of consciousness or concentration.
  4. Unconscious competence
    The individual has had so much practice with a skill that it becomes “second nature” and can be performed easily (often without concentrating too deeply). He or she may or may not be able teach it to others, depending upon how and when it was learned.

(snippet from http://en.wikipedia.org/wiki/Four_stages_of_competence)

And for each stage there is something I would recommend:

  1. Unconscious incompetence: Find some people who can inspire you to learn
  2. Conscious incompetence: Attend to Trainings to learn the skills you need
  3. Conscious competence: Practice to become even better
  4. Unconscious competence: Teach others, inspire others, reflect the knowledge

Until next time

Happy coding
N

Being a passionate programmer

It’s been a while I did not post anything on this blog.

This is mostly because I’ve been really busy at my day-job and also because of the fact that meanwhile we (me, my wife and Willy) managed to move to our first home of our own  ;-) ,  so my free time was mostly filled with things around the house. Anyway, I am back.. in da bizz.

Here is one question for you: Are you being a passionate programmer? Or are you trying to become one?

If you ask why, than just check the following article and try to answer by yourself, how do you feel about that?

http://java.dzone.com/articles/passionate-programmer-chad

Happy coding

N

MigLayout – adoption in less than 30 minutes

I have no idea how come I have avoided using MiGLayout for my projects until now, but I have to say that I was stupid. ;-)
Today I taught I give it a chance. As usual I kind of give every component a limited trial time (1-2 hours), to check how mature is. Usually if don’t succeed to make the component work or it does not give me the feeling that it will work nicely, I just remove it from the project and forget about it. So I did with MiG Layout.

Since I use Ivy in my latest project the first step in adding MiG Layout to the project was to define the dependency. Unfortunately that did not went too well at first try. The mvnrepository.com it does not have the latest version of the component, and unfortunately the artifacts are not separated from their dependencies (which are broken for 3.7 version) and to avoid downloading the whole internet, i decided to donwload the jars myself and put them in my shared repository and use that instead. With this in 5 minutes I had the dependecy resolved.

It was time to start coding. As a start I have downloaded the two best docs for the component: Quick Start Guide and the Cheat Sheet right from the site. I taught that if these docs don’t make me feel using this component than i’ll just drop it. Well, surprise these turned out to be the best documents a normal developer needs to check (not to read) in order to use the component.

After a short check I rapidly turned to the form I need to implement and started wondering on how to use the layout manager. As usual, it did not work from the first try, mostly because I am too lazy to read documentation, so after a few tries and a  short Google-ing for some examples (“mig layout example”) I managed to make my form look as I wanted to in less than 30 minutes (including Ivy configuration). And this my friend, is something.

I have to say that I am still amazed how simple it is to use it, and how much time can it spare you when developing GUI’s. In Swing making a complex form is a nightmare. Believe me I have tried every approach(every layout manager) but I could not find a solution which was easy and still covering the needs (which I have to say that are only basic needs).

Starting now, the GUI development is fun and fast (which is even better)  again!!!! ;-)

One more thing (which is really important): MiG Layout works with Swing, SWT and JavaFX.

Nice work Mikael Grev.

Happy coding
N

RCP: Store the state of your application

A really nice feature of RCP applications is the ability of persisting the current state of the application. Well this is realy nice to know that you have such support, but knowing how to do it  is a bit harder. After you find out how to do it than it is a peace of cake.

Check this short article and you will see how simple it can be:  http://eclipse.dzone.com/articles/remember-state

The whole thing is a nice implementation of the Mememento Design pattern.

Happy coding.