How to create perfect software

Por: Andrés Rojas Villalobos
“In an office put: three developers, a coffeemaker, several computers at least one of them with Windows and IE8,9,10, add money and time. Then start churning until you get the texture of your ideal software.”

Throughout my life as a systems engineer, I have seen thousands of recipes like this, companies that promise the “Software of your dreams” in exchange for money where in many cases ends in a big scam because the customer is not satisfied because the system does not meet their expectations, possibly spent much more money than agreed and certainly took longer than initially expected.

A perfect software is not a super dynamic, super animated software, full of complicated functions, it is not the amazing “talking” user interface, not that it is connected and synchronized with Facebook, Gmail, Skype, Github and everything that exists.

A perfect software is the one that steals the customer’s smile, is the one that awakens in the customer that feeling that says, “They read my mind, this is what I wanted”.

But, how to achieve it?

That’s where my adventure began. We have all changed jobs at some point, but few of us have gone from being software developers to clients. At one point in my life, I started working for a company that had nothing to do with software development, but rather was dedicated to the construction of schools and colleges, my position in that company was assistant procurement and accounting.

The general manager of that company managed most of the company’s functions and only used Excel for accounting as follows:

A single Excel file called “Accounting” in which he had columns such as, invoice number, issue date, supplier name and amount. I must assume that some already see the chaos approaching, this file was not orderly, sometimes the names were misspelled, dates in different formats. The day to pay the suppliers was horrible because the manager would open the document and line by line, he would start looking for which invoices were due and which were not, at the end of this process he would use a calculator to total the outstanding value, simply inefficient, tedious, and very tiring. And I was going to inherit that process.

“Necessity is the mother of invention” – they say, seeing that chaos approaching me I had to react and see things from a point of view that I had never seen before.

Get to know.

At that time, I was the client and the developer but with an “ace” under my sleeve, I had very clear what was the problem to solve because I lived it every day, so I already knew before starting to develop what I was facing, what were my assigned tasks and what I had to achieve day by day. Then it was easy to think how I wanted to arrange the information to use it in a more practical way. This is the first step, before you start you must know your client, understand what they do for a living, how they currently do their job, where they are coming from and where they are going. With that in mind you can help him to reach his perfect software because by putting yourself in his shoes you will see what his real needs are.

Honesty

Be honest with your client, we have all heard this phrase: “and tell me: can that be done?” and in most cases the answer is: “Sure! no problem” even knowing that it will be very complicated, tedious, and sometimes irresponsible. We all know that programming languages offer advantages, but they also have their disadvantages. Knowing the client beforehand and understanding their business will help you better choose which tool best suits their needs. Remember to tell the truth when a challenge arises, and it may affect your perfect software.

Give advice.

When you understand your client’s business, thousands of innovative and different options will come to your mind, don’t be afraid to tell them because you are the expert, you are the one who knows the visual components, libraries, processes, shortcuts, frameworks, and other features that can make your client’s perfect system much more efficient. Believe me! your client will be happy to see that you are concerned about his system and in many cases will be surprised because that option had not crossed his mind and now, he sees things much better than before.

Have fun.

This point is a bit difficult to digest as work is almost always associated with slavery, boredom, and discontent. But think about it, work is what allows us to achieve our goals and dreams, through it we grow professionally and generate friendships. Keep in mind that, when you have managed to understand your client, when both of you are honest and the trust is enough to be able to advise, since your word is important in the running of the system; at that moment you will begin to enjoy the development of the perfect software and this creation will achieve the objectives in ways that perhaps your client never imagined. My friend, you will have achieved perfection when you are able to understand and share the customer’s happiness.

Personally, I have applied this process since that old accounting Excel that was later happily eliminated, to date and it has given me excellent results over the years.

I decided to write this article because I found many people who think the same way and I felt the need to summarize and capture our experiences both at a personal and business level. I am a firm believer that Costa Rica has the tools and resources to be a powerhouse, so I believe that sharing this type of knowledge and analysis will help guide us towards a better future personally and as a nation.

Remember, before you turn on the computer and write the first line of code, look your client in the eye and tell him/her:

We’d be happy to help you, but first, tell me about yourself….

Scroll to Top