Everything you need to know about software development and Agile

You have already heard about Agile, but might want to know more, so here is everything you need to know about software development and the agile methodology.

Where does Agile come from?

Agile DevelopmentSoftware arrived along with the personal computer in the 1970s and 1980s.  1977 was the time when the Apple II was released, as well as when operating systems were created.  These operating systems had to perform many tasks and calculations, and took a long time to write.

The development process was one in which the scope was already defined up front and couldn’t be changed.  This meant long lead times and frustrated developers.

The thought that there had to be a better way to build software was what drove Jon Kern and other developers to create Waterfall.  It was the first software development lifecycle model that was used in successful development projects.  This approach divides the software development process into separate phases, starting with a requirement analysis and ending with a maintenance phase.  This is the final phase where any issues are fixed (with a patch).  It is also in this phase where any enhancements to the product are released.

One of the problems with this method is that if things aren’t well documented or thought through at the conceptual or analysis phase, it isn’t easy to go back and make any changes once an application is in the testing phase.

This was the software development method from which Agile stems.

The Agile Manifesto

Today, Agile encompasses a vast collection of methodologies and techniques all with a strong tie back to the agile manifesto and the earlier evolutionary history of iterative processes.

The Agile Manifesto, drawn up in 2001 by a group of 17 industry leading experts, places a much greater emphasis on people and communication (as opposed to process formalities and documentation).

Through uncovering better ways of developing software by doing it and helping others do it, software development companies value the following:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Agile methodologies in general are characterised as being less documentation-intensive and producing more useful and efficient software. This usually means that the project actually delivers less, but more valuable software.

What is Scrum and what does it have to do with Agile?

Scrum is a part of the agile methodology used to manage agile projects.  This process framework is used primarily for software development projects with the aim of delivering new software capability in 2 – 4 week cycles – referred to as Sprints.

Information is made transparent within a scrum, allowing people to make changes during the development cycle rather than at the end.

A number of events occur in a Scrum, and include:

  • Sprint Planning (Sprint backlog) – At the start of each sprint the project team will commit to completing a number of items. These items are added to the product backlog, forming a sprint backlog.
  • Daily Scrum – During each sprint, the project team will meet on a daily basis for a very brief daily scrum. It is here that daily activities, progress and issues are discussed.  The purpose of this meeting is not to discuss issues in detail, but simply for team members to communicate daily so that everyone is aware of the entire team’s activities, progress and potential problems.  Issues highlighted during the meeting that require further discussion are set aside for specific action by involved team members after the meeting.  In particular each team member must answer three questions in the daily scrum meeting, namely:
  1. What tasks have I completed since the previous scrum meeting? (i.e. in the last day)
  2. What tasks will I complete before the next scrum meeting? (i.e. in the next day)
  3. What impediments or obstacles am I facing that might be or have been preventing me from completing tasks as expected?
  • Sprint Review – Once the sprint is complete, it is reviewed, and the team demonstrates what was accomplished during the sprint. The goals identified during the sprint planning are reviewed, and each backlog item assessed.

The definition of completion includes all activities related to a functional requirement. So a piece of functionality is only considered complete if it has been fully tested, documented and deployed.

At the end of each sprint (2-4 weeks), completed functionality is demonstrated to the client. Ideally this functionality will also be deployed to a live environment at the end of each sprint.  This is so that the business can start benefitting from it as quickly as possible.

Agile Sprints

The Xpedia Scrum methodology

Xpedia applies the principles of agile application implementation in its project approach.

In particular, the Scrum methodology is used to manage agile projects.

Management of project scope is an important part of any project and is addressed effectively in the Xpedia methodology. This is done by managing scope as the single variable in project, thus placing a strong project management focus on managing scope effectively. This concept is illustrated by the scope-time-cost triangle.

scope-cost-time triangle

The scope-time-cost triangle represents the principle of compromise between scope, time, cost and quality. Any significant change in scope will have a corresponding effect on time and cost.

