Blog

What You Need to Maintain Effective Agile Software Development

Kal Nasser
Insurance Experts' Forum, September 16, 2013

Past wisdom in software development held that the proper sequence of events should start with perfect requirements, followed by perfect design and planning, ending with implementation. The flexibility promised by agile methodologies of software development, according to that view, is as costly as deciding the kitchen in a half-built house is not in the desired location. Besides, what is the meaning of software architecture if we allow for shifting designs and evolving features?

To answer that criticism, one must examine the underlying concepts supporting traditional waterfall development:

• Perfect planning is possible;

• Change is inevitably costly

• Architecture must result in rigid unchangeable results

Perfect planning isn’t possible. It is a disservice to the client to impose upon them the requirement of a perfect plan or the acceptance of an undesired result, if an alternative is possible. In the real world, knowledge of the business is dispersed among many stakeholders, concepts suffer from varying degrees of vagueness, and the desired outcome often begins to crystallize after the work has begun. It is therefore more cost-effective to have the right technical talent that can function in an interactive environment with the stakeholder, and adapt the work to an evolving plan.

Secondly, change isn’t always costly. The cost of change can be minimized if enough flexibility was implemented in the solution in the first place, which is why planning a functionality must include the feature of making said functionality changeable and not set in stone. The extra initial cost in doing that reduces the risk of a higher cost being incurred at a later stage.

And lastly, architecture does not equal rigidity. Proper software architecture makes use of techniques that reduce dependencies, generalize software components and anticipate changes in the design itself. To compare that to the half-built house analogy, the ceiling is not resting on too many walls, and the infrastructure for the kitchen is in many places in the house.

The practice of writing flat, unidirectional software, based on the theory of the perfect plan has resulted in legacy software that is hard to change, maintain or understand. The evolution of the software engineering discipline is in part a response to that problem. The common threads in modern software design concepts indicate that.

For example, the concept of encapsulation in object-oriented languages, where the inner workings of a software entity make that entity a black box that can be replaced without having to change its context, directly serves the need for flexible architecture at the lowest level. The concept of “pure functions”, in functional languages, where a function is by definition unable to change its environment (making the function easy to “unplug” and replace), also serves the same end result.

Proper architecture also makes use of established and proven design patterns, selects the right patterns for the task at hand, and adapts them when needed based on the specifics. This increases the effectiveness of the planning stage by a) avoiding reinventing the wheel, and b) greatly reducing the number of possible paths that need to be explored to a select known few.

It takes a certain attitude to embrace the agile approach: one that thrives on innovation, freedom and work that never stops improving.

Kal Nasser is a software developer with X by 2, a technology company in Farmington Hills, Mich., specializing in software and data architecture and transformation projects for the insurance industry.

Readers are encouraged to respond to Kal using the “Add Your Comments” box below. He can also be reached at knasser@xby2.com.

This blog was exclusively written for Insurance Networking News. It may not be reposted or reused without permission from Insurance Networking News.

The opinions of bloggers on www.insurancenetworking.com do not necessarily reflect those of Insurance Networking News.

Comments (0)

Be the first to comment on this post using the section below.

Add Your Comments...

Already Registered?

If you have already registered to Insurance Networking News, please use the form below to login. When completed you will immeditely be directed to post a comment.

Forgot your password?

Not Registered?

You must be registered to post a comment. Click here to register.

Blog Archive

To Quantify or Not — That is the Question with Modernization

Making the quantitative case is a long-practiced ritual in many insurance organizations.

3 Reasons DevOps Matters

Every insurer needs to compete on products and information turned around in light-speed fashion.

Coordinate Coverages to Manage Social Media Exposures

The bottom line is that no one policy will cover all the exposures in the social media realm.

The Internet of Things: Helping Insurers Make Better-Informed Decisions about Risk

The IoT is a major game changer for the insurance industry, and will likely affect every part of the insurance value chain. After all, insurance is data-driven, and that’s exactly what the IoT can deliver—relevant, actionable, real-time data that can provide an accurate picture of what is being—or may be—insured.

Software-Defined Everything

What does it take to virtualize all the key components in your data center?

On Thanking the Regulator … Really

The Financial Conduct Authority is demanding higher standards of consumer protection from insurers, which could lead to greater customer engagement and understanding.

Advertisement

Advertisement