Exploration des meilleures pratiques pour l'amélioration de l'efficacité de la R&D

GIAC (GLOBAL INTERNET ARCHITECTURE CONFERENCE) est une conférence annuelle d'architecture technique pour les architectes, les responsables techniques et les praticiens techniques haut de gamme lancée par la communauté des technologies d'architecture à haute disponibilité et msup qui se concentre depuis longtemps sur la technologie et l'architecture Internet. C'est la plus grande technologie en Chine L'une des réunions.

Le 6ème GIAC partagera des exemples typiques d'innovation technologique et de pratiques de R&D des technologies de pointe les plus populaires de l'architecture Internet, de la gestion de la technologie, de l'architecture système, du big data et de l'intelligence artificielle, du développement et du langage mobiles, des domaines liés à l'architecture .

Sur le thème de la collaboration en équipe, Ru Bingsheng, un expert senior sur l'efficacité R&D de Tencent, a prononcé un discours d'ouverture intitulé "Exploration des meilleures pratiques pour améliorer l'efficacité R&D".

Ru Bingsheng, ingénieur expert du TEG-Infrastructure Department-R & D Efficiency Center, expert reconnu dans le secteur de la qualité des logiciels pratiques et de l’efficacité de l’ingénierie de la R-D, expert le plus précieux de Tencent Cloud, TVP de la Fédération chinoise du commerce, expert du groupe de réflexion sur la technologie des applications Internet, meilleur vendeur Test Engineer Full-stack Technology Advancement and Practice "et" Efficient Automated Test Platform: Design and Development Practical Combat "auteur, InfoQ Geek Time" Software Testing 52 Lectures-Practical Methods from Workers to Experts ", et a été impliqué dans DevOps avec des capacités matures Il a également participé à la conception de cours de certification internationaux pour les coachs d'entreprise DevOps.

Ce qui suit est l'enregistrement du discours:

Je suis honoré d'être invité par la GIAC Global Internet Architecture Conference à être le producteur du "Test Frontier Technology" de cette conférence, et aussi d'être invité à donner un discours d'ouverture sur l'amélioration de l'efficacité de la recherche et du développement. Ici, j'ai fait une simple revue de l'essence de cette conférence, dans l'espoir d'inspirer et d'aider les étudiants soucieux de l'amélioration de l'efficacité de la R&D. Voici un aperçu du contenu principal. Bienvenue à tous.

L'industrie du logiciel moderne n'est plus une ère de «gros poissons mangeant de petits poissons», mais s'est transformée en une ère de «poisson rapide mangeant du poisson lent». Pour de nombreuses grandes sociétés de logiciels traditionnels, à l'origine "gros" est leur avantage, mais maintenant ils sont pris dans l'embarras du "grand bateau est difficile à faire demi-tour". Pour un grand nombre de petits et beaux projets de logiciels Internet, lorsque les domaines de créativité et de subdivision sont confirmés, les principaux concurrents se disputent les capacités de R&D. Plus précisément, la capacité de transformer les exigences en logiciels ou en services. Parmi eux, le niveau d'efficacité de la R&D est lié à la demande. Le taux de conversion joue un rôle crucial. Dans le même temps, comment réduire efficacement le coût de la R&D, de l'exploitation et de la maintenance est également un sujet important auquel il faut prêter attention dans l'efficacité de la R&D, en particulier les projets Internet à grande échelle. Lorsqu'il n'y a qu'une petite quantité d'optimisation dans un certain lien, en raison de son effet d'échelle (tel que la taille du cluster, le trafic des utilisateurs, etc.) L'effet de grossissement, les économies de coûts finales seront également considérables.

À l'instar du concept d'agilité, il est difficile de définir précisément ce qu'est l'efficacité de la R&D. En fait, de nombreux concepts complexes ne sont pas définis, mais évoluent progressivement, c'est le phénomène qui trouve d'abord l'expression appropriée. Pour comprendre des concepts aussi complexes, le meilleur moyen est de clarifier le contexte du développement, de revenir à l'histoire, de revenir à l'époque de la naissance et de parcourir son processus de développement pour vraiment comprendre son essence. Cependant, en raison des contraintes de temps, nous n'avons pas assez de temps pour vous présenter l'histoire dans ce discours, je prévois donc d'utiliser quelques cas pour permettre à chacun de ressentir intuitivement la «beauté d'améliorer l'efficacité de la R&D».

