Choosing Technology as an Investment

Where does all this come from
For the last six years I have been leading the development. For the past three years I have also been counseling. And, of course, I am constantly faced with questions like “What language will we write in?” or “What database are we going to use?”. It’s good if the answers to these questions are determined by the subject area of the project.
PHP is obviously not suitable for a driver, and C++ for backend promotion is silly. restricts the options. But in the remaining selection, a whole “Noah’s Ark” of languages, solutions, frameworks and platforms is often piled up, in which each creature is separated from a pair.
In my past life, when I was a simple programmer or a simple leader, I didn’t care. This is what I know very well and love to write about. I’ve read a lot of good comments about it and I’m interested. But somehow we tried it, it turned out terribly, so I swear. My responsibility was only the quality of the code I released and my personal deadline.
As the area of responsibility grew, new issues began to be added: the quality of the team’s code as a whole, the rate of technical debt accumulation, the user characteristics of the product, and much more. But the year the STO was first named, the most painful place came to the fore – the budget. I suddenly realized that all software development without exception, I repeat, is about money.
Even if you are in the village with your grandmother on an old laptop via GPRS, out of boredom you contribute to an unnecessary marginal project for the next PEV. Time is money, popularity is money, code quality is money, ability to meet deadlines is money, business forecast accuracy is money…
And about money, mankind has accumulated a lot of knowledge. So why didn’t you use it? For me, this approach was and remains quite logical and natural, but each time I encounter varying degrees of surprise from both the administration (to a lesser extent) and the developers when explaining my choice.
Choice is an Investment
I don’t think it’s worth going into the translation axiom in detail. The choice of technology depends on the budget, deadline and final cost of the product. that’s enough.
All precision in the term “investment“.
Investments (Engineering Investments) – Employing capital with the objective of making a profit. Investments are an integral part of the modern economy. Investments differ from loans in the degree of risk for the investor (lender) – the loan and interest must be repaid on time, regardless of the profitability of the project, investments (invested capital) and income generation are returned only in profitable projects.
If the project is not profitable, you may lose all or part of your investment. wikipedia having studied mountains of literature on investing, I realized one thing – 99.9% of this information is self-evident and there is no rocket science here. But most people just ignore all these truisms and clichés, and the trick is not knowing it. The trick is to keep this in mind at all times.
The essence of investment is simple: invest resources (money, time, effort) in a project to get some value out of the project. The value can be profit. or knowledge. or have fun. The main thing is to correctly determine this value yourself. In the case of value-defined business development, there’s no question – it’s money. Therefore, the main issue of value in determining investment attractiveness is not here.
And yes, the technology lifecycle in your amazing hamster collar market project is a project within a project. With all the consequences.
Profits and Risks
The assessment of investment attractiveness is always comparative. There are no kites where a spherical design can be measured in a vacuum in terms of investment. Yes, even if there is only one project, and there is the option to invest or not. Because in this case there are really two projects, there is always a project to “keep the money under the pillow”.
Any project is made up of two elements in terms of investment: the investment amount and the expected profit… taking into account the risks. Risks are often overlooked entirely or not given much depth in their assessment. But in vain. Because it is the risks that mainly determine the investment attractiveness of the project.
In the case of choosing technology, everything is exactly the same. Therefore, the choice of technology, in addition to understanding the desired value, leads to an assessment of the risks of this choice. Well, okay, there’s also the investment scale factor, yes.
Assess those Same Risks
The whole difficulty in assessing the attractiveness of investment in general and risk assessment in particular is to make the values \u200b\u200bon a basis (money) accurately enough. Most of the formulas economists use to make these estimates terrify me as a mathematician. Take the same return on investment, which can only be calculated after the fact with acceptable accuracy.
On the other hand, the accuracy of comparing two quantities depends on how close the values of these two quantities are, and it is not always necessary to know how many kilometers to the border and how many kilometers to the nearest grocery store in order to compare these distances.
Take the same C ++ and PHP. Of course, with the same functionality, the product in the first product will be more productive than in the second. But it will cost a lot in terms of time and wages. And here you don’t have to count on a penny, even a day, and even a single amount per day, to understand: the promotional fund for landing in C ++ is not interesting.
But it is not even a matter of accurately evaluating certain characteristics. In the example above, there is not a word about risk. The point is the most complete factor analysis possible of all risks. For myself, I have compiled a fairly complete list, in my opinion, but not exhaustive.
Personal Risks
Search terms – as the job market is full of resumes of the required level. A COBOL programmer has to be searched for a long time and is expensive, and your search period varies a lot. You can find it in a month or not in a year. And every day of delay in hiring reduces the value of the project’s payback.
Employment review – the extent to which the employer is able to properly assess the candidate. This is a complex risk, as it includes not only the employer’s level of experience with the candidate technology, but also the traditions that have developed in the technology community. (yes, some experts are more likely to be misled than others), as well as the size of the technology – “I know C ++ well” and “I know PHP very well” are two completely different phrases. This risk affects both personnel costs – getting rid of inappropriate evaluation schemes, etc. – And in the final value (I hired the wrong one).
Discipline It’s no secret that different technologies have different levels of code discipline, dictated by both the technology itself (hello, JavaScript!) and the traditions of the professional community. Ensuring the planned level of discipline is the future cost of management.
Code Ownership – How traumatic a developer’s sudden disappearance can be for a project. This takes into account both the fullness of the job market and the complexity of viewing the code (perl -e ‘$?? s:; s:s;; $?::s;; =] =>% – {<- | } <& | { ;;y;-/:-@[-{-};`-{/”-;;s;;$_;ver’) and much more.
Community dynamics – A stable or growing society means more or less certainty about the future state of the labor market. Although, of course, there were cases when communities collapsed in a matter of months.
Strategic Risks
Technology Maturity – As a general rule (but not always), technology that has been around for decades and has driven many pistons is more stable, stable and reliable. And, in this sense, often the best is the enemy of the good.
Community size – echoes the employee risks, but here it is present in a different aspect: the size of the community, as a rule, affects the number of shareholders. The more contributors, the more work is spent on improving the technology.
Stability – consists of the stability of technology and the stability of society. If there are many “horus heresies” in the history of technology, one should not expect a safe haven for this technology in the future. If the community is constantly fragmented, if the new versions are not compatible with the old ones and are in fact a completely different product, then this technology is only interesting for very short periods of time.
Integrity – How well the technology is integrated, how clearly key concepts are articulated, and how well they are shared by the satellite technology/sub-technology community and community.
How consistent is the documentation and knowledge base. If the framework, instead of documentation, has a sparse wiki on github with not always up-to-date information, and the main knowledge is distributed over hundreds of YouTube videos, sometimes contradicting each other in the description of approaches and meanings, then there is no need to talk about integrity.
Entry Threshold - How difficult and expensive it would be for someone without a zero level of knowledge of this technology to access acceptable property. Yes, personal risk always leads to the need/feasibility of this [re]training.
Sum / Total
These risks exist in the selection of almost any size and importance of technologies, from programming languages and frameworks to libraries and utilities. Of course, each of them in each individual case has its own meaning, but each of them is always worth considering.
Of course, the list is not complete, and I don’t intend to be an absolute truth, but it is this list that helps me personally in the difficult task of managing development.
Addition
In the comments, Aquahawk mentioned the usefulness of Google Trends to gauge activity around the technology. I personally use Including GT, but rather to gauge a broad audience’s interest in technology. Sustained growth for some time is a great sign of stability. But beyond that, you can get an idea of the other aspects of GT.