You need a software application that does (blank), you meet with the developers, and a few months later you have your new software. Easy, right?  If only it were that simple.

Most people agree, creating customized software is generally a complex process. It requires a great deal of planning, collaboration, teamwork and management. And the stakes are high. A poorly implemented software release paints a negative image of the development team as well as the organization that hired them.  That’s why the software development lifecycle requires some type of methodology to oversee the development operation.

There are two primary methodologies you should be aware of – Waterfall and Agile.  A quick web search will garner numerous links in which these two approaches duke it out as to which one is better.  However, to say one is better than the other is like saying that owning a truck is better than owning a compact car. If you need to haul a lot of stuff, a truck is better.  If you live in a very dense, urban area where parking is at a minimum, a compact car is better. The approach you choose depends on the situation at hand. Not sure which approach is best for your project? Read through the descriptions of each below to understand each one. Still have questions – feel free to reach out to us and we’ll help you decide.

Waterfall

First off, waterfall may seem like a strange name for a project management process – but it’s a common term in IT;  and many refer to it as “traditional.”  One possible way to explain the name is that just like a waterfall, water can’t go back up after it cascades downward. A waterfall project is comprised of various stages and each one must be completed and signed off on before being passed on to the subsequent stage.  Each successive stage has its own personnel team and relies on information forwarded from the previous stage. Waterfall is ideally suited for instances in which there is a defined vision by the customer of what they want. To use an antiquated example, think of Henry Ford and the Model T.  The car moves along the assembly line as teams of employees complete their assigned tasks. What starts out as a simple frame in the beginning, drives out of the factory a completed car, ready to hand off to the dealer. Using a waterfall approach, the car moves along from start to finish in order.

In terms of a software development project, the successive phases are usually broken down into these basic stages:

Research – Analysis – Design – Construction – Testing – Implementation

A waterfall-oriented development team usually consists of four roles that include a project manager, business analyst, developer and tester.  Compared to agile, waterfall puts more emphasis on planning on the front-end. Progress is easy to measure and end results are more predictable thanks to detailed planning and design in the early stages.  You could say that waterfall sticks to the script as the plan is conceived at the beginning and everyone follows the plan in proper order.

Agile

As its name implies, this methodology is about agility and flexibility.  It’s highly suited for software development due to software’s elastic nature. Unlike, waterfall, there is a more loosely defined vision that guides the process. There are no defined stages.  Agile is a continuous deployment practice made up of “sprints.” A sprint is a short span (2-3 weeks per sprint is very standard) in which products are planned, developed, reviewed and released.  But the definition of “product” can vary from project to project. Agile isn’t designed around a single release, but multiple releases, that may in fact induce further releases.

For instance, the sprint at hand may be to create a button that the stakeholders of the application have decided is now needed.  Once completed, this sprint may then be followed by another sprint that centers around the release of a new application feature. This perpetual cycle can go on for years as the software evolves.  Each sprint is loosely defined by a storyteller who creates a story of what the product at hand should accomplish based upon the input of the stakeholders. Because there is no highly defined plan at the beginning, each day begins with a daily standup, a fifteen-minute meeting in which contributors and managers discuss what was completed the previous day and agree on what needs to be done on that day.

Although the agile approach may sound chaotic, it is actually a very orderly process that allows for constant customization and refinement.  While the end product may be far different than its vision, the customer and other stakeholders are continuously involved throughout the agile process.  One of the goals of Agile is to get something of value in the hands of the customer as soon as possible. In the case of a new application, the aim of the agile team is to get a basic working application delivered as soon as possible.  Continuous sprints then take place to add new features, many of which may have never been conceived at the outset. Unlike waterfall where testing is done at the finale, testing is continuous, sometimes operating in parallel to the code development.

Summary

As you can see, each approach is very different.  While Agile is definitely the newer methodology of the two, it is readily gaining acceptance in the software community.  Both approaches have their advantages and disadvantages. As stated, there is no overall better way, only a way that is better suited to the needs of your project and organization.  Before you begin a project, be sure to find out which approach your development team utilizes.

Top 7 Questions to Ask Your Next Development Firm (and the answers to listen for)

By Mansoor Anjarwala

So you have a development project you need to farm out.  Maybe it’s a mobile app for your customers or an enterprise business application for your business operations.  Whatever it is, you need a development team and chances are that means hiring a development firm. For those organizations who haven’t been through this type of hiring procedure, it can be a little scary, especially if you know little about the coding process.  Although you may not fully understand the technology behind the development process, you are still looking for the same qualities you would seek in any project management team. Below is a list of some of the key questions you should ask.