Examinons d'abord le premier exemple: souvent, lorsque nous concevons un prototype de produit, nous devons utiliser des outils de prototype de produit pour concevoir l'interface graphique du produit, et l'utiliser comme base de communication pour effectuer le travail de suivi. Mais vous constaterez que même s'il existe des outils prototypes comme Axure et Modao, le coût de "l'interface de dessin" est toujours élevé. Voici une solution de génération automatique en un clic qui peut convertir des brouillons de conception graphique GUI, ou même des projets de conception GUI dessinés à la main, en code de plate-forme cible.

Dans l'exemple ci-dessus, commencez par concevoir une interface graphique peinte à la main, puis convertissez directement le code de la plate-forme cible via Sketch2Code. Si la plate-forme cible que vous spécifiez est Web, générez directement du code HTML. Si la plate-forme cible que vous spécifiez est iOS, alors Le projet XCode sera généré, qui peut être installé et exécuté directement sur l'iPhone après avoir été compilé et emballé. L'introduction de cette méthode améliorera considérablement l'efficacité de la construction du prototype.

Regardons le deuxième exemple. Lors du test de l'interface API, il est très courant que la valeur critique du paramètre d'entrée ne soit pas correctement gérée. Par exemple, un paramètre d'entrée est de type String, mais la valeur de la variable String n'est pas prise en compte dans l'implémentation du code. Ces problèmes sont généralement découverts lors du dernier test d'intégration de l'API ou de l'étape de débogage conjointe. À ce stade, on constate que le coût de la réparation est généralement plus élevé et que le coût des tests de régression doit être pris en compte après la réparation. Nous pouvons donc introduire un mécanisme pour rechercher activement les types de paramètres d'entrée de l'API, puis générer des valeurs sujettes aux erreurs en fonction des types de paramètres, et utiliser ces valeurs pour appeler automatiquement l'API. Si une erreur 500 se produit ou une exception est levée, le problème est détecté. (Par exemple, pour les paramètres d'entrée de type String, vous pouvez générer NULL, des chaînes super longues, des chaînes contenant des caractères non anglais, des chaînes d'injection SQL, etc.) De plus, nous pouvons intégrer cette solution avec le pipeline CI et l'exécuter dans CI Effectuez de manière proactive de tels tests pendant le processus, afin d'exposer le problème plus tôt.

Les deux exemples ci-dessus sont dominés par la technologie. L'exemple suivant n'a rien à voir avec la technologie, mais est dominé par le processus. Sur la photo ci-dessus, le chef prépare des sandwichs. Sur la photo de gauche, comme les ingrédients ne sont pas placés dans un ordre précis, le chef doit faire des allers-retours pour terminer la tâche. Sur la photo de droite, les ingrédients sont placés dans l'ordre d'utilisation. Le chef peut facilement compléter le sandwich en se tenant debout. La production économise considérablement le temps de marche inutile, améliorant ainsi considérablement l'efficacité. Cela montre que l'amélioration de l'efficacité peut être motivée par la technologie ou le processus.

Après avoir lu l'exemple ci-dessus, je pense que vous avez déjà une compréhension très perceptive de l'amélioration de l'efficacité de la R&D. Examinons ensuite la nature de l'efficacité de la R&D. Si je veux résumer l'efficacité de la R&D en une phrase, j'utiliserai "Livraison fluide, de haute qualité et continue d'une valeur efficace en boucle fermée". Expliquez certains des concepts clés:

  • Lisse: le flux de valeur doit être fluide et libre

  • Haute qualité: si la qualité n'est pas bonne, plus elle coule vite, plus vite elle mourra

  • Soutenu: vous ne pouvez pas aller et venir, courir à petits pas est la bonne façon, ne pas retenir les grands mouvements

  • Valeur effective: Cela vient du niveau de la demande, votre livrable résout-il vraiment le problème essentiel de l'utilisateur? (Je veux dire une dernière chose sur la question essentielle. Ce n'est pas une question essentielle pour les filles de perdre du poids. Les filles aiment la beauté. Vous pouvez en faire l'expérience vous-même.)

  • Boucle fermée: insister sur l'importance d'un retour rapide

 Sous la direction de ce concept, je pense que cinq pratiques continues (développement continu, intégration continue, tests continus, livraison continue et exploitation et maintenance continues) sont des pratiques nécessaires pour que ce concept soit mis en œuvre. Dans le même temps, nous devons également mesurer efficacement l'efficacité de la R&D à partir des quatre dimensions de la vitesse de flux, de la qualité à long terme, de la valeur client et de la transmission des données.

Ce qui précède décrit l'efficacité de la R&D d'un point de vue conceptuel. Est-ce que cela semble un peu dogmatique? En fait, je pense aussi. Je vais donc ci-dessous utiliser des exemples populaires pour expliquer ma compréhension de l'efficacité de la R&D.

