Find a common language
As is the case in many industries, IT professionals have their own language. Developers might use words or refer to concepts that are not familiar to you. Do not hesitate to ask us to explain—it’s our job! Always ask for clarification when things seem obscure. This is crucial, because your understanding is the foundation of quality communication, which in turn becomes the basis for well-informed decisions. Good developers will be happy to share their knowledge with you, to ensure that you understand key concepts.
Explain what you do
Just as developers explain their job to you, you also need to explain yours to them. Do not be stingy with information; a client can never give too much. The more a team knows about the specifics of your company, your market, and your processes, the better it will understand your expectations, your current activity, and your future plans. A development team that is imbued with your vision is better positioned to provide the best answer to the problem you want to solve and to anticipate your future needs. We can’t say it enough: good two-way communication is crucial to the success of a software project.
Take the time it takes
Most software projects take weeks or months to complete. Regardless of the number of people on the team, some essential steps will always take time if you care about the quality of the delivered product: planning, design, development, testing. We know that you would like your software delivered to you as quickly as possible, so that you can begin reaping the fruits of your investment. However, there is no magic solution, unless you compromise on features or quality. If your deadlines are really short due to various circumstances, it might be necessary to start with a minimum viable product (MVP)--software that just meets the essential requirements--and postpone the development of some features for a later version.
It takes more than programmers
Software development involves a wide range of specialists who don’t actually or always write code. It's a team effort: business analysts, designers, interface designers, project managers, Scrum Masters, quality analysts, support staff are all professionals who contribute to making your software exceptional. Some stay with the entire project, others intervene at certain points.
Features and quality don’t always go hand-in-hand
Focusing on the quantity of features rather than on their quality is misguided. You must question the purpose of each feature. Clearly defining a minimum viable product (MVP) will help you focus on what is really important. During development or after the delivery of a first version, it is quite common to realize that some functions that were envisioned at the beginning of the project are in fact useless, and that leaving them for later ended up saving time and money. And conversely, it is not unusual that initial users’ feedback leads to the enhancement of some functions and the creation of others that had not been envisaged, but now seem obvious. Software quality is not the sum of its features, but rather the measure of user satisfaction. This requires user needs satisfaction, user-friendly and ergonomic interfaces, bug-free software, etc., rather than a program packed with features that will never be used. The piling on of features also adds a layer of complexity that jeopardizes the flow and deadlines of the project. You will save more money by choosing a scalable product with incremental improvements, rather than by attempting to do everything right away, which usually doesn’t work out well.
You get what you pay for
The same goes for software development as for everything else. A house built with low-end materials will be less durable, and over the years, it will lose value and cost more in maintenance. A fifty-dollar Ikea bookshelf made of melamine chipboard is less solid and durable than hardwood one that costs hundreds of dollars. Everyday life offers many more examples. There are always consequences to making the cheapest choice, to doing things half-way, or to cut corners to go faster. Immediate savings always translate into proportionally higher costs in the medium- and long term. Therefore, if your software is to evolve, it is essential to invest in a robust first version that will serve as a foundation for the next versions. Solid foundations guarantee future savings.
The art of change
Unless the project is simple, it is almost impossible to plan for everything from the start. A multitude of factors mean that few things remain forever cast in stone. Unpredictability is an intrinsic part of the software development process. Your request may change over time, market conditions or your customers’ expectations may change, marketing imperatives may require you to launch earlier, a complex feature may take more time than expected, changing software environments may require adaptations, etc. Software development requires staying open to changes, because these are inescapable. This is why the software industry has unanimously adopted the Agile approach that makes it possible to manage change in the most economical, secure and flexible way possible.
It doesn’t stop at delivery
To stay functional and efficient, software requires maintenance after delivery—it’s similar to the building analogy. We call it postproduction support. You have to determine from the beginning of the project who will do it and how much it will cost, because it takes people to look after your software and anticipate pitfalls. In addition to routine maintenance, such as solving problems that inevitably occur with changes in your hardware and software environment for example, your users will come to you with new requests. In short, software lives on after its delivery and it’s important to understand that at the outset.