Over the past three years, as a former research and development manager, my technical director and I have been working on one thing and that is choosing a technical language that is right for our team.
Our research and development team a total of 9 people, divided into three groups: mobile phone group, back-end interface group, web front-end group, if according to the practice of large companies, we do not have to choose what technical language each group should be concerned about, we can select a team leader in each group, by his full responsibility, the company level as long as the final , but things are not that simple.
reality is always cruel. , of which there are several reasons: first: The job is not high, want to low cost to find a technically qualified person very difficult; second: the limited visibility, the general technical personnel have better choice of conditions, good talent of course more inclined to high-visibility and good prospects of the company, and for the lack of visibility and general prospects for the company , it is extremely difficult to attract them; third: The geographical location of the company, which is not a technical gathering area, is far from the city center of the suburbs, want to let them come to interview is a very difficult thing. So everything still has to be pro-Pro, plus the company just started to develop all the blank, choose a suitable language is imminent.
In these three years, each group has experienced a lot of changes in language and framework, and has been looking for our framework, and now in retrospect the good language framework to meet these elements:
1, technical language development mature;
2, technical language unification;
3, the technical threshold is low;
4, the use of more people;
5, the technology to match the current business needs;
Technology Development Maturity: representative of the problem after the technical solution many, then the team to deal with the problem quickly, the corresponding cost is the lowest, this is the choice of language and framework is a very important indicator.
Technical language unification: There are so many advantages, first: the communication and interaction between the team will be more close, the processing cost of the problem will be very low, but also can increase the communication between the members of the topic, increase mutual friendship; second: The special situation, can be very good use of the replacement of existing personnel; Third: such as interface development if the use of Nodejs, its nature or JS, the front-end development using VUEJS, there are many JS syntax, so for the management of two groups of leadership skills requirements will be reduced a lot, only need to have a good JS foundation, and if the interface development using Golang, C #, Java , then you have to be these back-end language, but also JS to solve the problem.
Low technology threshold: Do not think the technology threshold low is what bad, low technical threshold does not mean that the requirements of technical personnel low, but if it is other language people want to transfer halfway, will be much easier, there is a low technology threshold, the corresponding practitioners will be much more, so the pressure of recruitment will be much smaller, The corresponding remuneration for services will be relatively lower.
Use more people: this is a good understanding, so that you can easily recruit the people you need in an emergency, rather than make the necessary use, or re-cultivate the corresponding talent, which will delay the progress of your development.
Technology matching the current business needs: we are in the technical development of the time easy to fall into a misunderstanding, is to develop too complex and complicated system, we have heard a word, Rome is not built a day, one can not eat a big fat and so on such words, many countless, but we still easy to fall into the wrong thinking. We have spent a long time in accordance with the framework of Ali design a very complex system, a trading system divided into 4, 5 intermediate systems, front and back end separation is not enough, the middle of the deployment of the intermediate task scheduling system, all the system parallel partition registration, to provide to different subsystems to call, For this we have spent a lot of experience, and have to pay a lot of new problems, such as automatic registration of services, how to maintain different machine health heartbeat detection, how to distribute tasks and so on, spend specific time and experience the result is the front and back end development debugging extremely difficult, debugging is cumbersome and complex, To use the exclusion method, test each system separately to confirm the problem, the most important thing is that we put the system to spend a lot of experience after the initial embryonic, found that it is not used, the next 35 years are not used so large and cumbersome system, and we have spent too much experience, these are very undesirable, We should use technical resources for more things that can create value, perfectionism is not for all companies, and small business models are better suited to the form of quick trial and error and quick iterations from the bottom up.
Master the Above "heart", I believe it will make your team more effective. and I conclude, let's summarize our technology-derived specific solutions.
Let's start by putting the mainstream technology we can use in a poor way:
Front End group: Vuejs, AG, react
Back-end groups: Java, C #, Nodejs, go
Mobile development (hybrid development): React native, Dcloud, Xamarin, Apicloud, Deviceone, Weex
Front-end framework, from the use of the number of people and learning threshold angle to analyze, the most ideal frame vuejs, react second, not to expel a word should be ag;
From the point of view of technology unification, then Nodejs is our best choice, go second, Java, C # Learning threshold is in these few inside relatively high, if not require tens load, then Nodejs completely can be competent;
Mobile development, if from the level of performance and technology unification, think the front end we use Vuejs or react so the ideal is react native (hereinafter referred to as RN), RN performance is beyond reproach, it has a good dad Facebook uses the virtual DOM to reconstruct its execution base. , performance is only this in the original, at the same time there is the main use of the JS technology, so that the interface and the front end are unified, and RN's technical solution is very mature, all kinds of components can be easily found, technical solution costs are lower, use more handy.
Therefore, the most ideal framework is integrated as described above:
Front end: React, Vuejs
Back end: Nodejs, go
Mobile development: React native
The above framework is a 3-year trial, summed up in line with the overall framework of small and medium-sized companies, the best solution, I would like to offer you a discussion.
How a good technical team should choose their own development language