Jul 11 2010

Unfriendly Developer Pactices – Adding uncessary environmental complexities

A couple of years ago, I began focusing on construction and deployment complexities. I had just joined a new team and began looking for the commonalities between their architectures and environments. Needless to say, they were all different. The most disturbing issue was the amount of effort required for a new developer to start working with an application. If there was any project documentation, it was probably out of date; resulting in hours or even days of trial and error to actually build and deploy the system. In this post, I’m talking about is building and deploying J2EE applications. The following list represents the top developer unfriendly practices I have observed.

Developer Unfriendly Practices
  1. Without first running a setup task in Ant, the project does not build in Eclipse.
  2. The Eclipse .project and .classpath files are not checked into version control system with the source.
  3. The project’s Ant scripts are generic and non-deterministic; they have to be edited for your individual environment before building the project.
  4. The project requires specific libraries or packages to be installed on your machine before it can be built.
  5. Eclipse project not configured as an WTP project.
  6. Minimal jUnits and no continuous integration.
  7. J2EE container dependencies built into the project.

After experiencing these challenges, I began a quest of environmental simplification. I understand there are numerous reasons why projects end up with these unfriendly characteristics,  but leaving them unaddressed was just not in my character! I made it my personal mission to ensure that each project that I worked on, I would try to leave it in a little better shape than when I arrived. This is a never ending activity; I hope that those that come after me will have a similar philosophy and continue my quest. It is amazing how easy and fast an application can atrophy, eliminating all of the positive changes that had been previously applied. To keep things simple, I came up with following three project requirements. I try to weave some aspect of them into the development process and architecture of each project that I work on.

Project Principles

  1. Self-Containment, No External Configuration.
  2. Environmental Awareness
  3. Change Resilient

I hope that most of these principles seem like common sense and are nothing new. Much like many of the XP principals, they are not new or revolutionary, just good reminders of often overlooked practices. I will try to elaborate on each principal in a future post, hopefully, in the near future!

https://www.beilers.com/wp-content/plugins/sociofluid/images/digg_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/reddit_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/dzone_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/delicious_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/blinklist_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/blogmarks_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/google_48.png https://www.beilers.com/wp-content/plugins/sociofluid/images/facebook_48.png

5 Responses to “Unfriendly Developer Pactices – Adding uncessary environmental complexities”

  1. Joachim Arrasz says:

    Isn’t it a good practise to setup a project build without ANY dependecy to an IDE? Why do you leverage on Eclipse as “must have”?

  2. Paul says:

    I agree with Joachim, I actively discourage checking in any Eclipse files so that developers can configure their workspaces as they wish. I know lots of people hate Maven but one of the plus sides, you can just import Maven projects into eclipse using m2eclipse and it sets every up for you in your workspace. The trouble with checking in Eclipse files people get lazy and change dependencies in the IDE but do not update the external build scripts which then break.

  3. Tweets that mention Unfriendly Developer Pactices – Adding uncessary environmental complexities | Soapbox Rants and Raves -- Topsy.com says:

    […] This post was mentioned on Twitter by Simon Brown, Michael Hüttermann. Michael Hüttermann said: I only partly agree with items 2. and 3. @simonbrown: A nice post on overlooked development practices by @philbeiler.. http://bit.ly/auR7wz […]

  4. Eclipse Project Configurations – Shared or Personal? | Soapbox Rants and Raves says:

    […] write about. However, because I received a couple of interesting comments on a recent blog entry, Unfriendly Developer Practices, I thought I should clarify my […]

  5. Ionut-Maxim Margelatu says:

    I agree with Joachim and Paul. Eclipse project files should not be shared via source control, but rather generated ; if you use Maven as build tool, you can use the Maven Eclipse plugin which can generate Eclipse project files based on your POM files. This avoids the need for constant synchronization between your project files and the POM files and also makes sure that no local paths or dependencies creep into your project configuration.

    My 2 cents.

Leave a Reply