How do you go about understanding and developing a software project?

While you want to hire the most competent developers possible, you don’t want a team of programmers aimlessly writing code.  It is imperative that the team understands your business and is able to capture the vision of the project. A successful development team will have some type of methodology they use to transfer the information about your business to the team so it can comprehend the business problems the software is addressing and the goals and objectives it must meet in order to be labeled a success.

Who will be the ambassador on the team to communicate with?

You need a single point of contact that will serve as the liaison between you and the developers.  This is not the same as a sales person or an account executive. This person is usually someone in senior management that knows the coding process, understands business and has great communication skills.  It is this team leader that will be taking the time to learn about your business, discern project needs and convey them to the team. Having a single point of contact also establishes accountability and ownership of the project.  Make sure you ask how much of their time will be allocated to you throughout the project and how they prefer to communicate. It’s important that you and the project spokesperson have a sense of rapport since you’ll be working together as a team.

Have you worked on a similar project?

At the very least you need developers who are experienced in the required technologies.  An example would be experience developing for a certain platform such as iOS or Windows. But technology fluency is the bare minimum you should be looking for.  Ideally you want a development firm that has worked on projects within the same industry as this denotes a basic understanding of your business from the get go. It is best if prior projects they have worked on had similar application features such as those involving payment integrations or GIS mapping.  Consider someone who has worked with clients with a similar culture as your organization. Working with a startup company is much different than working for an established multinational corporation. Ask the development firm to see samples of some of their prior work. It’s easy to find works samples for mobile apps as they are readily available in online app stores.

How many developers do you have?

When it comes to software development, two minds are better than one. The smaller the firm, the tighter the resource constraints and the less potential bandwidth they may have.  On the other hand, a large firm may be more rigid to work with. Although your project may be assigned to a single developer, you want a firm that has multiple programmers on staff that can be made available for your project as there will be challenges throughout that may require a different lens or level of experience.  Time constraints at some point may necessitate other people coming into the project as well.

What is your scoping process?

Software development is an involved process.  You aren’t just going to be handed the final software package and that’s it.  The project has to be defined in order to accurately estimate the time, effort and costs of the project from start to finish.  Project scoping involves determining and documenting a list of project goals, deliverables, deadlines and cost estimates. It also includes technical items as well such as required features and tasks. When interviewing a potential development firm, find out what their scoping process entails. You will obviously want to see demonstrated progress at regular intervals to assess how things are proceeding. These deliverables should include completed shippable features that are ready to release.

Do you use automated testing for your code?

Another key question to ask your next development firm is about their QA process. If your development project is like any other, it needs to be completed as soon as possible.  Testing for bugs is an inherent part of app and software development. Used to be, developers had to conduct manual testing which added unnecessary time to the project as scripts had to be written, which also required a certain level of expertise that resulted in additional cost. Today there are automated testing tools. Developer teams use these tools to perform repetitive on-demand testing as the code is created. Aside from saving time and money, recurring testing processes increases the efficiency of the coding process and improves accuracy within the code itself.  

What project management methodology does your company use?

Most reputable development firms have a project management methodology; it’s important to ask a prospective development firm about the methodologies they use. There are two common project management methodologies used today in software creation: Waterfall and Agile.  The first, called Waterfall, is the more traditional management style, having been utilized for many years.  It is a linear approach that consists of multiple stages such as planning, design, coding, testing and product release.  Each successive stage cannot begin until its predecessor is complete. Usually this means that each stage must be confirmed by the customer.  Some refer to it as a slow and steady approach. It is ideal when the customer has a defined vision of the desired outcome. As a result, fewer changes or surprises will be incurred.  

A newer more modern approach is called Agile.  As its name implies, it is more flexible than Waterfall as it is more adaptable to perpetual changes.  It is designed to obtain continuous improvement throughout the project. Rather than a linear approach, it is more incremental and iterative.  It incorporates experimentation and some degree of trial and error. Rather than stages, the project is segmented into repetitive modules called sprints that are completed in a short amount of time.  Agile depends on a high level of customer interaction and solid teamwork. Designing and testing occur during every module, making it ideal for finding bugs and incorporating sudden code redesigns. Agile is ideal for projects in which there is no clear established vision or when the customer needs something quickly.

Although we have barely scraped the surface of the potential interview process, these questions are a good start to help provide a foundation to build from.  Software development is a costly endeavor when done right. Be ready to ask tough questions that will allow you to best discern the abilities of any outsourcing partner.  Best of luck on your project.