Quality is represented by the shape of the triangle, a balanced equilateral triangle representing good quality and an unbalanced scalene triangle representing compromised quality.  For example, one can increase scope and cost without affecting timeframe by asking consultants to work overtime.  This could be quite successful, except that if consultants work significant amounts of overtime over a sustained period, there is invariably loss of quality as people simply deliver better quality if they are not overworked.  Similarly, cramming too much scope into a limited timeframe and cost is usually achieved by taking shortcuts, which again represent poor quality.

Xpedia prides itself on delivering quality solutions and will at all times strive to ensure that high standards of quality are maintained and will not be compromised by scope, time or cost pressures.

Thus, Xpedia sets fixed standards of quality and fixed time and cost is agreed with the client at the start of the project.  Over the duration of the project, the only variable remaining is therefore scope.

Because scope is limited by the fixed factors of time, cost and quality, any new requirements must be evaluated against requirements already in the current scope.  If a new requirement is more valuable to the business than some of the requirements already included in the scope, it may be included, but this will mean that the lowest priority requirements, at the low end of the product backlog will be excluded.

This approach ensures that quality is delivered; flexibility is available to cater for new requirements as they arise without affecting the overall project cost; and that return on investment is always optimized to include only the most valuable requirements.  The client always has the option to extend the project to include more requirements, but this doesn’t need to be considered until the most critical requirements are already met and the business is already benefitting from the use of the software.

Why use Agile for software development?

To optimize return on investment is a big reason why to use the agile methodology.

By using Agile in your software development process you can ensure:

  • Higher productivity
  • Better-quality products
  • Reduced time to market
  • Improved stakeholder satisfaction
  • Better team dynamics
  • Less risk

Sources

  • scrum.org
  • versionone.com

 

How do you calculate ROI for software development?

Return on Investment, or ROI, is a figure you need to understand and determine at the very beginning of a project to ensure you get a positive return on your investment – so how do you calculate ROI for software development?

In the past (decades ago), software was considered a necessary overhead expense, it was a cost to a company.  Now a business considers software as a critical part of their infrastructure and competitive advantage.  So this means a software development project needs to be run like a profit centre, and this means performing the requisite sums to get the funding to run the project.

Why ROI for software development?

ROI is a very valuable financial measurement to determine how a company’s resources will be used to deliver maximum profit.

The goal of software development is to generate more revenue than it cost to develop the product, or at the very least recoup the investment made into the custom piece of software.

Here are a few reasons why you should bother with software development ROI:

  • it enables the real success of the project to be fairly judged
  • helps justify future development projects
  • enables finance to ensure the organization gets value for money.

It also assists you to:

  • determine and quantify benefits over time
  • determine total ownership costs against schedule
  • determine if a project is worthwhile.

The main resources of a company are money and employees’ time, and everyone wants to save both.  Performing an ROI analysis will help in doing this, and to fund the software development project.

ROI depends on the software that is being developed

Creating software is generally not a straightforward job, and trying to calculate the projected return isn’t either.  At the start of a project, all you really have to work with is the idea of the software you want to build, which doesn’t help your ROI predictions.

ROI will depend on the type of application or software that is being created.  The return for a business process software product will be different for a commercial software product.  Thus, the ROI is calculated differently for these two types.

  1. Business Process Software

This type of software will typically be created to handle the workflows and processes of a business.  The measurement of this software will be in the improved efficiency of a process and will be measured in hours.

Some considerations when projecting your ROI for this type of software development project:

  • How much time will the new software save your company
  • Will sales increase, is upselling and lead conversion going to improve
  • Will any unnecessary business communication be reduced
  • Is maintenance going to be improved, up time increased, can you consolidate inventory and resources
  • How much extra data on your supply chain will you gain that can inform you of potential bottlenecks and slowdowns
  1. Commercial Software

The focus of this software is to make sales.  The measurement of this investment will be increased sales and revenue.

