Choosing the right software development company for collaborative & long-term projects

07/06/2019

“I never make stupid mistakes.
Only very, very clever ones”

John Peel

Mistakes are costly for your business in terms of effort, time and money.

Making a bad choice of company to develop your software can affect your business. Don't take the chance of making a clever mistake!

Everyone can think of examples of the problems they have had with bad software-design companies and the experiences that have driven them mad.

Examples of bad software development company practices

Technical mistakes

These are things like errors and typos in the coding, poorly formatted code, or software configuration issues. Other problems like bad database design, structure and commenting in code make a system hard to scale and difficult for new team members to work on.

What does this mean for your company?

The software is causing frustrations, is unusable, or in the worst case scenario can result in very expensive mistakes if, for example, an erroneous configuration change is logged directly into a server. A horrendous example of this is when a bad algorithm, in new software for a share trading company in America, caused rapid buying and selling actions at the bid/ask spread and cost the company millions of dollars.

Poor Timing/Planning

Poor timing on the part of your chosen software developer means a big over-run in delivery time, which can be very expensive in terms of development cost and also if your business depends on the software for day-to-day functioning, can be catastrophic.

What does this mean for your company?

It means stress, loss of time and potentially unusable software for months or even years.

Bad Communication

Poor or mishandled communication practice at the outset of a project will mean errors during development and the software-design company will waste valuable time, even if these mistakes are corrected at a later date.

What does this mean for your company?

Frustration because the software is not what you wanted and means that it will have to be re-written, or you will have to make compromises that you didn’t want to make.

If you have chosen the wrong software development company to design your bespoke software, and you are already committed to that company, the process of withdrawing can be difficult and expensive, not only in monetary terms but also in terms of the time you have invested. Either you have to accept that you have made a mistake and withdraw or you settle for a product that is less than ideal.

So is it worth outsourcing at all?

Outsourcing software development often makes sense. It might be impracticable to do all your development in-house because you don’t have the time or the skill set to transfer your ideas into a software product. Choosing to outsource can be efficient in terms of cost and speed, with the added bonus of tapping into the specialist knowledge available, allowing you to get on with what you know best - your business. However, you should be aware that some figures suggest that 25% to 50% of outsourcing projects fail and up to 50% or more overrun their budget. Therefore choosing the right software development company is crucial.

How can you reduce the chances of failure and make the right choice first time?

Apart from the questions you are going to ask of any potential software developer there are also a number of key questions you need to ask yourself.

Know Your Parameters

What are your parameters? Every potential client of a software development company has a number of criteria which are fundamental to the way in which they will be able to work with the development company, and these criteria are going to dictate the parameters in the choice of a software company for them. These criteria may be financial or deadline constraints, the pressure of time available for input to the project, the amount of subsequent support needed or the ability to communicate the business processes that are wanted.

Financial/Time Constraints

If you are on a limited budget you are only going to get the features you can afford in the final build. If you are on a set deadline you are only going to get those features that can be developed in the time available. In this case, the development team has to work backwards from the financial/time constraints provided to arrive at the features that can be included in the build. This is not the ideal way to work, because you really want all the features which will make the application work as you want it to. A solution to this, perhaps, is to concentrate your search on those companies which have a proforma framework on which they can build the features you require. This approach to a software build is usually quicker and less expensive than building a system from scratch.

Your Time Limitations

Your input to the project is essential. However much time you have available you must use it to keep in regular contact with the developer. You need to be aware of what stage the development has reached so that you can ensure that the features you want are being designed into the development process at the appropriate time. A rough breakdown of the system development life cycle (SDLC) is planning, analysis, design, development, testing, deployment and maintenance. You must have input to the planning and testing phases in the SDLC if you are to keep on top of the way the features that you specified are being incorporated into the design.

Support

You must ensure that the developer is going to provide you with as much support as you require after the deployment phase of the SDLC. Maintenance does not just consist of fixing things that are not working properly after you have received the product; proper maintenance allows for modification of the product to correct the defects and improve the performance. Find out if the developer would support you with any future expansion plans and intends to build the application with that in mind.

Communication

This is the most important aspect of any software development. You must find a company that you get on with, and one that you can communicate with easily. Failure to communicate your business needs properly may well end up with them foisting a pre-made solution onto you. In addition, a company that adopts ‘jargon speak’ is not going to make a two-way exchange of ideas very easy, and will not provide you with the straightforward information you require. The topic of communication is also addressed below in the section on what you need from your chosen developer.

Do Your Research

You will invariably make the wrong choice if you don’t do your research at the outset. You need a firm grasp of the scope and objectives of your project. By preparing this in detail you will be able to identify all the attributes that you require from your software company. Armed with a list of what you require you can then research the software development companies that meet your criteria, and then go on to draw up a shortlist of possible companies to contact. In drawing up a shortlist don’t overlook the advantages of personal recommendation, from contacts you trust, to give an honest appraisal of the strengths and weaknesses of developers they have worked with. Reviews are always helpful and will also give you a ‘heads up’ for questions to ask if you do pursue any recommended companies.

