Today JavaWorld published my article series "Automated code reviews with Checkstyle" in 2 parts.
Part 1:
Automated code reviews with Checkstyle, Part 1
Part 2:
Automated code reviews with Checkstyle, Part 2
This article series attempts to bridge the gap of code review with applying automated Checkstyle checks in a complete and proactive way. First goal is to make the task of custom Checkstyle rules creation so simple so that any enterprise IT team could create new custom rules suiting to their project (IT standards) needs.
Second goal is to apply these rules in PROCTIVE fashion. Instead of waiting the build to fail or waiting for rule violation reports and working on them in a reactive way, the idea is to apply these checks proactively with Checkstyle Eclipse plugin or applying them at SVN level itself. Irrespective of which IDE you are using, if your code contains some of the high severity violations, you will not be able to commit the code in SVN. You will see the same kind errors and location on SVN console as you see with Eclipse plugin. This is achieved using SVN pre-commit hooks.
Filed under Articles, Eclipse, Frameworks, Java | 4 Comments »
Today InfoQ has posted my article Writing JEE applications with Grails and Flex.
The article describes how the combination of Flex and Grails leads to a highly productive platform for writing JEE applications. It discusses the problems one faces when integrating Flex as client technology and Grails as server technology and details solutions for each of these problems.
The article can be used as a tutorial for writing simple client-server applications with Grails and Flex.
Filed under Articles, Flex, Grails | No Comments »
Effective teamwork is essential in today’s world, but as you’ll know from the teams you have led or belonged to, you can’t expect a new team to perform exceptionally from the very outset. Team formation takes time, and usually follows some easily recognizable stages, as the team journeys from being a group of strangers to becoming united team with a common goal.
As part of my curriculum of “Leadership Training for Software Professionals” at IIM, Bangalore, I came across some very interesting and highly applicable models explaining various stages of team dynamics. It also laid out what we, as managers, should do/expect at various stages of the team maturity.
(more...)
Tags: Agile Team Dynamics, Team Dynamics
Filed under Agile, Articles, General, Project Management | No Comments »
At Agile2008 in Toronto Jeff Sutherland and myself presented our article outlining how to achieve hyperproductivity in distributed Scrum when working in an offshore situation. InfoQ recorded our presentation and will publish it online in November as the end of a series of Agile2008 talks.
Download article
Download presentation
Also see this InfoQ article
If you are reading the Xebia blog chances are that you are already familiar with the benefits of Agile development. Practicing Agile (in our case Scrum combined with XP) delivers hyperproductivity combined with very high quality. The promise of offshoring in the modern IT industry is also clear: more available talent, scaling up and down without local layoffs or knowledge drain, and of course cost reduction. Together they make a killer combo!
However, Agile and offshoring seem like oil and water, they don't seem to mix. How to get a focus on individuals and interactions when your people are distributed across the globe? What is the secret sauce to use to get it running smoothly?
(more...)
Tags: Agile, distributed, offshore, offshoring, prorail, Scrum, sutherland, Xebia
Filed under Agile, Articles, Scrum, Testing | 1 Comment »
Most of the times we are content that our code is of the right quality, if somehow, we manage to get the Static Code Analysis (SCA) tools like Checkstyle, PMD etc. report less number of severe violations. As an example if we see that the class is big in size then we conveniently split it into two or more classes to get rid of the violation. The tool is happy and so are we and most of the times that is the end of the story.
However more frequently than not getting an SCA violation is the start of the story. If you start associating the question “Why' with every SCA violation found then the real reasons start unfolding.
This is similar to the way we resolve impediments on an Scrum project. The impediments rarely represent the isolated incidences of inefficiency. Rather, most of the times they are a part of a larger problem. The way to work out an impediment is fix it so that the team can work effectively and then to look at the root cause which caused the impediment so that the main cause can be fixed. This is called “Bottom-up process re-engineering.”
Similarly the way to work out an SCA violation is to remove it so that the code looks clean and good and then to hunt for the real cause.
(more...)
Filed under Articles, General, Java, Quality Assurance | 5 Comments »
It is another great day, sun shining bright, traffic snarls continuing on roads, the team getting ready for another productive agile day with droopy faces! Droopy faces , why ???
Well because they have to get over the stand-up ritual first before they can get started with some real work.
But is the stand up a ritual??? Aren't stand-ups supposed to be exciting and energizing???
If this a common question disturbing you for a while then it is time to stand up for the stand-up. The details that follow are meant for any team practicing any Agile methodology like Scrum and who has started thinking that stand-ups are no more than an empty ritual which has to be pushed out at the start of the day.
(more...)
Filed under Agile, Articles | 2 Comments »
The origins of lean thinking lie in production and there’s quite a bit of interest in finding parallels between current software development practices and those of manufacturing. The Poppendiecks for instance, frequently quote examples from classic manufacturing companies (Ford, GM, Dell, Toyota) to help understand why agile methods are a very effective approach to software development. Oddly enough they (and many, many others) are hesitant to buy fully into the concept that manufacturing industries and software development have indeed much in common.
Filed under Articles, General | 8 Comments »
We’ve put up a new article on the Articles page. Summary follows:
The article Factories are about abstraction, not creation told what factories are for, and when they should be used. This article will show different ways to implement factories. The complexity that is needed for a factory implementation depends on the required flexibility and how much effort is needed to construct a complete instance:
Filed under Articles, Java | No Comments »
We've put up a new article. Summary follows:
Polymorphism is the main mechanism to create maintainable object-oriented code. Client code uses other code through an abstract interface, and as long as we don't break the behavioral contract, we can change the implementation behind that interface at will.
You will only achieve real maintainability if client code has dependencies to other code through an abstract interface and nothing else.
Unfortunately creational logic will - by its very nature - break this rule. When you create an instance, at some point you will
need call the constructor on the actual implementing class. This creates a dependency that prevents you from changing the implementation transparently, effectively cancelling the advantages of polymorphism.
The solution to the creational problem is to protect the abstraction by hiding the creational logic from the client code. Dependency injection is the ideal solution, in this case the client does not use creational logic at all. But in its turn the injecting code needs to create real instances.
This article is the first of a series of three: this article will illustrate how the creational problem manifests itself, the second will deal with some advanced implementations of creational code, and the third will deal with dependency injection.
Filed under Articles, Java | No Comments »