Monday, October 31, 2005

Resource Management: Keep 'em motivated

Managing resrouces is as tactical as it is strategic. Here are some techniques that are sure to keep the productivity of the projects very high, and the motivation of the resources at top-notch levels.

- Start Right: Key to Managing resources effectively, is to identify and hire the right set of resources. Scenario and use-case based interviews, go a long way in achieveing that.

- Planning: Plan out as far ahead as possible. Sometimes it could be 2 weeks, other times it could be 6 months or longer. Planning translates to focus and direction for the teams, thus giving the right momentum for project success.

-Balance project and team interests: It is critical to create a balance between what the demands and needs of the project are, versus what the team members thrive on. Note that different members may have different motivation points. Find those out, and see how the project needs fit with those. Negotiate the 2 to eventual project success. If there is a big disconnect in the two, some changes need to be made.

- Set incremental goals, targets and deadlines: Team members thrive on getting clear targets and delivery times. Fulfill those needs, by giving clear incremental deadlines that are agreed on.

- Set quality Standards: With standards for quality, setting delivery goals will be ineffective. Set uniform standards for the teams and monitor progress.

- Triggers: Identify which elements motivate your team members, and work towards finding ways to meet those. Google encourages its members to spend 20% of their time in innovating on new products that can help the company. Project lenghts are 3 months or so. Every team and company does not have the luxury of achieveing these scenarios, but brainstorm on what you can do in your given scenarios. You might be surprised.

Monday, October 24, 2005

You cannot predict, but you can plan: The Loop Effect...

What are the key Milestones of planning a project or a product. Here is the approach that I call as "the loop effect".
The basic concept in project planning and execution is to have a clear vision about the End Result of a Project, much before the start of the project. Thus a "loop effect".

Here are the key milestones and unique features at each milestone:

1. Defining the project/product goals, and having a clear vision of the end result.
Note: Its vision of the end result, not the exact path or techniques to get there. That you will learn along the way. For example: We want to design a new car that will have a high mileage OR we want to design a mobile-web tool which helps user to easily get informaion on traffic delays and use alternative routes easily.

2. Define key features and key contraints
This is very important early on in the product/project development lifecycle. Key features will lay out the benefits as well as the complexity of the project. The contraints will lay out the feasibility of the plans, and lead to innovative solutions, alternative planning, building roadmaps and creating a successful strategy.

3. Define Alterative solutions and their strengths/weaknesses
You will probably have 2 to 4(or more in some cases) potential solutions. Make a list of strengths and weakness of each solution. A common trend will start of appear at the end of this, and you will discover some patterns. For example, if we use this technology we have a high risk of maintainability, or this solution will give us all the flexibility we need but no product differentiation.

4. Pick Top 2 Solutions and Explore details (Prototype, test cases)
For all practical purposes, you will have time to pick at the most 2 potential solutions to experiement with. Build prototypes and proof of concepts to target the high risk and high impact areas.

5. Select the winner or Eliminate 1 or both.
The project enters a tricky phase. If you have a Clear winner, you are golden to move forward.
Most likely you will have issues with both solutions, but one with a edge. Verify that the contraints with the solution are not conflicting with the Vision of the product.
Go back to the drawing board at this stage!! (Back to Step 3, or 2 or 1 in some rare cases).

6. Detail plans and Execution.
All the planning of steps 1-5 will pay huge dividends here. The path to detail planning and execution will have far less issues.
Note: Monitoring Progress will be very important in this phase of the product.

7. The final countdown.
The project is very close to launch. This is a special time in the project. A typical scenario: Time is running out, many pieces are falling into place, but there are some glaring issues.
Note: Plan with the Expectation to make some major changes during the last stages of the project.

The loop finally closes, and hopefully the vision becomes a reality.

These general guidelines help in giving structure and a starting point for product and project planning.

Monday, October 17, 2005

Future of Struts Framework?

Struts has competition: Java Server Faces, Spring MVC model.

Mainstream Enterprise scale Applications in the industry are adopting the new frameworks, while also mostly maintaining existing structs applications.

In this environment what is the future of Struts? Will it evolve, merge, or start to fade?

This raises a bigger issue about use of frameworks and their maintainability. What can application architects do to keep the balance between current(better framework) and future needs(maintainability, flexibility)?

What can designers of the frameworks do to keep the future in mind. Technologies mature, business needs mature, the markets mature. The best example of this is Spring Framework. It is designed to keep the dependence on the framework libraries to be very limited. What else can be done?

Friday, October 14, 2005

Applying messaging in the enterprise and beyond

I wrote these comments to a post about the Need for Messaging:

The comments are as follows:
The benefits of Messaging are in Asynchronous processing. The advantage of better dealing with Network Unreliability and Loose coupling of applications, comes with an overhead of extra processing(and possible delay in the results), and complex programming model(including troubleshooting and maintenance).
In my experience, the applications that well suit to Messaging include Web Applications to Legacy Integration(Loose couling, resource management), Distributed Workflow applications (Which are loosely coupled inherently and need the extended transaction support). Messaging is more a binding technology, rather than a enabling technology.
Some of the examples that are cited in the slides, do look applicable for messaging, but I would like to raise some caution over the side effects of some of those. eg. "Granting High priority to some clients": Would this come with a price of a much complex infrastructure to maintain. How about having a separate dedicated machine for high priority clients, and a router to route the traffic to the server(s). "Handling huge bursts": Messaging can potentially slow down the regular processing of requests, so the design should keep that in mind. "Remote Flaky connectivity": Most applications might need special applications to handle this situation in any case. It would probably take more than messaging for this one; such as A local datastore, sync features and more.
Excellent slides overall. Thank You.

Some additional thoughts on Trends in Messaging Infrastructure:

Having raised some items about the potential complexities and side-effets of messaging, I do feel that Messaging based applications will be growing exponentially in the enterprise and internet based applications(and websites). Integration of applications, tools, services, is a clear trend and direction that will make messaging more and more critical in order to build a seamless and robust experience for the end-user.
Messaging based frameworks and patterns will keep maturing(or so I hope) in order to make the overall management of message based applications robust and effective to manage.

Call Web Services with AJAX

This is nice article on using Web services with AJAX. The complexity arises as the SOAP Envelope contains multiple namespaces. IE 6 does not implement the getElementsByTagNameNS function.

The article explains how to use the Web Services JavaScript Library to retrieve the details from the SOAP service. A must read....

Thursday, October 13, 2005

The Maven Advantage: Review: "A Developer's Notebook"

The Maven framework enables project teams to organize, configure, and collaborate effectively.
"A developer's Notebook" is an excellent resource to understand multiple perspecitves of Maven.
Along with insights on how to develop and organize projects using Maven, the book skillfully discusses the current status of the Maven project(Maven 1 and Maven 2), Key differences and relationships beetween Ant and Maven(yes, they do not compete but collaborate), the short and longterm benefits of using Maven, details on how over 30 plugins tie together with Maven(such as Cruisecontrol, XDoc, Multiproject, Checkstyle, Findbugs, File-Activity, Site, Test, Artifact, Developer-Activity, Clover, and many more).
And there-in lies the power of Maven. The ability to bind multiple plug-ins to create a comprehensive, repeatable, and reusable team and project collaboration environment.

What I really enjoyed in reading this book, is the writing style and the format of the book. It is precise, yet insightful. The authors openly discuss things that should and should not be done to use the benefits of Maven. Multiple cases elaborate how to perform and extend goals with Maven. If you are looking for a practical guide to get upto speed or excel in Maven projects, this is a must read.