L'image de gauche est l'effet dit «roue carrée». Le patron tire vigoureusement le chariot vers l'avant et l'employé pousse vigoureusement le chariot vers l'arrière. Le patron se concentre sur la tendance et la direction générales et regarde vers l'avant. Il est difficile de constater que les roues du chariot sont carrées et que les employés qui tirent le chariot l'ont peut-être vu. Des roues carrées, mais comme le boss tirait fort devant, il n'osait pas s'arrêter, il ne pouvait que mordre la balle et pousser fort. Et l'étudiant qui a suggéré de changer la roue ronde a été impitoyablement ignoré.Changer la roue ronde nécessite une pause supplémentaire, car tout le monde sait que c'est pour la faire tourner plus vite et plus longtemps. (Digression: Soudain, un slogan d'hôtel a clignoté dans son esprit, sachant s'arrêter). Comme vous l'avez peut-être déjà pensé, les roues rondes ici sont en fait une efficacité technique.

 L'image de droite est divisée en quatre quadrants selon l'importance et l'urgence de la question. Nous ne discutons ici que du quadrant A et du quadrant B. Le quadrant A est important mais pas urgent. Il s'agit généralement de choses fondamentales et importantes à long terme, telles que la planification de nouveaux produits pour saisir le marché, la construction d'infrastructures, l'optimisation des processus, la formation des talents, etc. J'aime appeler ce quadrant le «quadrant préventif». Le quadrant B est à la fois important et urgent, c'est généralement quelque chose qui doit être traité immédiatement, comme les pannes du système, les réparations de défauts en ligne, etc. J'appelle souvent ce quadrant le «quadrant de lutte contre les incendies». 

Idéalement, plus de temps devrait être placé dans le «quadrant préventif» et un peu de temps devrait être utilisé dans le «quadrant de lutte contre les incendies».

Lorsque le «Quadrant pour les précautions» est terminé, la probabilité d'événements dans le «Quadrant pour la lutte contre les incendies» diminue. Si une entreprise passe la plupart de son temps à lutter contre les incendies, cela signifie généralement que la répartition du temps entre ces deux quadrants est déséquilibrée ou à l'envers, et elle doit se concentrer sur l'investissement dans des choses importantes à long terme mais pas urgentes.

Pour le développement de logiciels, la partie la plus importante du «quadrant préventif» est l'efficacité de la recherche et du développement.

Enfin, j'utilise un exemple plus frappant comme métaphore: je crois que tout le monde a entendu l'histoire d'une oie pondant un œuf d'or. Est-il vrai que plus une oie pond d'œufs d'or, plus l'efficacité est élevée? En fait, ce n'est pas le cas. Laisser aveuglément l'oie pondre des œufs d'or pendant les pauses déjeuner épuisera l'oie tôt ou tard. Ce n'est pas une stratégie durable à long terme. La vraie efficacité devrait être de laisser les oies donner naissance à des oies et les oies régénérer les oies, de sorte que davantage d'oies puissent pondre ensemble des œufs d'or.