To project the ROI for this custom software project, you should ask the following:

  • Is there a market for your software? Always start with the market research.
  • How much will it cost you to get a new user or lead?
  • What will your customer retention rate be?
  • How will you provide support to your users? How will they contact you with questions or issues?
  • Are you going to incorporate an annual license fee with your software product, or will it be a once off retail cost?

Calculating the ROI of software can seem daunting. But if you do the research ahead of time, calculate costs accurately and honestly, you can be in a better position for success.

Calculating the ROI of software development

The concept of ROI and the measurement of ROI can vary because there are different criteria by which to measure ROI, and there are many ways to quantify it.

The basic ROI calculation is the ratio of present value of expected benefits over the present value of expected costs, or:

ROI = (PV OF EXPECTED BENEFITS / PV OF EXPECTED COST) * 100

Other calculations that are typically produced at the same time as calculating ROI are:

  • NPV (net present value) – the return a project will make at a specified discount rate.
  • IRR (internal rate of return) – the yearly return % of the investment.
  • Payback – the number of years it takes to recover the investment.

Projects with an ROI of more than 100% are more likely to get the funding you need.  Projects with an ROI that is less than 100% will need a very strong business case as well as strong executive sponsorship.

Something else important to consider is the expected payback from the project. When the expected benefit exceeds expected costs, and that benefit is expected to be realized within the first year of the project implementation, the more likely the project is to proceed.

Getting the funds for a software development project must be built on a strong business case, and getting help from a financial person will ensure that you quantify the ROI for a new project even if you think that you couldn’t.

Measuring the ROI of software development

Once the software has reached the market, you will hopefully have made many sales.  This is the measurement of a successful ROI.

You developed software to improve your internal business processes.  These business processes are now more streamlined and more efficient.  This is the measurement of a successful ROI.

The measurement of the ROI of your custom software development project is the evidence that is provided by the newly developed software.  This is the proof that the investment was well spent.  You can see the returns as your software is sold or implemented successfully.

Your custom software development investment will continue to provide returns.  These benefits that will provide the returns include:

A competitive advantage – technical innovation keeps a company competitive.  Keeping your technology and business processes updated keeps your business thriving.

Efficiency and productivity – a custom software product ensures your specific business needs are addressed, increasing productivity and efficiency.

Ongoing flexibility – a custom software product can evolve with time, as the requirements of a change, allowing for continuous business growth.

No shelf-life – custom software development means no ongoing updates and license fees which means no additional and ongoing costs to your business.

Software development and ROI

Xpedia are a world-class software development company based in Centurion, South Africa who can create custom software.

The Xpedia development team boast skills across multiple technologies including PHP, MySQL, Microsoft SharePoint, Microsoft SQL Server, ASP.NET, C#, Oracle database, SQL Server Analysis Services and Reporting Services, and more. They have experience integrating with a wide variety of systems using everything from file-based integration to SOAP or REST web services.

Through a combination of prioritizing development effort in order of expected ROI and fixing project cost and duration up front to keep costs under control, Xpedia have developed its processes and methodologies to provide clients with optimal ROI from software development.

Sources

  • idealware.org
  • techrepublic.com

The Custom in Software Development is for Customer

Custom Software DevelopmentAs the project initiator, and the one who funds custom software development, it stands to reason that the customer is the most crucial part of the development process, and why the Custom in software development is for Customer.

Custom software development means taking a customer’s idea and creating a product that they love.

This sounds so easy in words, but in practice, it isn’t.  It isn’t just development that is required, but a whole host of other project related steps that need to be followed to reach a successful end.

The first and last task, and all other tasks in between must ensure that the customer is happy.

Firstly, why would you want custom software built?

There are many reasons, including that it is:

  • Bespoke – tailored to fit the needs of your business.
  • Scalable – custom software is more scalable than off-the-shelf software packages. When your business grows, your developer can continue to maintain the program.
  • Cost effective – developing custom software will prove beneficial in the long run. In addition to no licensing of extra hardware, custom software does not require constant change or development and can be used without any investment for a long time.
  • Integration – custom software development can operate with the software packages your business already uses.

Now that you have decided that you want some custom software built, you need to get the project started.

