Fin décembre 2008, j'ai été invité à l'un des services de taxi de Perm afin d'automatiser les processus commerciaux existants. En général, trois tâches fondamentales m'ont été confiées:
- Développer un progiciel pour un centre d'appels avec une application mobile pour les chauffeurs de taxi et automatiser les processus d'affaires internes.
- Tout devait être fait dès que possible.
- Avoir leur propre logiciel, et non acheté auprès de développeurs tiers, qui, à l'avenir, au fur et à mesure du développement de l'entreprise, pourrait être adapté de manière indépendante aux conditions du marché en constante évolution.
À cette époque, je ne comprenais pas comment ce marché était structuré et ses nuances, mais néanmoins deux choses étaient évidentes pour moi. Le centre d'appels doit être construit sur la base d'un échange de logiciels d'astérisque open source. L'échange d'informations entre le centre d'appels et l'application mobile est essentiellement une solution client-serveur avec tous les schémas pertinents pour concevoir l'architecture d'un futur projet et sa programmation.
Après une évaluation préliminaire des tâches, des délais et des coûts du projet, après avoir convenu de toutes les questions nécessaires avec le propriétaire du service de taxi, en janvier 2009, j'ai commencé à travailler.
Pour l'avenir, je dirai tout de suite. Le résultat a été une plate-forme évolutive fonctionnant sur plus de 60 serveurs dans 12 villes de Russie et 2 Kazakhstan. Le bénéfice total de l'entreprise était de plus de 100 millions de roubles / mois.
Première étape. Prototype
Comme je n'avais pas à l'époque d'expérience pratique de la téléphonie IP et que je connaissais superficiellement l'astérisque dans le cadre d'expériences "à domicile", il a été décidé de commencer à travailler au développement d'une application mobile et d'une partie serveur. En cours de route, combler les lacunes dans les connaissances sur d'autres tâches.
Si avec une application mobile, tout était plus ou moins clair. À cette époque, il ne pouvait être écrit en java que pour les téléphones à simple bouton-poussoir, puis avec l'écriture d'un serveur desservant les clients mobiles, la question était un peu plus compliquée:
- Quel OS de serveur sera utilisé;
- Sur la base de la logique selon laquelle un langage de programmation est sélectionné pour la tâche, et non l'inverse, et en tenant compte de la revendication 1, quel langage de programmation sera optimal pour résoudre les problèmes;
- Lors de la conception, il a été nécessaire de prendre en compte la charge élevée future attendue du service;
- Quelle base de données peut garantir la tolérance aux pannes à des charges élevées et comment maintenir un temps de réponse rapide de la base de données avec une augmentation du nombre d'accès à celle-ci;
- Le facteur déterminant a été la vitesse de développement et la capacité à évoluer rapidement le code
- Le coût du matériel et sa maintenance dans le futur (une des conditions du client - le serveur doit être situé sur son territoire);
- Le coût des développeurs qui seront nécessaires dans les prochaines étapes de travail sur la plateforme;
Ainsi que de nombreux autres problèmes liés à la conception et au développement.
Avant de commencer à travailler sur le projet, j'ai proposé la solution stratégique suivante au propriétaire de l'entreprise: étant donné que le projet est assez complexe, sa mise en œuvre prendra un temps considérable, donc je crée d'abord une version MVP qui ne prend pas autant de temps et d'argent, mais qui permettra à son entreprise d'obtenir un avantage concurrentiel le marché est déjà «ici et maintenant» et étendra également ses capacités de service de taxi. Pour moi, à son tour, une telle solution intermédiaire me donnera le temps de concevoir plus délibérément la solution finale et le temps pour les expériences techniques. Dans le même temps, la solution logicielle mise en œuvre ne sera pas garantie d'être correctement conçue et sera éventuellement radicalement refaite ou remplacée à l'avenir, mais elle assurera certainement le minimum de fonctionnalités nécessaires pour la «séparation d'avec les concurrents». Le fondateur du taxi a aimé l'idée, donc à la fin ils l'ont fait.
Les deux premières semaines que j'ai passées à étudier les processus d'affaires dans l'entreprise et à étudier le travail d'un taxi «de l'intérieur». Réalisation d'une analyse commerciale, où, quoi et comment automatiser et si c'est nécessaire du tout. Quelles sont les difficultés et les problèmes rencontrés par les employés de l'entreprise? Comment les résoudre. Comment est organisée la journée de travail des salariés de l'entreprise. Quels outils utilisez-vous.
À la fin de la troisième semaine après avoir commencé à travailler et exploré les questions d'intérêt sur Internet, en tenant compte des souhaits du propriétaire de l'entreprise, ainsi que de mes propres connaissances et capacités à l'époque, il a été décidé d'utiliser la pile suivante:
- Serveur de base de données: MsSQL (version gratuite avec une limitation de fichier de base de données jusqu'à 4 Go);
- Développement d'un serveur servant des clients mobiles dans Delphi pour Windows, car il y avait déjà un serveur Windows sur lequel la base de données sera installée, ainsi que l'environnement de développement lui-même contribue à un développement rapide;
- Compte tenu des faibles débits Internet sur les téléphones portables en 2009, le protocole d'échange entre le client et le serveur devrait être binaire. Cela réduira la taille des paquets de données transmis et, par conséquent, augmentera la stabilité des clients travaillant avec le serveur;
Deux semaines supplémentaires ont été consacrées à la conception du protocole et de la base de données. Il s'est avéré 12 packages qui permettent l'échange de toutes les données nécessaires entre le client mobile et le serveur et environ 20 tables dans la base de données. J'ai fait cette partie du travail en vue de l'avenir, même si je dois changer complètement la pile technologique, la structure des packages et la base de données devraient rester inchangées.
Après les travaux préparatoires, il a été possible de commencer la mise en œuvre pratique de l'idée. Pour accélérer un peu le processus et me libérer pour le reste des tâches, j'ai fait une version préliminaire de l'application mobile, esquissé l'interface utilisateur, partiellement UX, et attiré un programmeur Java familier pour le projet. Et il s'est concentré sur le développement du côté serveur, la conception et les tests.
À la fin du deuxième mois de travail sur MVP, la première version du prototype de serveur et client était prête.
Et à la fin du troisième mois après des tests synthétiques et des essais sur le terrain, la correction de bogues, des améliorations mineures du protocole et de la base de données, l'application était prête à être mise en production. Ce qui a été fait.
A partir de ce moment commence la partie la plus intéressante et la plus difficile du projet.
Pendant la transition des chauffeurs vers le nouveau logiciel, un service 24h / 24 a été organisé. Puisque tout le monde ne pouvait pas arriver pendant la journée pendant les heures de travail. De plus, administrativement, par une décision volontariste du fondateur de l'entreprise, il a été organisé de manière à ce que le login / mot de passe soit saisi par le gestionnaire de taxi et ne soit pas communiqué au chauffeur. Pour ma part, j'avais besoin du support technique des utilisateurs en cas de pannes et de situations imprévues.
La loi de Murphy nous dit: "Tout ce qui peut mal tourner va mal." Et ce n'est pas comme ça que tout s'est passé ... C'est une chose quand moi et plusieurs chauffeurs de taxi avons testé l'application sur des dizaines de commandes de test. Et une autre chose est lorsque plus de 500 conducteurs sur la ligne travaillent en temps réel sur de vraies commandes de vraies personnes.
L'architecture de l'application mobile était simple et contenait nettement moins de bogues que celle du serveur. Par conséquent, l'objectif principal du travail était sur le côté serveur. Le problème le plus critique dans l'application était le problème de déconnexion du serveur lorsque Internet a disparu sur le téléphone et que la session a été rétablie. Et Internet a disparu assez souvent. Premièrement, Internet sur le téléphone lui-même n'était pas suffisamment stable au cours de ces années. Deuxièmement, il y avait de nombreux angles morts où Internet ne fonctionnait tout simplement pas. Nous avons identifié ce problème presque immédiatement et éliminé et mis à jour toutes les applications précédemment installées dans les 24 heures.
Sur le serveur, il y avait principalement des erreurs dans l'algorithme de distribution des commandes et un traitement incorrect de certaines demandes des clients. Sur le fait de révéler des pépins, corrigé et mis à jour le serveur.
En fait, il n'y avait pas tant de problèmes techniques à ce stade. Toute la difficulté était que pendant près d'un mois, j'étais de service au bureau, ne rentrant que rarement à la maison. 4-5 fois, probablement. Et il a dormi par à-coups, car à cette époque seul travaillait sur le projet et personne ne pouvait rien réparer sauf moi.
Un mois, cela ne veut pas dire que tout a été constamment buggé pendant un mois, et j'ai, sans cesse, codé quelque chose là-bas. Nous venons de le décider. Après tout, l'entreprise a déjà fonctionné et fait des bénéfices. Et il vaut mieux jouer prudemment et se détendre plus tard que de perdre des clients et des profits maintenant. Nous l'avons tous parfaitement compris, donc toute l'équipe a accordé un maximum d'attention et de temps à l'introduction de nouveaux logiciels dans le système de taxi. Et compte tenu du trafic des commandes en cours, dans un mois nous éliminerons définitivement toutes les lacunes. Eh bien, les bogues cachés qui peuvent rester n'auront certainement pas de conséquences critiques sur le processus métier et, si nécessaire, ils peuvent être corrigés dans l'ordre de fonctionnement.
Ici, il convient de noter l'aide inestimable des directeurs et chefs d'équipe des services de taxi, qui, avec la compréhension maximale de la complexité de la situation du transfert de chauffeurs vers de nouveaux logiciels, ont travaillé 24 heures sur 24 avec les chauffeurs. En fait, après avoir terminé l'installation de nouveaux programmes sur les téléphones, nous n'avons pas perdu un seul pilote. Et ils n'ont pas augmenté de manière critique le pourcentage de clients non exportateurs, qui sont rapidement revenus à des niveaux normaux.
Ce fut la première étape de travail sur le projet. Et il faut noter que le résultat ne s'est pas fait attendre. En automatisant la distribution des commandes aux chauffeurs sans intervention humaine, le temps d'attente moyen d'un taxi par un client a été réduit d'un ordre de grandeur, ce qui a naturellement accru la fidélité des clients au service. Cela a conduit à une augmentation du nombre de commandes. Suite à l'augmentation du nombre de chauffeurs de taxi. En conséquence, le nombre de commandes traitées avec succès a augmenté. Et en conséquence, le bénéfice de l'entreprise a augmenté. Bien sûr, ici, j'ai un peu d'avance, car tout ce processus n'était pas instantané. Dire que la gestion était suffisante, c'est ne rien dire. J'étais illimité dans le financement ultérieur du projet.
A suivre ..