Archive

Posts Tagged ‘Agility’

Agility Flexibility For Software Product

October 21, 2013 1 comment

Agility and Flexibility

[ There is an interesting discussion in ProductNation on Customizable Product : An oxymoron which triggered me to write this post]

I find many people use these words interchangeably. However the distinction is important and source of value. Agility can be engineered with proven techniques and best practices. With advancement in software engineering there is convergence on the tools and techniques to achieve agility and it may no longer be a source of differentiation but a necessary feature. Flexibility on the other hand requires deep insight into diverse needs and types of usage and done imaginatively can provide great value to users and be a source of competitive advantage.

                                   

   

   

The online Merriam-Webster     dictionary offers the following definitions:

   Flexible: characterized by a ready capability to adapt  to new, different, or changing requirements.   

Agile: marked by ready ability to move with quick easy  grace.   

 

In Software product context it may be more appropriate to define agility as the ability to change things quickly and Flexibility as the ability to achieve a (higher) goal by different means. So ability to value Inventory by different methods like FIFO or LIFO or Standard cost is flexibility. The ability to change commission rate or sales tax rate quickly (generally by changing a parameter in a table of a file and avoiding need to make code changes) is agility.

There is a range or scale ( 1 ..10)  of agility. Making changes in code esp 3rd generation languages like Java, C# is the baseline. Using a scripting language like Javascript , Python may be less demanding then compiled language but it is still not as agile as most users expect. Most users would rate it simpler to update a parameter in a file or a simple user interface like a Excel type spreadsheet as simpler and faster. Changing logic by using a If-Then type of rule base is in-between. Simpler then coding but more complex then table updates.

You should have picked up some inter-related themes here. Complexity or need for skill in making changes to a scripting or Rule engine . Need for easy to use interface to make the changes. Need for relatively easy and error free method of making changes. If you need to update ten parameters in ten different places or change 17 rules in a  If-Then rule base it may not be as simple and is less agile .

Most modern Software products are fairly agile with scripting, table based parameters and rule driven execution engine. The use of style sheets in generating personalized User interface, specialized components like Workflow or process management engines etc also provide agility.

Flexibility is a different beast. Layered architectures and specialized components for workflow, rule execution and User experience can make it easier to accommodate different ways to do the same things. They make it easier to make the necessary changes but they do not provide flexibility as such. End users do not value the potential flexibility of architecture but the delivered functionality. This is a major problem. Even Analysts from Gartner , Forrester do not have a good way to measure flexibility and use proxy measures like number of installations or types of users ( Life Insurers and Health Insurers or Make to order or Make to Stock business).

Flexibility is derived from matching the application model to the business model and then generalizing the model. I will illustrate with a concrete example. Most business applications have the concept of person acting as a user ( operator) or manager authorizing a transaction. So a clerk may enter a sales refund transaction and a supervisor may need to log in to authorize this refund. The simplest ( and not so flexibly) way to implement this is to define the  user as clerk or supervisor. A more sophisticated model would be to introduce the concept of role. A user may play the role of clerk in a certain transaction and a supervisor in another.  Certain roles can authorize certain types of transactions with certain financial limits. So user BBB can approve sales refund up to 100,000 INR as a supervisor. However BBB as manager of a section can initiate a request for additional budget for his section. In this BBB is acting as a clerk and DDD the General Manager who approves the budget extension request is acting as a supervisor. This model is inherently more flexible. It is also not easy to retrofit this feature by making changes to parameters or If-Then rules. If the Application does not model the concept of Role all the agility in the product is of little use. Greater flexibility can be produced by generalizing the concept of user to software programs. So in certain high volume business a “power user” can run a program which can automatically approve a class of transaction under certain set of control parameters. This “virtual user” is recorded as the approver on the transaction. The application keeps a trail of actual control parameters and power user who ran this “batch”.

Flexibility comes from a good understanding into user’s context and insight into their underlying or strategic intent. Business and users will vary the tactic used to meet their intent based on context. Consider a simplistic example to illustrate. I need to urgently communicate some news to a business partner. I try calling his cell but to no use. I would send a SMS ( India) but if a US contact ( who are not as yet fans of SMS or Text) leave a voice message on his phone or send a email. A Smartphone that allows me to type a message and send as SMS or email is more flexible then one where I have to separately write the email or the SMS.

Frequently Software designers and Architects generalize all types of changes as extensions. They are not interested in understanding intent and context of usage and want a horizontal generic solution to all changes. This leads to overly abstract design with extension mechanisms to change logic, screens and database and reports. In essence to develop a 4th generation programming environment or Rapid Application Development Environment (RAD) . These help by making programming easier and faster but are no substitute for understanding user’s context and designing the application architecture to match and exploit them.

 Users relate to a product which speaks their language and seems to understand them. They also get excited and impressed when they see new ways of doing their business and improving their revenue, reducing cost and improving customer satisfaction. Most managers want to make changes incrementally. So ability to “pilot” changes to a smaller segment of users, customers and products while continuing in traditional way with the larger base is of great value. That is ultimate flexibility.

Flexibility is not a mélange of features haphazardly put together.  I have seen many service companies developing “Flexible Product” by adding every feature they can see in other offerings. Invariably this leads to a mythical creature which does not work. If you put a Formula 1 Race engine in a Range Rover chassis with a Nano steering  and Maruti wheels you have a car which does not drive!! A Formula 1 car is intended for maximum speed and acceleration that is safe while a goods carrying vehicle is intended for maximum load carrying with optimum cost of fuel usage .