What do you need from your chosen developer?

It is a level one prerequisite that you make a checklist of the attributes you expect from any company you are thinking of working with. These attributes will vary depending on your own personal goals and an awareness of your own limitations. However, there is one part of the equation which is paramount and can not be compromised on - and that is communication.

Communication

Communication, both on your part and on the part of the software company, needs to work properly. There has to be a good two-way flow of information for the project to have any chance of success. Everything from discussing the system requirement specification at the outset through to the date of delivery time requires clear communication.

Time spent in accurately explaining to the developer what you require of the software is an investment in the final success of the development. From this conversation, the developer will be able to have an accurate idea of what the development will involve and you will receive a more accurate quote.

Identify how you will communicate throughout the product development, and also find out how comfortable your outsourced company is with the frequency of contact that you feel you need, possibly a daily basis. If your project is very large and complex, you could ask if they could embed a developer to work alongside your in-house IT staff. In addition, identify one point of contact. It is not efficient to have to speak to various different people who are not up to speed with the progress of the development, you want one person who has their finger on the pulse of your future software. Also find out if the people with whom you are discussing the project are going to be doing the development or if it is a completely different team. This could be a big issue if internal communications are not as good as external ones. If you are not happy about the level of communication walk away.

Methodology

You need to discover the type of methodology any prospective partner uses. Most companies today say that they adopt an ‘Agile’ approach, though often this is some type of ‘Agile’ hybrid based on flexibility within the Software Development Life Cycle (SDLC). This often takes the form of an iterative process with release cycles in order to secure the development path and demonstrate transparency. This is fine, and different companies will have different takes on methodology. Just be clear, however, that you are not locked into a system of working where the specification is defined up front and cannot be modified at a later date, because changes in the scope of a project may have time or cost implications. It is unlikely that this way of working will be suggested, however, as it is an outmoded development methodology. You need to be able to intervene at the appropriate points in the SDLC in order to have your input into modifications to the product.

Collaborative

Your developer must be willing to work with you and your in-house team as a partner in the project. Avoid ‘yes’ men, you need a partner who is going to be upfront and give their opinion if there are problems with your suggestions, and who, in turn, will give you the benefits of their advice openly and honestly. Research reviews from clients they have worked with, and make sure that projects they have successfully completed have resulted in a good partnership with their clients. Don’t be afraid of contacting the companies involved and asking about their experience of working with the company you are interested in.

Business awareness

You don’t need the type of developer who locks himself away in a dark room and lives only for programming. As well as being able to develop your application the developer must have an awareness of the business world and how the product that they will produce can benefit your company. They should have business skills, be able to understand the ethics of your company and your business needs, and be able to transfer those needs into a business-oriented software solution. Not only that, but they must be able to communicate their ideas clearly in a language you can understand without recourse to jargon and techno-speak. It might help if you get the software company to play back your business requirements or ask if they can produce a ‘semi-functional’ HTML prototype to demonstrate how the product would work. Research prospective companies to identify how they have enhanced the business processes of their clients and how their technical input has added value to the work of the client team. If necessary contact those clients and find out if the experience of working with the prospective company has enhanced their business experience.

Technical Ability

Make sure the outsourced company is abreast of modern developments and understands best practices. Find out what tools and technologies they use and if they are quick to adapt to new technologies. What tests and documentation do they adopt?

Ask which programming languages they use. If they specialise in an archaic language it will affect your application. Make sure they use industry-standard software technology.

Transparency

It is important that your chosen company is transparent and honest. Find out how you will communicate during the project and at what times you can communicate with them. If you don’t have regular contact it will be difficult to see the progress of your project. Will the software company discuss with you why certain decisions need to be made on business functions to meet timescales or budget?

Find out what files you will have access to. Will they share with you source code, burndown charts, the project management dashboard or staging?

Also ask to see reviews or contact details of recent clients.

Checklist of questions to ask

The Verasseti team have given advice in questioning and approaching software development companies with some key takeaways and checklist questions to help you in your search for the right software development company.

1. How do you approach a software build?

Verasseti’s Answer: We like to spend as much time as can be allowed to understand your business and fully cover your requirements including the future scope of the project.  We then play this back to you in a comprehensive requirements document. Following this, we are happy to work to your own internal IT standards or apply our own, real-world tested version of the Agile process to move from requirements to design to prototype at a speed that all are comfortable with.  Generally speaking, we think that seeing a first version of the application is the best way to focus minds and get constructive feedback on all elements of design and functionality.

2. At what points would you like my input?

