The speed of technology force us to research for innovation constantly: without an update and a daily training we lose our competitive edge. So we try new techniques, we learn new programming languagues which resolve our business problems more efficiently. But we must not lose focus, otherwise you could end up developing an admirable app for a colleague, but an poor solution for our clients.
Key Factors in Decision Making
Using new technologies fresh from the oven is very tempting but we should mind the the first version of every product it usually comes with a lot of errors that will be correct it in future versions of that product. On the other hand, if we choose an established product, we’ll find thounsands of online communities which help us with some issue we might have. It’s very important to be an active member of those communities!
It should be noted with new technologies that the learning curve for our resources has a cost associated, and that mean time for your client. This does not mean that you shouldn’t face any challenge or any new languague. But we must keep in mind the pros and contras of any decision.
What they want
There are a lot of different types of clients but they all have one thing in common: the want a solution. It will be useless if we deliver an excellent software to bill orders if it’s required to migrate all the OS of the company to be able to use it.
In case we need customer approval for a technical decision (and our client is not trained), so we must become humble teachers and explain the available options. Many times clients stick to what they know, and that knowledge may be out of date.
When explaining these options we must take into account two things: first, how the decision affects their business in the short, medium and long term; and second, remembering Albert Einstein’s phrase, «You never truly understand something until you are able to explain it to your grandmother.» It is necessary to be clear, not to use technicalities, neither abbreviations, nor nerdy words. It’s better to use metaphors, comparisons, real-world examples that may be understandable to a person who is not in the detail.
In order to make a correct decision, the requirements must be taken into account at the macro level. What operating systems does our client use? What devices do they use? What deadlines are they willing to handle? What is the underlying problem they are looking to solve? Will our development have associated third-party costs? Will I need to purchase licenses? The answers to these questions will narrow down the possible options.
Another key factor is knowing what internal know-how our client have, especially if the maintenance of the software is going to be carried out with their own resources. Make sure they are trained, and if they are not, let them know so you can decide the best course of action. In an ideal world, they would leave us the freedom to choose the programming language and then put together a training plan for their staff. But the reality is that clients will often prefer to stick to their team’s knowhow and develop the solution on a familiar ground.
The decision on which technologies and programming languages to use when developing a solution must be motivated by the client’s needs and resources, also considering our experience and skills as developers.
In order to have all the necessary elements for the correct decision, it is essential to maintain excellent communication with our clients. We have to know not only its present, but also its growth expectations, and consider this point when making decisions.
No need to fear to new stuff, but be aware of its limitations in community support and the logical errors of any early version of a product. Before embarking on a new adventure, you need to do some testing and make sure you can meet the customer’s needs.