La plate-forme de recherche intellectuelle en développement rapide de Tencent TEG, la plate-forme d'efficacité du cloud productisée d'Alibaba, le cloud d'efficacité de Baidu basé sur le livre blanc sur l'efficacité de l'ingénierie, etc. sont tous des points de référence dans le domaine de l'efficacité de la R&D, mais y avez-vous déjà pensé, pourquoi récemment Au cours des dernières années, des entreprises de premier plan dans les principaux secteurs ont commencé à faire des efforts dans le domaine de l'efficacité de la R&D, et le rythme est si constant. Je pense que les raisons en sont les trois points suivants:

  1. Tout comme le concept de «stade intermédiaire», de nombreuses grandes entreprises ont maintenant des gammes de produits très larges, et il y a beaucoup de roues répétées parmi elles. Si nous prêtons attention aux roues répétées dans l'entreprise, alors c'est l'étape intermédiaire dans l'entreprise; si nous prêtons attention aux roues répétées dans la construction des données , Ensuite, c'est le centre de données; si nous prêtons attention aux roues répétées dans la construction de l'efficacité de la R&D, c'est la plate-forme d'efficacité de la recherche. En fait, la plate-forme d'efficacité de la recherche peut également être appelée «station intermédiaire d'efficacité de la R&D» dans une certaine mesure, et son objectif est de réaliser l'entreprise La réutilisation des capacités de R&D de produits et de projets de haut niveau évite que chaque ligne de produits fasse le "0 à 1" nécessaire à l'efficacité de la R&D, et personne n'a l'énergie de prêter attention au "1 à n" plus précieux. La plate-forme de performance de la recherche actuelle sera unifiée pour créer une plate-forme de meilleures pratiques pour les capacités générales de recherche et développement au niveau de l'organisation.

  2. D'un point de vue commercial, les produits toC sont en train de devenir saturés. L'ère des bonus, qui était autrefois remplie de temps d'inactivité, a disparu pour toujours. Dans le passé, l'entreprise s'est développée extrêmement rapidement, alors utilisez la méthode de la combustion de l'argent (recherche et développement approfondis, Le meilleur choix est le meilleur choix en échange d'une part de marché plus rapide pour obtenir le gagnant-gagnant. À cette époque, l'accent était mis sur la production de logiciels et l'efficacité de la recherche et du développement pouvait être remplie d'argent. Et maintenant, la toC s'est progressivement déplacée vers la mer Rouge, et l'ampleur de la R&D est plus grande que jamais. Il est temps de vous serrer la ceinture et de vivre votre vie. Lorsque l'open source (open source en open source et throttling) rencontre un goulot d'étranglement, la limitation devrait jouer un rôle . Cette limitation vise à améliorer l'efficacité de la recherche et développement, les mêmes ressources, en même temps pour obtenir plus de rendement.

  3. Du point de vue de la structure organisationnelle, de nombreuses entreprises sont confrontées à un «dilemme de grange». Comme le montre la deuxième image ci-dessus, divers aspects de la R&D peuvent avoir été optimisés en interne, mais il peut y avoir beaucoup de circulation dans la collaboration light-link. Et les coûts de communication, affectant ainsi l'efficacité globale. Basé sur l'optimisation des processus, briser les murs invisibles de tous les liens, éliminer les attentes inutiles et améliorer le flux de valeur est une grande catégorie de problèmes que l'efficacité de la R&D tente de résoudre.

Les diapositives de cette page répertorient les problèmes auxquels il faut prêter attention à chaque étape de l'amélioration de l'efficacité de la R&D du point de vue du développement, des tests et de la publication de logiciels. La ligne principale est une série de pratiques autour de CI / CD. Pour des raisons d'espace, je ne les développerai pas un par un ici, je ne citerai que quelques exemples pour vous donner une compréhension perceptive.

  1. L'environnement de développement tout-en-un peut réduire le coût en temps de la préparation de l'environnement de développement de chaque développeur tout en garantissant la cohérence de l'environnement de développement. Un gameplay plus avancé consiste à utiliser l'IDE cloud, qui vous permet de changer le code tant que vous avez un navigateur.

  2. Avec l'aide de plug-ins d'invite de code basés sur l'IA, l'efficacité de développement du code dans l'EDI peut être considérablement améliorée. De même, saisissez un morceau de code, sans l'aide du code AI pour inviter le plug-in, vous devez appuyer 200 fois sur le clavier, et l'activer peut ne nécessiter que 50 frappes.

  3. La vérification statique du code n'a pas besoin d'être lancée par le processus Sonar dans CI une fois le code soumis. À ce moment-là, il est trop tard pour résoudre le problème. Vous pouvez utiliser le plug-in Sonar Lint combiné avec l'EDI pour lancer une vérification du code local en temps réel. En cas de problème, directement dans l'EDI Rapide, réparez directement.

  4. Les tests unitaires prennent du temps et vous pouvez utiliser des outils tels que EvoSuite pour réduire la charge de travail de développement des tests unitaires.

  5. Pour les projets plus importants, le temps de compilation est plus long après chaque modification. Vous pouvez utiliser la compilation incrémentielle ou même la compilation distribuée (Distcc et CCache) pour améliorer l'efficacité.

  6. Le développement frontal peut utiliser des outils tels que JRebel et Nodemon pour rendre l'expérience de prévisualisation du développement frontal plus fluide.

  7. Le choix d'une stratégie de branchement de code adaptée au projet est également très utile pour améliorer l'efficacité.

  8. Construire un pipeline CI et CD hautement automatisé augmentera considérablement le taux de circulation de valeur.

  9. Le choix d'une stratégie de libération appropriée jouera également un rôle positif dans l'équilibre entre efficacité et risque. Par exemple, l'architecture est relativement simple, mais le cluster est grand, de préférence Canary. Si l'architecture est plus complexe, mais que la taille du cluster n'est pas trop grande, les versions bleu-vert peuvent être plus dominantes.

De la description ci-dessus, nous pouvons voir que l'amélioration de l'efficacité de la R&D implique un large éventail d'aspects, à la fois basés sur la technologie et les processus. Dans la pratique réelle de l'ingénierie, comment mettre en œuvre l'amélioration de l'efficacité de la R&D? Le point que je préconise est "d'utiliser les idées MVP (Minimum Viable Product) pour améliorer l'efficacité de la R&D".

Le concept de MVP vient du livre "Lean Startup" d'Eric Rise. L'idée de base se réfère à la stratégie produit qui montre le concept de base autant que possible au moindre coût, c'est-à-dire construire un prototype de produit utilisable de la manière la plus rapide et la plus concise. Ce prototype doit exprimer l'effet final souhaité de votre produit, puis itérer pour affiner les détails.

Cette idée est particulièrement adaptée à la construction de plates-formes d'efficacité de la recherche. Après avoir identifié les problèmes de recherche et d'efficacité à résoudre, il faut d'abord donner la solution la plus simple, puis continuer à optimiser et à itérer dans la pratique ultérieure. Si nous essayons de fermer la porte Pour construire une plateforme de recherche et d'efficacité, attendez-vous à attendre que toutes les fonctions soient parfaites puis à la pousser vers l'équipe métier, cela doit être une impasse.

Il est également nécessaire de souligner les malentendus courants de MVP. Une certaine fonction est réalisée mais n'a pas de valeur réelle pour le client pour le moment, et elle ne sera utile au client qu'après la sortie de cette dernière fonction. Ce n'est pas un MVP. Ce que poursuit MVP, c'est "le moineau est petit et a tous ses organes internes", c'est-à-dire que les points de fonction réalisés peuvent être petits et simples, mais il faut être précieux pour les clients. En utilisant les deux triangles de l'image ci-dessus, "coupe croisée" n'est pas le MVP, et "coupe verticale" est le MVP.

Ainsi, dans le domaine de l'efficacité de la R&D, nous devons nous assurer que les outils de recherche que nous élaborons permettent de résoudre les problèmes réels, même si la méthode initiale peut être relativement simple. Du point de vue du produit, la plate-forme de R&D elle-même n'est pas essentiellement différente des produits logiciels généraux, et elle nécessite également une itération continue et une amélioration continue.

Voici la partie la plus difficile de ce partage, et ceci est également un résumé par étapes de la façon de promouvoir l'efficacité de la R&D.

Les gens me demandent souvent que les projets d'amélioration de l'efficacité de la recherche que vous avez menés ont été couronnés de succès. Si vous venez ici, combien d'années pouvez-vous le faire? C'est en fait un problème insoluble. Dans une certaine mesure, si l'investissement est important, le cycle sera court, mais le cycle de mise en œuvre ne sera pas infiniment court en raison de l'investissement infini. Nous pouvons éviter de nombreux stands sur lesquels nous avons marché et faire de notre mieux pour éviter les détours. Cependant, nous devons encore emprunter le chemin qui nous convient. Le déracinement ne fera que nuire à nos intérêts à long terme. Pouvez-vous devenir un coureur après avoir acheté une voiture de sport? Compte tenu de cela, j'ai combiné les frais de scolarité que j'ai payés et les fosses sur lesquelles j'ai marché et j'ai résumé les 8 suggestions dans l'image ci-dessus pour votre référence. Ensuite, je vais les expliquer un par un.

 Le premier point est "partir du point douloureux". Plusieurs fois, lorsque nous tenons un marteau dans nos mains, tout ressemble à un clou. Mais l'amélioration de l'efficacité de la R&D se trouve être l'inverse: il faut d'abord savoir quels clous sont les plus accrocheurs, puis utiliser une méthodologie systématique pour construire un marteau approprié.

Par conséquent, au début de la mise en œuvre de l'efficacité de la R&D, nous adoptons généralement une stratégie ascendante, en partant des points douloureux réels (clous) dans chaque pratique d'ingénierie, et en créant les points forts de l'amélioration de l'efficacité de la recherche du point de vue de la résolution de problèmes. À ce stade, nous poursuivons C'est le principe du "court et rapide", le problème est résolu un par un. Par exemple, les scénarios suivants:

  • La compilation locale prend beaucoup de temps: fournit des capacités de compilation incrémentielle et de compilation distribuée

  • Les tests locaux sont difficiles et la préparation de l'environnement de test est compliquée et prend du temps : le pod basé sur K8S offre la possibilité de créer un environnement de test en un seul clic

  • Le nombre de cas de test automatisés est important et le temps de régression d'exécution est trop long: le mécanisme d'exécution de cas de test simultanés est adopté, et des centaines ou des milliers de machines d'exécution de test sont utilisées pour exécuter des cas de test en parallèle, afin de réaliser l'utilisation des ressources matérielles pendant le temps

  • Coût de maintenance élevé des cas de test automatisés: les cas de test adoptent un système modulaire et en couches pour réaliser une maintenance automatisée des cas d'utilisation à faible coût

  • Difficulté à préparer les données de test: introduction des fonctionnalités du service de données de test unifié (Test Data Service)

  • Dans le stade ultérieur de la R&D, la soumission du code est concentrée et les défauts éclatent: la mise en œuvre du test est décalée vers la gauche, encourage l'autotest R&D, implémente «qui développe, qui teste, qui passe en ligne, qui appelle»

  • Des défauts de performance ont été découverts à un stade avancé du développement, et le coût de réparation et de nouveau test reste élevé: des tests de performance à l'ingénierie des performances, permettant d'intégrer les performances dans tous les aspects du développement logiciel, plutôt que dans un accord final

  • Problèmes de sécurité fréquents: intégrez des capacités de test de sécurité dans le cycle de vie complet de la R&D pour atteindre DevSecOps au lieu du SDL précoce

  • L'échelle du cluster est énorme et le processus de publication prend trop de temps: capacités de déploiement simultané à tous les niveaux, simultanéité des nœuds du cluster, concurrence entre les clusters, etc.

  • Les données de processus du projet sont remplies à l'étape ultérieure et perdent le sens de la mesure: les données de processus du projet sont automatiquement remplies par l'outil et ne dépendent plus de la saisie manuelle de l'ingénieur. Par exemple, le temps d'achèvement du développement ne dépend plus du développeur à remplir manuellement, mais est automatiquement renseigné une fois la construction de Jenkins terminée pour garantir l'authenticité de toutes les données de processus, afin de fournir des informations fiables pour les mesures et les améliorations ultérieures.

Le deuxième est «couper dans la situation globale». Plusieurs fois, nous essaierons d'optimiser un lien spécifique, tout en ignorant la possibilité d'une optimisation globale.

 Par exemple, lorsque nous nous rendons à l'hôpital pour voir un médecin, nous faisons généralement la queue pendant une demi-heure pour l'enregistrement, mais l'inscription réelle peut ne prendre que deux minutes. Ensuite, il y a une longue file d'attente pour que le médecin voie un médecin. Après tout, on peut nous demander de passer un examen en moins de cinq minutes. du sang…. Le pourcentage de temps effectif réel dans l'ensemble du processus est très faible. Si à ce moment nous essayons toujours d'optimiser le moment de l'enregistrement lui-même, c'est évidemment la mauvaise direction de ne pas prêter attention à l'optimisation du temps d'attente de chaque lien, donc l'amélioration de l'efficacité ne doit pas seulement se concentrer sur l'optimisation d'une seule étape, mais également se concentrer sur la réduction du temps entre les étapes. Attente inutile. À ce stade, le centre d'examen médical est bien meilleur que les hôpitaux publics.Vous voyez rarement de longues files d'attente à la porte de chaque département du centre d'examen médical, car le centre d'examen médical fera attention au débit en raison d'intérêts économiques et passera la situation globale. Optimisation de la planification des files d'attente pour une rentabilité supérieure.

De retour dans le domaine de la recherche et du développement de logiciels, vous trouverez des phénomènes de file d'attente déraisonnables comme les hôpitaux ci-dessus peuvent être vus partout, tels que la circulation de défauts logiciels, la réalisation et la livraison d'exigences logicielles, et l'attente de la sortie de progiciels. Ce sont également des domaines sur lesquels il faut se concentrer pour améliorer l'efficacité de la R&D. Il est nécessaire de clarifier l'ensemble du processus dans une perspective globale, d'identifier le temps d'attente perdu et d'améliorer l'efficacité globale grâce à la réingénierie et à l'optimisation des processus.

Le troisième article est "Avantages pour les utilisateurs". Pour l'amélioration de l'efficacité de la recherche, il faut garder à l'esprit que le critère de succès n'est pas le succès de la plateforme d'efficacité de recherche et développement, mais le succès du client. Seul le bénéfice des clients est le seul critère pour tester le succès des projets de recherche. Ici, je parle des trois points suivants:

Pseudo-exigences: les fausses exigences font référence aux conjectures de l'équipe de recherche elle-même, qui sont des cas typiques de "tenir un marteau dans la main et de tout voir comme un clou". Alors, comment identifier les fausses exigences? La norme d'identification est en fait très simple. Cela dépend de la volonté du client de partager le coût avec vous. Si le secteur d'activité a déjà démarré, ou si vous voulez commencer à le faire, cela signifie qu'il est juste nécessaire au secteur d'activité. Si la plateforme de recherche peut vous aider à fournir des solutions, L'accès à la plateforme de recherche est une évidence. J'ai vu de nombreux exemples de ce genre de besoins justes, tels que la mise en place d'environnements de test intégrés sous l'architecture de microservices. 

Problèmes structurels: Liu Run, un consultant en affaires bien connu, a dit un jour que "la structure est fausse, rien n'est juste". Par exemple, l'histoire de deux moines divisant du porridge a dû être entendue par tout le monde. Un bol de porridge doit être partagé également entre deux moines, mais le moine qui divise le porridge veut toujours boire plus de porridge. Comment peut-il être juste sans surveillance? Le moine qui enseigne la distribution du porridge dit-il que la famille du moine "prend moins de nourriture par vanité"? De toute évidence, une fois qu'il n'y aura pas de supervision, il se donnera plus de points. La meilleure façon de résoudre ce problème est qu'un moine divise le porridge et l'autre choisisse le porridge, puis Ce système détermine l'uniformité de la bouillie. Donc, une bonne stratégie consiste à admettre que tout le monde est égoïste, mais votre stratégie peut maximiser les avantages globaux en partant du principe que tout le monde est égoïste, si vos avantages globaux maximisent est basé sur l'exigence que tout le monde soit égoïste. Oui, c'est une conception ratée, car elle mènera inévitablement à un échec. Pour en revenir à la question de l’amélioration de l’efficacité de la recherche, nous devons nous positionner sur «non pas la qualité de notre plate-forme de recherche, mais la manière dont la ligne d’activité s’améliorera à l’avenir» afin d’obtenir un succès structurel.

Conscience de service: Après avoir compris le point de vue ci-dessus, il est naturel de comprendre la conscience de service. Dans le processus de lancement de la plate-forme de recherche, nous devons nous entraider pour parvenir à une situation gagnant-gagnant. La ligne métier récolte des solutions prêtes à l'emploi, et la plate-forme de recherche récolte la précipitation des meilleures pratiques. La précipitation de ces meilleures pratiques est cruciale pour les lots ultérieurs. Une réplication réussie fournit la base technique.

Il y a aussi une petite expérience à partager avec vous.Parfois, pour que la plateforme de recherche et d'efficacité puisse atterrir au plus vite sur la ligne métier, pour que la ligne métier soit prête à devenir le terrain d'essai de notre plateforme de recherche et d'efficacité, il faut parfois pouvoir prendre l'initiative de soutenir le pot. , Si vous êtes intéressé, vous pouvez communiquer avec moi en privé.

L'amélioration continue est le seul moyen de développer la plateforme d'efficacité de la recherche. Au début de la résolution de nombreux problèmes, nous nous sommes concentrés sur la façon de résoudre le problème rapidement et simplement, mais lorsque l'échelle est augmentée, nous devons accorder plus d'attention à l'universalité et à la polyvalence de la solution. Si vous essayez de trouver la solution parfaite dès le début, vous serez inévitablement perdant.

Voici un exemple spécifique. Par exemple, nous devons déclencher certaines opérations (telles que l'analyse statique du code, les tests unitaires, etc.) via le mécanisme de hook de Jenkins. Le moyen le plus simple consiste à implémenter les étapes spécifiques de l'opération dans le hook. Cette implémentation en est une L'efficacité initiale est très élevée et il est très facile à mettre en œuvre, mais ce n'est pas la solution optimale, car le code dans le hook ne sera exécuté qu'une seule fois, et après de plus en plus de hooks, diverses implémentations sont dispersées à divers endroits et difficiles à maintenir. Chaque fois qu'il y a de nouveaux besoins (comme l'ajout d'une analyse SQL lente), vous devez changer l'implémentation du hook, et cette approche viole également le principe IaC (Infrastructure as Code).

Une meilleure approche consiste à introduire un centre de messages d'efficacité de recherche et développement (MQ) pour atteindre une évolutivité future grâce au modèle d'abonnement des opérations en aval. Cependant, si vous construisez MQ depuis le début, la difficulté et le coût de mise en œuvre augmenteront considérablement, et le secteur d'activité ne pourra peut-être pas attendre votre plan et l'amélioration de l'efficacité de la recherche ne sera pas mise en œuvre comme prévu. Par conséquent, mon point est que la mise en œuvre des résultats de la recherche peut suivre la stratégie de "clôture d'abord, puis s'améliorer".

Les diapositives sur cette page portent sur la mise en œuvre de l'amélioration de l'efficacité de la R&D. La méthode ascendante et descendante seules ne sont pas réalisables. Au lieu de cela, il devrait s'agir d'une approche à deux volets. Serrer du milieu des deux côtés est une solution pratique. Pour des raisons d'espace , Je ne vais pas l'élargir en détail ici.

Ici, je propose deux concepts: "chanter l'opéra" et "organiser la scène". Lorsque nous avons commencé à faire de la performance R&D, nous étions à la fois une plate-forme et un interprète. Sur la base de la plate-forme de recherche (une plate-forme), nous avons fourni des solutions pour chaque secteur d'activité (chant), mais lorsque l'échelle d'accès aux lignes d'affaires a continué de s'étendre À cette époque, les besoins sont de plus en plus diversifiés dans divers domaines verticaux. À l'heure actuelle, il nous est difficile de faire face aux besoins individualisés non universels de chaque famille (la pièce à chanter est différente pour chaque famille), donc la capacité ouverte de la plate-forme de recherche Elle est devenue la clé. La construction de la plateforme d'efficacité de la recherche doit pouvoir faire face à cette diversité. La responsabilité de la plateforme d'efficacité de la recherche s'est transformée en plateforme standardisée, afin que les métiers puissent répondre à leurs besoins individuels sur cette plateforme, donc la plateforme d'efficacité de la recherche elle-même La conception de l'architecture technique doit tenir compte de l'évolutivité et de la flexibilité.

 Par exemple, la plate-forme est Jenkins et la flexibilité réside dans les différents plugins ci-dessus.

Couvrir les oreilles et voler des cloches est une erreur que nous commettons souvent lors de la recherche sur l'atterrissage. La figure ci-dessus montre la «pire pratique» de l'efficacité de la R&D. Vous pouvez compter le nombre de coups dans votre cœur.

Un autre exemple de tromperie est l'utilisation généralisée d'indicateurs de vanité pour mesurer la performance. Alors, quel est exactement un indicateur de vanité? Les indicateurs de vanité se réfèrent à des indicateurs qui ne peuvent pas être directement utilisés pour guider les actions de suivi, ce dont nous avons besoin, ce sont des indicateurs exécutables qui peuvent guider nos actions. C'est encore assez abstrait, je vais vous donner quelques exemples pour le comprendre facilement. 

  • «Le nombre de projets connectés à Sonar» est l'indicateur de vanité, et les indicateurs exécutables correspondants sont «la tendance croissante des problèmes de Sonar» et «le temps de réparation des problèmes de Sonar»;

  • «Le nombre d'utilisateurs du système» est l'indicateur de vanité, et les indicateurs exécutables correspondants sont «utilisateurs actifs d'un jour DAU» et «utilisateurs actifs mensuels MAU»;

  • «Le nombre de projets connectés à la plateforme d'efficacité de la recherche» est l'indice de vanité, et l'index exécutable correspondant est «quel pourcentage des projets ont utilisé la plateforme d'efficacité de la recherche pour terminer le processus de développement, de test et de publication;

Nous avons besoin de charbon de bois dans la neige, pas de cerise sur le gâteau.

Le dernier point est facile à comprendre pour tout le monde: «Soyez le premier utilisateur de votre propre plate-forme de recherche». La plate-forme de recherche et développement elle-même doit passer par sa propre plate-forme, afin que vous puissiez examiner vos propres solutions du point de vue de l'utilisateur et interagir avec les utilisateurs du secteur d'activité. Empathie".

Le dernier concerne les perspectives de développement futur de l'industrie de l'efficacité de la R&D. Pour des raisons d'espace, je ne m'étendrai pas dessus un par un. J'écrirai un article pour parler de ce contenu dans le plan de suivi, alors restez à l'écoute! 

Certaines lectures dérivées sont recommandées. Parmi elles, "Test Engineer Full Stack Technology Advancement and Practice" et "Efficient Automated Test Platform Design and Development Practice" sont des livres que j'ai écrits respectivement en 2019 et 2020. Ils se concentrent principalement sur l'amélioration de l'efficacité des tests logiciels. Parallèlement, le "Whole Software Testing (3rd Edition)" du professeur Zhu Shaomin est également recommandé.

Réchauffez-vous sur "La beauté de l'amélioration de l'efficacité de la R&D logicielle" que Wu Junlong et moi sommes en train d'écrire. Si tout se passe bien, je vous rencontrerai en 2021.

Répondez au mot-clé [GIAC] en arrière - plan pour obtenir le PPT des invités de cette conférence.

Je suppose que tu aimes

Origine blog.csdn.net/Tencent_TEG/article/details/108250398
conseillé
Classement