introduction
Je salue tout le monde, je m'appelle Kirill, je suis chef de produit ou ingénieur, organisateur ou contremaître et technicien, ou peut-être ni l'un ni l'autre, honnêtement, je ne sais pas qui je suis de profession, mais en relativement peu de temps j'ai réussi à créer une équipe développement, installateurs, designers qui, à leur tour, ont réussi à implémenter un énorme produit dans le domaine de l'IoT. Dans cet article, je voudrais partager avec vous les erreurs que nous avons commises dans le développement de produits et les erreurs dans les domaines juridiques et contractuels du développement de produits.
Donc, tout a commencé à partir du moment où j'ai quitté le poste d'ingénieur pour la conception d'équipements d'ascenseur, et avec la formation d'un technologue en génie mécanique, j'ai obtenu un emploi dans une grande entreprise de construction de la ville, en tant qu'administrateur de systèmes de collecte automatisée de relevés de compteurs et de contrôle de la fourniture de médias thermiques aux appartements, tels que Maison intelligente dans un immeuble à appartements. À ce moment-là, le développeur avait les exigences suivantes:
- Comptabilisation de tous les appareils de l'appartement
- Contrôle de l'alimentation du fluide thermique selon le principe du thermostat
- Analyse de la consommation
- Alarmes et avertissements
- Interface pour la société de gestion avec tous les objets
- Interface résidente
Les maisons ont été construites de grandes dimensions, de 20 à 25 étages, avec une moyenne de 280 à 300 appartements par section. À l'époque, le promoteur possédait une dizaine de maisons de ce type.
Après avoir commencé les travaux, la première chose que j'ai faite a été de comprendre comment fonctionnent les deux systèmes déjà mis en œuvre sur les chantiers du client. Il s'agissait de deux systèmes complètement différents: des protocoles de transmission entre le serveur et l'équipement de terrain (certains ont un bus CAN, le second ont Modbus RTU et TCP), à l'architecture de l'application elle-même (certains ont un logiciel auto-écrit déployé dans le cloud, le second a SCADA pour chaque objet avec des ordinateurs locaux).
Mais une chose que ces gars-là unissaient, ils étaient tous deux fabricants de leur propre équipement (blocs, contrôleurs, passerelles), qu'ils vendaient à des prix irréalistes, leur équipement manquait de certificats, ceux-là. documentation, et il n’y avait aucune possibilité d’interchangeabilité. Ainsi, lorsque l'appareil tombait en panne, et cela arrivait très souvent, nous devions leur acheter du matériel à un prix gonflé. Et quelques autres moments désagréables en travaillant avec ces camarades.
La mise à niveau de l'application en termes de fonctionnalité était impossible et non pas parce que le prix était très élevé, mais parce qu'ils ne pouvaient pas / voulaient / savaient calculer le coût de la révision, et ils n'en avaient pas besoin. Ils avaient une entreprise conçue pour entretenir et remplacer leurs appareils.
Nous payons tout le temps pour les logiciels, mais quel logiciel? Licence, achat de logiciels sous contrat, développement de logiciels? Il n'y a qu'une seule réponse à toutes les questions - «Notre logiciel, écrivez des lettres».
En fait, tous les facteurs ci-dessus ont conduit au fait que j'ai suggéré de monter une équipe de développeurs et de couper quelque chose de similaire nous-mêmes, mais en utilisant des équipements fabriqués en usine disponibles sur le marché du pays et en Europe.
Premières décisions et accords
Et donc je suis venu négocier avec ma direction - le directeur n ° 1. Il a proposé de constituer une équipe pour le développement d'un cycle complet de développement de produits - conception - installation - mise en service - exploitation. Pour commencer, nous avons convenu d'externaliser un développeur back-end - Lech et d'externaliser une équipe de développeurs et de concepteurs Web. Les coûts pour moi et Lyokha étaient si faibles que c'est dommage même d'y penser, mais j'ai pris le risque pour cinq raisons:
- , , , .
- ! .
- .
- , .
- , .
MVP
Pour fêter ça, nous achetons le premier contrôleur Siemens Modicon MT221 avec ModBus TCP à bord, pendant quatre jours nous avons écrit un programme dessus dans le langage Ladder Diagram, dans lequel, lorsque les contacts sont fermés, le registre passe de 0 à 1, nous l'avons testé à l'aide du programme Modbus Poll (grosso modo, client Modbus TCP ), et ici Leha dit:
«Au département, on nous a appris que de telles tâches sont résolues à l'aide de systèmes SCADA.»
À quoi j'ai répondu:
«Leha, tu devais combattre le mal, pas le rejoindre.
Nous avons décidé de le faire - Lech essaie de trouver le SCADA et de récupérer les données du contrôleur et de les stocker quelque part, et je vais essayer d'écrire un programme en Java, je suivais juste des cours élémentaires Java à ce moment-là (mon professeur des cours savait que j'essaierais code ...).
Et en conséquence, Lech a d'abord reçu les données du contrôleur via ModBus TCP, mais a plié son ordinateur avec un écran bleu à cause de 4-6 SCAD sur l'ordinateur. Et avec l'aide de Java et de 5 lignes de code, j'ai sorti les données, Lesha a aimé et il s'est plongé dans le monde de Java et je peux dire avec fierté qu'il est devenu un très bon spécialiste.
Si je me souviens maintenant, le 10 mars 2018, nous avons lancé le premier projet. Nous avons eu 6 mois pour écrire un programme, créer un design, publier la documentation de conception, installer et démarrer.
Je suis complètement allé dans la conception, la sélection de l'équipement et la topologie du réseau, l'installation et la conception (j'ai moi-même fait le premier projet dans AutoCAD, et la première fois j'ai tiré des fils dans l'installation), et Lech a pris en charge tout ce qui concerne le serveur, le dos et DB.
Beaucoup ne croyaient pas en notre succès et ne nous ont pas défini de tâches spécifiques, cela ressemblait à ceci:
- extraire les données des compteurs
- afficher quelque part
Au départ, nous avions une vision de la façon dont cela devrait fonctionner. Décrit nos exigences minimales pour ce que nous voulons atteindre:
- nous devons collecter les lectures des compteurs de chaleur, des compteurs d'eau froide et chaude, des compteurs électriques
- recevoir les données de tous les capteurs de température situés dans les appartements
- contrôler la température dans l'appartement à l'aide de ce capteur et les réglages que le locataire définira
- le locataire doit disposer de son propre compte personnel, dans lequel l'utilisateur locataire recevra des données sur ses appartements: graphiques de relevés, retour d'expérience de la société de gestion, contrôle de température
- les administrateurs doivent disposer d'une application Web avec toutes les données du système, les alarmes, les utilisateurs et les analyses
En 1 mois, nous avons essayé toutes les solutions prêtes à l'emploi que nous avons trouvées dans 20 pages de recherche Google. Chaque solution présentait un ou plusieurs des problèmes suivants:
- pas d'authentification fractionnée
- il n'y a aucun moyen de créer une API sécurisée pour les données collectées
- design des années 90
- mauvaise performance
- faible niveau de personnalisation de la logique backend
- prix inacceptable pour la solution de la tâche sélectionnée
Mon instinct nous a dit que si nous utilisions l'un de ces systèmes, nous ne serions pas meilleurs que nos concurrents. Ce qui nous a conduits sur un chemin différent, un beau chemin. Nous avons choisi d'écrire notre système et notre produit dans le meilleur langage du monde, Java ou EasyModbus. Et quand nous avons légèrement modifié le code et forcé la console à signaler une pression sur un bouton à nos joies, il n'y avait tout simplement aucune limite. Sur le chemin du retour, nous n'avons pas pu nous calmer et avons discuté des nombreuses opportunités que cela pouvait nous offrir! Nous allons créer notre propre SCADA avec une belle application Web et une maison intelligente. Ce soir-là, nous nous sommes dessinés des plans pour l'année à venir. Mais tout était encore devant ...
Nous avons commencé petit, et un mois plus tard, nous avions le logiciel du contrôleur de température écrit en FBD. Notre pile backend était Java 8 + MySQL. Bientôt, les classes étaient prêtes à travailler avec nos contrôleurs librement programmables. Un mois plus tard, nous avons testé avec succès un tas de notre backend et une passerelle qui a interrogé les compteurs de chaleur en utilisant le protocole M-BUS. J'ai appris à travailler avec MySQL. Nous avons commencé à écrire toutes les données reçues dans la base de données. Pour lire les relevés des compteurs d'électricité via l'interface RS-485 (l'automate ne nous convenait pas), nous avons réalisé un protocole de rétro-ingénierie à partir des données initiales du moniteur du port USB.
Notre expérience de programmation à ce moment-là était de quelques mois, à regarder maintenant - le sang vient de nos yeux. MAIS ce code de merde a fonctionné - c'est un miracle. Nous sommes des gars très motivés et nous nous efforçons d'acquérir des connaissances avec une force terrible. Nous avons eu beaucoup de chance et toutes les difficultés sont apparues progressivement: les premiers problèmes avec le multithreading et la base de données - et nous avons découvert c3p0 par nous-mêmes, une énorme quantité de dépendances - nous avons appris à travailler avec maven, des problèmes de performances lors de la lecture de la base de données - et nous ne savions pas que ces index, chaque bit d'information reçu a été appliqué dans le projet.
Afin de montrer aux autorités le sérieux de nos intentions, nous avons monté un stand qui a démontré le travail de notre système dans toute la maison. Nous avions 20 contrôleurs de température, 150 capteurs de température, 60 compteurs de chaleur (autant que nous pouvions en obtenir), 2 passerelles MBus, un routeur et 16 routeurs. Nous n'avons serti le câble FTP que pendant 2 jours. Du coup, le stand est assemblé, le logiciel est configuré, la maquette de l'interface web est lancée - le réalisateur vient voir le travail.
Premier stand
Tout siffle, clic de confiance, tout fonctionne instantanément, les journaux s'exécutent, les données des appareils sont collectées correctement. Nous avons intégré le designer Vova, l'administrateur système Yura et 3 installateurs dans notre équipe. Le processus de développement, de conception et d'installation s'est déroulé en parallèle. Pendant que les gars chassaient les murs et posaient les câbles, le concepteur leur a fait des projets et des schémas de câblage, pendant que les cartes étaient en cours d'installation, et nous avons testé de nouvelles fonctionnalités sur eux, pendant que le logiciel était en développement - le rack de serveur était en cours d'assemblage.
En conséquence, il nous a fallu six mois pour que 144 appartements soient intégrés dans le système et les premiers utilisateurs à qui nous avons personnellement remis les codes QR d'enregistrement. Mais nous ne voulions pas nous arrêter là, notre tâche finale était de créer une plateforme IoT affûtée pour BMS, et plus tard elle s'étendra à l'intégration d'objets techniques (chaudières, points de chauffage, arrières et industries) et des maisons intelligentes.
Nous avons passé l'année suivante à refactoriser notre MVP et à ajouter diverses fonctionnalités. Cette fois, nous avions un plan, une architecture, des ambitions encore plus grandes et du sang frais - nous avons embauché 2 étudiants. Le premier étudiant, Yarik, a travaillé sur le backend de notre produit, et le second, Sashka, a travaillé sur Arduino et d'autres ordinateurs monocarte pour une maison intelligente.
Nous avons activement exploité le marché des UD et BMS: nous avons discuté avec des clients potentiels, nous sommes allés à des expositions, nous nous sommes comparés à des concurrents. À un moment donné, nous avons réalisé que ce que nous avons créé est un phénomène pour le marché ukrainien, et aucun des concurrents potentiels ne peut faire quelque chose de similaire que nous pouvons offrir. Nous avons un système BMS évolutif et personnalisable, avec un puissant système de reconnaissance et d'administration des alarmes, avec API, avec des pilotes pour les appareils de mesure les plus populaires en Ukraine, nous pouvons nous adapter à n'importe quel client. Nous voulions sortir de notre entreprise et partir seuls.
Premier succès et immédiatement une casserole dans le visage
Ainsi, dans les premiers couples de succès, nous implémentons déjà 3 objets (pour le moment il y a 2 chaufferies, 4 points de chauffage, 4452 unités de divers compteurs, les données de 1164 appartements), tout va bien, les applications ne traînent pas, l'équipement se comporte très bien, installation en hauteur, tout est cool, moi et l'équipe attendons des prix et des bonus ... mais à la place juste "les gars Egegey, grands gars, MERCI!".
Puis le suivant a commencé: il n'y a pas d'argent, ça ne finance pas, mais le produit doit être poursuivi, il faut développer le branding, les instructions, etc ... Pour être honnête, nous avons été stupéfaits par le succès (et pour nous c'était un succès wow, les gars un ingénieur en mécanique et un mitrailleur de formation ont mis en place un système plutôt gros) , nous avons continué, nous sommes allés en grève, nous avons pleuré, mais nous avons continué à couper…. Dans le même temps, ils ont constamment optimisé le système pour le matériel, recherché des remises et optimisé les topologies pour réduire les coûts.
Du coup, le directeur n ° 1 quitte l'entreprise du développeur, je pars avec l'équipe aussi, notre produit reste sur les anciens sites, il n'y a pas de nouveaux sites, mais où aller? Que faire? Nous avons été tellement pris dans la routine de développement que j'ai raté le moment de la bonne marge (qui possède quoi, à qui le logiciel, quels droits d'utiliser le logiciel), la promotion et d'autres moments si nécessaires à l'existence réussie du produit. Je laisse tomber tous les moments associés au développement et me jette dans des études de marché, essayant de trouver des clients, et je comprends que notre produit est très spécifique pour les développeurs, tout le monde n'en a pas besoin - tous les développeurs ont un slogan, construit pour moins d'argent - obtenir plus d'argent.
Puis mon directeur apparaît, et propose de créer une entreprise dont les fondateurs seront lui et son associé, mais en même temps, soi-disant mon équipe et moi sommes dans sa moitié de l'entreprise (50%), selon les accords NOUS (lui, moi et l'équipe) déciderons de tout ce qui concerne la poursuite du développement du produit, d'accepter comment et où se déplacer (enfin, entre nous les filles, cela n'apparaît nulle part dans les journaux). J'accepte en désespoir de cause, je dis à l'équipe, les gars, on a trouvé un investisseur, bla bla, mais on ne fait pas partie des fondateurs, et pour la première fois on obtient des salaires minuscules (enfin, comme une startup, comme on me l'a dit), on réduit les coûts au maximum (enfin, une startup qui dure deux ans, rien de super-si démarrage). Les gars de l’équipe ont dit: «Peut-être que ce n’est pas nécessaire, tout ça sent bizarre.», Mais je brûle (j’ai des dettes sur la caisse salariale, un deuxième enfant et d’autres dépenses), je comprends que je dois continuer à tout prix.
Je rencontre le directeur numéro 2, et je comprends que quelque chose ne va pas, comment cela pourrait-il être différent. Quelques réunions et je me suis rendu compte que le directeur n ° 2 dans les années 90 était un programmeur dans l'armée et voulait vraiment être réalisé dans ce domaine, il commence à nous dessiner des diagrammes avec la place du répartiteur, avec le serveur 1C, jette des mots gentils, insère le mot API partout, commande Marque «si nécessaire en ce moment» et marque des hêtres.
Tout le mois, nous avons été financés par le directeur n ° 1, merci beaucoup à lui, et avec le réalisateur n ° 2, il y avait un marché, supposément qu'il avait un client chaud prêt à commencer à travailler.
On a tenu comme ça pendant un mois, ou plutôt, j'ai tenu bon. Seulement j'ai communiqué avec les directeurs n ° 1, 2, parce que mon objectif était de protéger mon équipe de leurs réunions constantes, des tentatives constantes de lancer certaines tâches et autres bureaucraties. J'ai toujours entendu le réalisateur n ° 2: «Qu'est-ce que tu fais? Que faites-vous? », Nous avons répondu:« nous avons vu le modèle de domaine, tester LoRa Wan, enquêter sur le marché en termes de leaders d'opinion et de canal de vente de produits, concevoir des tableaux de bord pour les accidents et les alertes », aucune question constructive n'a été reçue en réponse. Méfiance et inconfort éternels, comment pouvez-vous continuer à créer un produit cool.
En fait, aucun client ne s'est présenté, et lors de l'une des réunions, le directeur n ° 2 m'a dit: "Kirill, je me fiche de savoir combien vous déplacez ce projet, vous ferez ce que deux directeurs vous diront." Je me suis levé et j'ai répondu: "Messieurs, bonne chance »leur serra la main et partit.
Sentiments et équilibre
Beaucoup de gens connaissent ce sentiment lorsque vous faites un travail, donnez-vous au maximum, mettez-y une partie de vous-même et n'obtenez pas le bon rendement, même si c'était le cas, mais simplement caché de moi et des gars. Vous continuez à faire ce travail, même si vous comprenez que vous ne recevez pas d'argent du tout pour cela, mais vous ne pouvez pas arrêter parce que cesser de fumer est la même chose que prendre et partir pour un autre pays à des amis et à la famille, vous prendre et vous arracher à une partie de quelque chose de grand , important. On n’a pas arrêté, on a commencé à brûler, on a commencé à comprendre que ça ne pouvait plus continuer comme ça. C'est très douloureux.
Je suis reconnaissant au directeur n ° 1 pour toutes ses lacunes et ses avantages, il a cru en nous et nous a soutenus, je m'en souviendrai et le soutiendrai toujours aussi. Au fil des ans, mon équipe et moi sommes devenus des personnes très proches les unes des autres et je ne peux pas l'exprimer avec des mots, je comprends juste que si nous devons rompre, ils me manqueront de tout mon cœur et ces moments-là.
Conclusions et conseils
Les conclusions que j'ai faites:
- Ne connaissant pas le gué, n'allez pas dans l'eau, surtout lorsque la question est monétaire. Vérifiez tout, comptez, calculez le cash-flow, ne vous méprenez pas dans la quantité de travail et, surtout, dans la technologie et l'opportunité de son application. Peu importe à quel point il est étrange de parler à l'équipe et de ne pas oublier la stratégie, qu'elle soit brute, pas volumineuse, mais c'est nécessaire.
- , . , . , , , .
- . .
- , . , .
- , , , , , , .
- , , , . 90% .
- , №1 2, , , . , , , , 5 , . , , ( , ). — .
- .
Nous sommes en train de scier une nouvelle plate-forme, d'étendre la fonctionnalité (ajout de «homecracy» et de services pour les résidents, d'outils d'analyse et d'une interface de gestion plus sophistiquée et d'une chaufferie), en ajoutant de nouveaux appareils et appareils de mesure.
En même temps, nous recherchons un client et des investisseurs. Difficile, beaucoup de travail, mais pas de ressources. Nous lancerons le site un de ces jours.
Paix et succès à tous!
Suite de la série d'articles:
"Smart home" dans chaque appartement d'un immeuble, ou notre MVP