Software Development : Consulting

From bitrary
Jump to: navigation, search

Software Development

The MOST IMPORTANT rule of Consulting

If a client asks for technology X or something in the lines of "where could I get Y done", then NEVER, EVER, answer that question or start to offer that service before finding out, why the client yearns for the Y or X.

The reason for not fulfilling the client request immediately is that it is almost always the case that the real work that has to be done to solve the operations problem (often the "business problem") that the client actually feels the urge to get solved requires something totally different than then Y or X.

One can just imagine the trouble that one gets into, both technically and financially, when one starts to solve a technical problem with inadequate technology...

One possible comparison is that a patient, who goes to see a doctor, does not have to be able to diagnose the trouble himself, but if a doctor were to proceed with the instructions/technology/medicine that the patient asks for, then the results will likely be pretty devastating.

Heuristics that might be Helpful

Networking Among Consultants

Just like no doctor is the best at curing any medical problem, no software consultant is smart enough to handle every problem. Just like doctors can be busy, software consultants might be booked, not able to take a project that meets their qualifications.

It's not very helpful, if a doctor just says that he can't help. It makes sense that a doctor provides direction, where the patient might go next, which other doctor the patient should meet. Same applies for software consultants: it's not very helpful, if a software consultant just declares that he/she can not help.

One of the ideas here is also marketing: if software consultant C_1 can always either offer the service himself or offer directions to someone else, who provides a good service, then it makes sense to the client to always ask the consultant C_1 for anything. That in-turn allows the consultant C_1 to cherry-pick the projects that he/she is able to complete himself and keeps the consultant C_1's project-pipe-line filled.

Given that software consultants should specialize anyway, it is useful for them to cooperate and get to know each-other to be able to make those referrals.

If Client Prefers Social Processes Over Technical Efficiency, then he/she has to pay for that work with at least as high, usually higher, rate than he/she pays for the Technical Results

Social processes define the task that the features of the software must solve. If the same advertised task can be solved by 2 different set of features, one is cheaper and another one is more expensive, more laborious, and the client(s) say that the more laborious version fits better with its organisation's human relations spaghetti and customs, then one can just point out the price difference and development time difference and let the client choose. There is absolutely no reason to lower the price for the stupid extra work that does not technically offer any extra benefits to the client. Quite the contrary: the dullness of doing more work than it takes to create a technically more efficient and elegant solution that solves the same initial task more cheaply, should warrant the higher rate.

(An example from real life is that in about 2010 Mozilla FireFox and Google Chrome web browsers were stable, fast, free for everybody to use, worked on both, Linux and Windows, but the client wanted its business application to run on crashing, buggy, Microsoft Internet Explorer. The developer offered that if the client pays for the extra 1 Year of development and is willing to wait for another year for the initial release of their software, then we can offer Internet Explorer support. Otherwise, download the free, technically superior, top-of-the-line, FireFox or Google Chrome web browser and we will not support the Internet Explorer at all. Your choice. Even if You do pay for the extra work and are willing to wait, then there will be no guarantee that the solution will work reliably, because the stability of the Internet Explorer depends on Microsoft. After that the client never asked the Internet Explorer support again. Problem solved, time saved, the client and the developer, are both better off.)

Essentially, the scheme is that if they want something really stupid, then they pay a full price for it and with a greater rate than asking for a smart solution. As a matter of fact, if they're asking for something really smart that can be delivered to them at relatively negligible amount of work, then a proper developer delivers it literally for free, without asking any favors in return. But, for truly stupid extra work that does not even technically benefit the client itself, it is morally OK to slam the client with a really heavy price, provided that the developer is open and honest about the alternatives and explicitly informs the client about the cheaper and smarter alternatives.

Explanations, how Different Consultants Differ

Difference in Culture Induced Technical Requirements

A software developer, regardless of whether he/she admits it to himself/herself, always adds additional requirements to the project that often times the client can not and even should not be required to ask for. For example, a client should not be required to ask that the software will not ruin data if during the operation the computer looses power or network connection. Whether a software developer adds those kinds of additional technical requirements to the actual list of requirements of the software project is a matter of culture and a matter of personality. There are slackers in every culture and there are meticulous, perfectionist, hard workers in every culture. Another example of a software developers' personal culture based difference in the set of additional technical requirements is the set of technical requirements that is related to the reliability of the product. Both, personality and culture of the developer, determine, whether the software developer is willing to deliver a shoddier product just in the name of beating its competition in price. The same with clients of the consultants: a client must be able to afford the service, but within the money that the client has reserved for the project, a lower price is not always a winning argument. From the client perspective the culture difference of developers induces a situation, where different software developers with equal skills and equal professional experience in terms of working years will give vastly different recommendations and the shorter the recommendation, the greater the difference might be.