Delivering Flexibility requires heavy lifting in developing a good understanding of user’s domain, their intent and context. It adds value by simplifying the feature set and matching users intent and context.. If we can use our imagination and understanding of technology trends and capability to provide more then users have visualized we can lead them to newer ways. Leadership is an important way to differentiate your product. Invest in doing this and reap benefits.

Strategy as White Water Rafting

May 30, 2012 2 comments

Introduction

Developing a long-term strategy in today’s business environment is very challenging. Especially in the software industry, the environment is changing so rapidly that strategies might become obsolete soon. The only strategy that makes sense is to keep revising your approach in step with the changes happening around you. An external focus is very crucial for this. Business today is more like a war and it is very important to understand what the old way of working was and what the new paradigm is.

Strategic assumptions, management structures, information systems, and training programs geared to a competitive battlefield of the old days no longer hold good. The rules of engagement have changed and Strategic mind-sets also need to change. Today’s business environment is characterized by some common elements[1].

Friction

A force that resists action! A Lot of the things that apparently seems easy to do suddenly become difficult to do and a lot of difficult things appear impossible do to. For example, finding out touch points, events and sale opportunities for a CRM model looks easy but the effort does not move because of inability to decide and take action. Another symptom of friction is the ‘80% complete’ syndrome. Many projects start off ( Namma Metro Construction in Bangalore)  ) but they never seemed to get completed or closed after that. Another example could be the writer’s cramp while writing a Whitepaper. Friction is the inability to get started on an initiative or the inability to close something that has been started. The cause may be mental, as in indecision over a course of action or it could be self-induced such as a lack of clearly defined objectives and unclear plans or it could be physical as in lack of resources to get started. Whatever form it takes, friction definitely has a psychological as well as a physical impact.

Uncertainty

Business is always conducted in a ‘fog of war’ – one does not know what the competitor is doing, one does not know which technology option will succeed, one does not know who is helping as a partner and who is exploiting the situation. Actions in business are based on incomplete, inaccurate or even contradictory information. Gartner may predict certain events; Forrester may contradict them. You may have some inside information that throws a different light on the story. What is the truth and what is not is not clear. But decisions still have to be made and made fast. This involves estimation and acceptance of risk. Higher the risk higher the gain or loss and hence an ability to take prudent risks becomes important.

Fluidity

Business environment does not remain stable at all times. Each episode is a temporary result of a unique combination of circumstances requiring an original solution. No episode can be viewed in isolation. Each episode is shaped by previous ones and shapes future events. Success depends on the ability to adapt to change. Mergers and Acquisitions change a lot of the global scenario. New services, new products and new channels appear and we need to adapt fast to such changes. We need to see emerging patterns (e.g. 24/7, self service) and prepare to adapt.

Disorder

Uncertainty, Fluidity and Friction usually are a recipe for disorder. Under pressure situations instructions would be unclear and misunderstandings would happen, communication will fail and mistakes would be commonplace. This is evident in any of our sales closing situations. Wrong prices, inconsistent numbers and information seem to get passed to the customer creating a lot of confusion. An inability to work in teams is displayed when different people give different messages.

White water rafting is a sport that exemplifies the current business scenario and how the rafters have to navigate at extreme speeds without losing control and negotiate rapids and falls without losing balance. White water rafters have to continuously deal with friction (Is the fall safe?), uncertainty (which course to take for a safe landing?), fluidity (Each rapid is unique requiring unique maneuvering skills) and disorder (Each rafter is trying his own stunts).

The White water rafter[2]

Image

Managing in the old economy was like piloting an ocean liner at sea, while managing in the new economy is surely like negotiating the white water rapids of a narrow river in an inflatable raft. Technology is driving the new economy at an enormous rate of knots and producing subsequent turmoil in the business world.

Business Environment Whitewater Rafting Analogy
Time Moving downstream on the river is the passage of time.
Change in Technology The rate of the river’s flow is the rate of change of technology. When the water is flowing smoothly in the river, rafting is easy. Technology in the days of COBOL was like rafting in a smooth river without much turbulence. The river flowed at a constant speed and frequent changes in course and direction were not required.
Disruptive Change Waterfalls in the river’s journey are those sudden changes in the business environment that are disruptive such as the appearance of the Internet. Rafters who do not gear up to flowing down the waterfall inevitably flounder. Those rafters that successfully navigate through the waterfall continue on the onward journey. Sometimes a lot of hype is created for certain waterfalls as being disruptive. But when the rafters reach the place, they may not find anything more than a small rapid. Technologies such as WAP have appeared on the scene but have not created much impact. Currently there is a lot of hype on the opportunities that the social marketing may uncover. Only when the rafters reach the point, we will know. But it does help to be prepared.
New Technology Rapids in the river are like new technology. The rafters need to maneuver through them and sail across. Face book for the enterprise, Mobility, etc are examples of technology that businesses may need to adopt.
Competing Technologies Forks in the river signify an option to choose. Rafters may need to decide which course to take. Whether to take the Adobe Flash route or the HTML5 route is a choice to make. You may wait and see where other rafters are going or you may analyze and make a decision. It may be possible that certain branches in the river meet up later.
Business Opportunities The rocks with vegetation or the forests alongside the river are the business opportunities. Rafters may need to stop, check for vegetation or move on to new opportunities. Guerilla teams may go into the dense vegetation and find out if there are business opportunities.

Read more…