Define the project cost and timeline

Before development begins, you need to clearly define the following:

Cost

What cost implications are there for the customer?

Time

How long will the development take?  Obviously you need to be realistic in the time needed to develop a quality product, but you also need to take heed of the time requested by the customer.  A compromise will probably need to be reached.

Control cost and scope changes

It’s easy to let software development costs run out of control. There are always more ideas that come up as a product evolves about how it might be improved and how it might be expanded.  This can easily result in projects that continue indefinitely with escalating costs.

A fixed-cost, variable-scope approach works best to stop this runaway train. This means that the cost and timeline of the project is fixed at the outset.

Aside from controlling costs, this allows the customer to plan related activities, like product launches and marketing campaigns, around a fixed release date.

The scope is variable, because as the product is delivered incrementally, the customer has the flexibility to change requirements for any features not yet developed as no effort has been expended on these.

This allows the customer the flexibility to re-prioritize based on changing circumstances by re-ordering the product backlog according to expected return on investment (ROI) within the fixed cost and fixed time available.

Because highest ROI features are built first and completed before any effort is expended, the customer is assured of optimal ROI from the project as a whole. When the release date is reached, the final software is delivered and as each increment included working software, this will be a usable iteration of the software that the customer can implement and use in a productive environment to start realizing the returns on development investment.

At the end of the project, the customer can then decide whether further development in additional features would be warranted by doing a simple cost-benefit analysis.

Importantly, this approach requires discipline to stick to the agreed timeline and cost. When this is done, pro-active management of scope through backlog prioritization as well as in the minutiae of detailed requirements that are agreed within each sprint becomes more informed and intuitive. This allows working product, without unnecessary features or bloated scope, and with a high relative ROI to be delivered within the agreed time and cost.

Iterations

To ensure that your development is on track, keep in regular contact with your customer.

Show them the development of the software on the agreed upon dates.  If you need more information from the customer, ask them.

Don’t waste time thinking you know what the customer meant – clarify and continue with the development.  The customer will be glad that you made contact with them.  They won’t be glad if you miss a deadline.

Potential potholes in the development process with in-house development

There are bound to be challenges during a custom development process, and it is important to be aware of them to resolve these problems.  Outsourcing is a great solution if your in-house team is not equipped to handle a project.

The problems include:

  • Skills shortageThe team working on the project could lack the knowledge required to complete the task.  This is common when an in-house team begins work on a project, only to realise once they are down the line, do they lack the skills to complete it successfully.
  • Lack of planningProper planning is a necessity.  Often it isn’t clear what the client wants from the software solution, or they want too many unnecessary features – without a clear vision of what is needed, both time and money can be wasted.The custom software should add value to a company, so it is important to work with a clearly defined plan to create this custom software.
  • Uncontrolled costsCost estimates need to be defined at the start with the custom software development team, with a buffer added for any extra features that crop up during development.  These costs should be monitored closely, and are linked with the time of development – you don’t want lost track of either of these.
  • Not enough communicationNot enough clear communication is a deal breaker when developing custom software.The development of custom software needs communication – clear and regular communication between the client and developer are crucial to reach a successful end product.The client should be involved at each step in the process, to ensure that the software is created correctly, that the milestones are reached and any new features can be added.
  • Missed deadlinesThese can break a development project.  Having a schedule in place and taking note of the previous bullet points will help you reach your deadlines.Having a dedicated software development team in place with a step by step project plan including a timeline of when features must be created, time for in-depth testing and rework, will help reach rather than miss your deadlines.

Why you should use Xpedia’s custom development service

  • Tailormade software suits exact business needs
  • Agile approach for rapid development giving you optimal return on investment
  • Upgrade and development roadmap under your control
  • Integration with existing systems gets more value from what you already have

Read more here.

Success

For custom software development to be successful, you first need to work with a customer’s big ideas, handle their money and worry about a schedule.

You’ve got to get all of this right if you are going to build great software – which is delivering what the customer needs, on time and on budget.

 

Sources

  • compusmart.com