Verasseti’s Answer: The simple answer is at all points.  We are probably unique in the software world where the team that you first meet to discuss our suitability will remain as your first line contacts throughout the project.  So nothing will get lost in translations between our team members and your input goes straight to those doing the work.

3. What is your policy on support and maintenance?

Verasseti’s Answer: We are happy to provide any support and maintenance you need for the lifecycle of the project.  Again, this will typically be with the same team as you first met, giving you peace of mind and continuity of service.

The cost of support is normally 20% per year of the final cost of developing the system. By “final” we mean the original estimated cost plus the additional cost of any changes agreed during the lifetime of the project. By “developing” we mean the cost of development work on the system, including prototyping and design work but not including other project activities such as requirements analysis or project management and the cost of software licensed as part of the solution.

4. By what method and how frequently do we communicate?

Verasseti’s Answer: Following an initial requirements meeting and any follow-ups required we would look to communicate when each iteration of design or prototype site is available for comments. We prefer communication by email, but often a teleconference, or face-to-face meeting is the best way to ensure nothing is lost in translation.

5. What methodology do you employ in your software builds?

Verasseti’s Answer: We are not wedded to any particular methodology and are happy to work with your project manager’s or IT team’s requirements or apply our own.  In the latter case, we tend to use a hybrid Agile approach allowing iterations to be developed and reviewed in even stages.

6. What are your expectations of us and what can we expect from you in terms of collaboration?

Verasseti’s Answer: From our point of view, it’s good to understand the key contacts in your organisation and their responsibilities in relation to the project.  Ideally we would have one point of contact, but understand that this is not always possible.

The key aspect is that we get quick responses on any queries from our team members and comprehensive feedback on any iteration of design or website that we make available.

Your key Verasseti team tends to consist of a maximum of three people: Project Manager, Account Manager and/or Lead Developer.  Our commitment is that you can approach any of the team members with a question or suggestion at any time and expect to get a reply the same day wherever possible.

7. How will you ensure that the product will meet my business market expectations?

Verasseti’s Answer: We rely on three key factors here;

  1. A range of real-world business experience in our team who can easily translate business concerns into “IT speak” for our developers
  2. A detailed requirements gathering stage where we talk directly to as many people connected to the project as possible, including clients if this is appropriate
  3. A comprehensive requirements document for detailed review and comment.

8. What technologies and languages do you use?

Verasseti’s Answer: All leading software development platforms, including (but not limited to) Microsoft .Net, Java, iOS, Android, Xamarin, web technologies like HTML, JQuery, Bootstrap, Thymeleaf, Umbraco. Database technologies including SQL Server, Oracle, MySQL, H2.

9. What files will I have access to?

Verasseti’s Answer: All the source code and data is yours and you have full access to it.  All we ask is that you don’t use our source code to develop a similar product.

Is the Software Company ISO certified?

ISO is the International Organisation for Standardisation. The Organisation develops and publishes specifications guidelines or characteristics that can be used consistently to make sure that materials, products, processes and services are fit for purpose. ISO certification means that the company consistently provides products and services which meet regulatory and customer requirements. The ISO certificate will  have a number, which can be checked on the ISO accelerator website. The benefits for the customer are in knowing that the company has independent accreditation for commitment to quality products and services.

Payment procedure

How much you pay for your software is dependent on a number of factors including your specific requirements the requirements of the development process and the problems encountered in the development. Developers are highly skilled, and the price per hour to be paid for their skills can be high. However you should never have to pay in this way. A competent software development company will establish the price for the completed project. There will be a price difference between a basic customised  piece of existing software and one which has more features added. There will also be a price difference between this and a more expensive bespoke application built to meet your individual needs. The price will also depend on other factors such as the software type, language, platform and the complexity of the project. However when you get quotes, although there will obviously be some variation in price from company to company, all should be roughly in the same ballpark.

You should not forget to factor in the cost for scalability and good design because without these you will find that you will have to pay for expansion and maintenance in the future.

Find out the  payment arrangements of the software company. Do they want a final payment on delivery or are there payment points during the development? Perhaps there is a payment for a basic product, but with additional payments for customisation. Payments may possibly be linked to the licence with a sum to be paid on granting the licence plus additional fees over a fixed period of time, or perhaps payments have to be paid to renew the licence.

A Software Company for your niche/sector?

If you are engaged in a niche market such as financial services, the hospitality industry, publishing etc. you should first research companies who specialise in that sector, however, don’t overlook the generalist software development companies as they will have experience in many different types of products. Many generalist software companies have acquired expertise working with particular industries and the types of software which are beneficial to those clients. A generalist company may well have experience in the very industry in which you are interested. Look at the websites of the developers you have shortlisted, look at their portfolio and find out what they have produced for the particular business niche you are interested in. Speak to them so that they can elaborate on this, and find out what technologies they would use for your application. They may well surprise you by suggesting something you haven’t thought of.