As per:

Electronic Communications, Postal and Broadcasting Directions, 26 Mar 2020, Section 5.1.4:

All Internet sites operating within .za DNA top level domain name must have a landing page with a visible link to

Good Development Practices: part 1

I have no doubt that I'm currently on the right track in my career. But as I've noticed the last couple of weeks, it does not mean that everyone will be happy...

I'm currently having this itch to get my skills up to what is out there on the Internet. The biggest problem is that there is so much to learn and so little time. One can't possibly master them all. At least I have started somewhere, some time ago.
Firstly I have started off to bash my brains out on Apache Maven. At the time I have started learning Maven we were only using (and still do) Apache Ant. Out of habit I don't take any tool for granted, so I started digging around, getting a feel for the play field, read recommendations, hate-messages, guides and manuals. I can't say that using Maven is outright easy.

Learning Curve
Unfortunately there is no getting away from this. With great power comes great responsibility, or in this case, a heck of a learning curve.
Starting out is easy and even simple, but as you grow in experience and the type of projects coming along, you need to do more complex configurations. Actually it's rather understanding how to configure the different parts of Maven to produce what you want in the end.

Throughout the learning experience there's numerous gotcha's. Moments of understanding and epiphany. As you skills grow, the gotcha's will come around and you will receive enlightenment. Sometimes it's only for a while... :P

Brain Bashing
Without brain bashing there will be no gotcha's and enlightenment. Multi-module projects caused a lot of headaches and frustration due to limited knowledge, pressure and the desire to just make it work. One of the most frustrating phases was when I first played around with dependencies in a multi-module project. I can't recall the issues I had, I think it was circular dependencies, but it never made sense. There are still a lot of moments where you meet a state of frustration which will go away after a couple of google searches ;)

Along comes CI
Surprise surprise... Being able to run Maven on your local machine does not mean that it will in fact work out of the box in Continuous Integration and build. I guess that depends on how you approached the scene. I postponed the CI until I had no more space to back away from it. But now that I got my CI environment set up, everything seems as easy as 3.14159...
Again it cost me several google searches and hours of consuming articles and processing opinions to try out different build systems and form my own opinion on experience. From what I could gather the best free ones are Jenkins and Continuum. A friend uses Bamboo from Atlassian and it seems to be a decent system! I tried Continuum first, then Jenkins, since we use Hudson at work. Then I went back to Continuum and at this stage it appears to work the best or is the easiest to use from scratch. It's not as "userfriendly" as Jenkins though, but nobody said function should be appealing :)

More Brain Bashing
Occasionally there are more bashing going on when you mistakenly configure some dependency and then the build breaks for some unknown reason. Sometimes the reason is just due to a lack of knowledge...

Why all the bashing is for the better
Ok, so you've noticed that I said there is a lot of brain bashing involved :P In this case I blame my lack of knowledge, but this past weekend I spent most of my time (read Saturday AND Sunday) to get a project I have at work and built using Maven, to build inside Continuum/Jenkins. During this time I've learned some small configuration options that I missed out on previously, such as setting context roots. This was quite an important configuration as we use specified contexts and got some corrective advice :P

The reward after the effort
In the end the reward for me is that I can say: "Yes, I can work (use and build with) Maven." when someone asks me. In the longer run the reward will be standardized project structures and uniformity to web convention.


Popular posts from this blog

The Big A

Playing nice with other kids on the block - Using Git in a Subversion environment.

A year of trying better development practices