Throughout my career, I have seen how, more often than not, the executives in charge of making decisions about which professionals will intervene in the resolution of a problem or a computer project go to their subordinates so that they are the ones that make those decisions.
For many of them, this statement will trigger a very common response:
“Clearly, they won’t expect me to be an expert in everything. That is what they are here for”
I do not seek to judge this method of decision making, but to comment on a very common problem this way of proceeding leads to, and which, in many occasions, ends up entailing the appearance of ludicrous costs, absurd deadlines, and unnecessarily risky situations due to the absence of professionals with specific experience in certain IT fields.
The cobbler should stick to his last
Do you think you would be able to make a good decision on how to open a “haute couture” workshop, basing your decision on the opinions of three shoemakers, regardless of how good and luxurious the shoes they make are?
Nothing better than considering that Spanish saying when asking for advice: to know who you are asking advice from, as, even though there are mixed profiles in software development, nobody is really an expert in too many things. As an example, so as not to mention others, or imaginary cases, I will talk about myself and the answer that would be obtained from me in different hypothetical cases when giving this kind of advice.
But why not say I am also Java or ExtJs expert, or some other fields, if I have been working with those technologies for more 10 years? If you have any doubts, I recommend you read the article “What is an expert?”.
Let’s imagine that a friend asked me:
"Is it better to make this project in Oracle, or in SQL Server?"
If a friend asked me this, as an expert and a friend, I am sure about what my answer would be: “I have no idea”.
I know a lot about SQL Server and I also know what I don't know about it. But about Oracle, even knowing, I don't know what I don't know. With this knowledge it is not possible to know what the best option would be.
But let’s go over it step by step… let’s imagine now that this question is asked by a client: I would not have any other option but, assuming a role as seller-consultant, not to lie and tell them that I do not know it and immediately begin to assuring them on the success security of carrying out that task using SQL Server, the great things that can be achieved and how suitable SQL Server is for that project. As a SQL Server expert I can be very convincing.
Let’s take another step: let us imagine I am an employee and my boss ask me if the company’s central databases should be SQL Server or Oracle. I really would not want to be in this situation, because, first of all, how can they ask me that, knowing I am a SQL Server expert? And secondly, what am I supposed to answer if the food of my children, which I do not have, is at risk in the case the company chooses Oracle?
Well, then imagine asking this kind of question to a younger professional, with a lower self-confidence and who still feels like their future depends not on themselves, but on a “boss” that may or may not hire them. Their answer will not be purposefully biased, but they will probably feel so much panic towards a change in technology regarding what they have started to get to know that they will not even notice the bias in their advice.
Put yourself in their place: you have just finished your degree, you start working without really knowing anything, and spend five or ten years programming exclusively with Java, or with whatever, until you finally start feeling like you are really getting the hang of it.
In this situation, your boss asks the following question:
Would it make sense that a part of the project was to be developed in SQL Server?
If you said yes, your boss would most probably hire an expert that would do in SQL Server something you believe you could have done in Java.
Or this other one:
The process that has taken you one or two months to implement in Java and that takes an eternity to run, which you did not advise to do in any other way, would it maybe be better for another professional to remake it in something you know almost nothing about?
Imagine what your answers would be. Few people would have the understanding to get it right, and fewer even would be unbiased enough to see it, and even fewer people with the necessary understanding and capacity to see it would admit it in front of their bosses.
Does it make sense, then, to ask your development team what kind of professionals are needed to carry out a specific project?
I would say that “it depends”. This is based on that, in many occasions, for example, within the development team, there is not even one database expert. There is not even a single expert that accesses data in any other way rather than using an ORM (to put it simply, ORM are the libraries for data access within programming) or by means of a basic SQL consult. There is not even one who would be able to consider that shifting data treatment processes to the database might be a wise move due to the brutal performance increase that is obtained, something better explained in another article.
Do you think that a team like that will recommend you hire a database expert? Most commonly, they will not only advise you not to, but may also be upset if you did go through with it and hired someone.
However, think: how many of your data treatment processes, either reports, calculation processes, etc., take longer than what you would like?
All the same, if Google can show you all that information at the speed it does, this means that is possible to do it. No. Google doesn't do magic.
If you have any doubts, I recommend you read the article “Speed in data treatment: if Google can do it, why not your computer experts?"
When having to make a decision about which professionals to hire, my advice is to either look for an external professional with many years of multidisciplinary experience in computing that can solve your doubts, or to look for an expert in each of the possible computing areas you think you might need and ask each of them what they could do for your project, but do not ask your team making them judges and a part of your decision.
Do not ask the butcher if it is healthier to eat fruit or meat, or the waiter if beer fattens and if it may be better to go buy a juice in the store across the street, because no matter what their answer may be, I do not know who would be more of a fool: the one who asks or the one who answers.