For the last 6 years I have been leading development. The last three years also advise. And, of course, I constantly encounter questions like "what language will we write?" or "which database will we use?". Well, when the answers to such questions are dictated by the subject area of the project. It is clear that PHP is not suitable for the driver, and C ++ for the backend of promo-landing is absurd. This narrows the choice. But in the remaining selection, a whole Noah's Ark of languages, solutions, frameworks and platforms is often piled up, where each creature is far from a pair.
In a past life, when I was a simple linear programmer or lead, I did not care. That's what I know well, and I like to write on it. I've read a lot of good reviews about it, and I'm interested. But we tried it somehow, it turned out terribly, so I swore. My responsibility was only the quality of the code that I issue, and the personal deadline. As the area of responsibility grew, new foci of headaches began to be added: the quality of the team code as a whole, the rate of accumulation of technical debt, user characteristics of the product, and much more. But in that year, when I was first named SRT, the most sore point appeared - the budget. I suddenly realized that all, I repeat, all without exception, the development of software products - it is about money. Even if you are in the village with your grandmother on the old GPRS laptop from boredom, you donate to an unnecessary marginal project of the next ENP. Time is money, popularity is money, code quality is money, the ability to meet deadlines is money, the accuracy of the forecast of labor costs is money ...
And about the mankind has accumulated a lot of knowledge. So why not use them? For me, this campaign was and remains completely logical and natural, but every time I come across with a different degree of surprise from both the management (to a lesser extent) and the developers when explaining my choice.
I do not think that it is necessary to disclose the subtitle axiom in detail. The choice of technology, the budget, the timing and the final cost of the product. It's enough.
All the subtlety in the term "investment".
Investments (eng. Investments) - allocation of capital for profit. Investments are an integral part of the modern economy. Investments differ from loans by the degree of risk to the investor (lender) - the loan and interest must be repaid within a specified period, regardless of the profitability of the project, investments (invested capital) are returned and generate income only in profitable projects. If the project is unprofitable, the investment may be lost in whole or in part. Wikipedia
Having studied the mountains of investment literature, I realized one thing - 99.9% of this information is self-evident and there is no rocket science here. But the majority of people simply ignore all these self-evident and trivial things, and the trick is not to know it. The trick is to keep this in mind.
The essence of investment is simple: invest resources (money, time, effort) in a project to get some value from a project. Value may be profit. Or knowledge. Or pleasure. The main thing is to determine this value for yourself. In the case of commercial development with the definition of value, there are no questions - this is money. Therefore, the key issue of value in determining investment attractiveness is not worth it.
And yes, the life cycle of technology in your wonderful project of selling hamster collars is a project inside the project. With all that it implies.
Evaluation of investment attractiveness is always comparative. There are no parrots in which you can measure a spherical project in a vacuum in terms of investment. Yes, even if the project is only one, and it is worth choosing whether to invest or not. Because in this situation there are actually two projects, there is always a project “to keep money under the pillow”.
Any project has two components in terms of investment: the size of investments and the projected profit margin ... taking into account the risks. Often, risks are either completely forgotten or they do not go deeply into their assessment. And in vain. Because it is risks that primarily determine the investment attractiveness of a project.
In the case of the choice of technology everything is exactly the same. Therefore, the choice of technology, in addition to understanding the desired value, translates into an assessment of the risks of this choice. Well, okay, well, there is still a factor in the size of investments, yes.
The whole difficulty of assessing investment attractiveness in general and assessing risks in particular lies in bringing the values to a single basis (money) with sufficient accuracy. Most of the formulas used by economists for these estimates personally horrify me as a mathematician. Take the same ROI, which with acceptable accuracy can be calculated only after the fact. On the other hand, the accuracy of the comparative assessment of two values depends on the proximity of the values of these two values, and it is not always necessary to know how many kilometers to the border and how many to the nearest grocery store to compare these distances.
Take the same C ++ and PHP. Obviously, with the same functionality, the product on the first will be more productive than the product on the second. But it will be much more expensive both in time and in salaries. And here it is not necessary to count to a penny, to the day and to how much a day it is, in order to understand: the back end of C ++ prolending is not interesting.
But the matter is not even the accuracy of the evaluation of specific characteristics. In the example above, not a word about risks. The point is in the most complete factor analysis of all risks. For myself, I made a fairly complete, in my opinion, but not an exhaustive list.
Terms of search - how much the labor market is filled with CV of the desired level. COBOL programmer will have to search for a long and expensive, and the term of his search has a huge variance. You can find in a month, but you can not find in a year. And every day of delay in hiring reduces the return value of the project.
Examination of hiring - how adequately the employer is able to evaluate the candidate. This is a complex risk, it includes not only the level of expertise of the employer in the technology for the candidate, but also the traditions established in the technology community (yes, some experts tend to misinformation more than others), as well as the size of this technology - "I know well C ++ and I know PHP well are two completely different statements. This risk affects both recruitment costs - eliminating unsuitable expenses, making appraisal schemes, etc. - and on the final value (hired wrong).
Discipline is not a secret that in different technologies a different level of code discipline is dictated by the technology itself (hello, JavaScript!) And the traditions of the professional community. Ensuring the planned level of discipline is the future cost of management.
Possession of the code - how potentially traumatic for the project the sudden disappearance of the developer. It takes into account the fullness of the labor market, and the complexity of the perception of the code (perl -e '$ ?? s:; s: s ;; $? :: s ;; =] =>% - {<- |} <& | {;;y; -/:-@[-
;; {;;y; -/:-@[-
{-}; `- {/" - ;; s ;; $ _; see '), and much more.
Community dynamics - a sustainable or growing community implies more or less confidence in the state of the labor market in the future. Although, of course, there are cases when the community collapsed in a matter of months.
Technology maturity is usually (but not always) a technology that has been around for decades and has run through a multitude of rakes, is more stable, stable and reliable. And in this sense, often the best is really the enemy of the good.
The size of the community - echoes the risks of staff, but here is present in another aspect: the size of the community, as a rule, affects the number of contributors. The more contributors, the more labor is spent on improving the technology.
Stability - consists of the stability of technology and the stability of the community. If in the history of technology there were several “heresies of Horus”, then there is no reason to expect a safe haven from such technology in the future. If the community is constantly segmented, if the new versions are not compatible with the old and in fact are a completely different product, then this technology is interesting only in very short periods.
Integrity - how complete the technology is, how clearly the basic concepts are formulated, and how much the community and the satellite technology / sub-technologies community share them. How consistent is the documentation and knowledge base. If, instead of documentation, the framework has a short Wiki on a github with not always relevant information, and the basic knowledge is distributed across hundreds of videos on YouTube, which contradict each other in describing approaches and meanings, then there is no need to speak about integrity.
The threshold of entry is how difficult it is for a person with a zero level of ownership of this technology to gain acceptable ownership. Yes, almost always the risks of personnel result in the need / appropriateness of such [re] education.
These risks are present when choosing almost any size and significance of technologies, from programming languages and frameworks to libraries and utilities. Of course, each of them in each individual case has its own significance, but all of them should always be considered. Of course, the list is not complete, and I do not pretend to be absolute truth, but it is this list that helps me personally in the difficult task of managing development.
In the comments, Aquahawk pointed out the usefulness of the Google Trends service for assessing activity around the technology. I personally also use GT, but rather to assess the interest of a wide audience in technology. Sustained growth over quite a long time is an excellent sign of stability. But apart from this, from GT you can get an idea about other aspects.
Source: https://habr.com/ru/post/326682/
All Articles