Je vous souhaite la bienvenue, chère Khabravchane. Pendant très longtemps, je suis allé écrire ici un article sur moi et mon projet. Dans cet article, je voudrais vous raconter mon histoire sur l'origine de l'idée de projet. Et écrivez également votre histoire sur le développement des points de vue sur le développement de logiciels en général. Peut-être même que je serai en mesure de transférer certaines des connaissances basées sur mes nombreuses années d'expérience en tant que programmeur. C'est parti!
Ă€ propos de moi
Je vais vous parler un peu de moi. Je m'appelle Alexander, je travaille comme programmeur depuis plus de 10 ans. J'ai dû résoudre des problèmes dans divers domaines d'activité, tels que la banque, le commerce électronique, les projets de structuration de données, les analyseurs et d'autres tâches du secteur des entreprises.
Le but de cet article est de montrer l'une des facettes du monde du développement de logiciels et éventuellement d'ouvrir une nouvelle porte d'opportunité pour d'autres programmeurs. Qu'est-ce que je veux dire par cette déclaration?
Étapes de développement du programmeur
Vous avez sûrement déjà lu des articles sur les étapes de développement des programmeurs. À mon avis, chaque programmeur passe par des étapes de développement dans sa carrière professionnelle.
J'ai défini ce chemin de développement pour un programmeur en 5 étapes:
- La première étape est lorsque vous êtes étudiant ou que vous êtes encore nouveau en programmation. Vous aimez juste voir le résultat de ce que vous avez programmé, que ce soit une fenêtre avec un bouton "Bonjour" ou un analyseur de données qui analyse et structure.
- La deuxième étape consiste à écrire des intégrations complexes et à utiliser des frameworks avancés. Et vous appréciez le fait que vous maîtrisez un autre outil.
- La troisième étape est lorsque vous commencez à trouver la meilleure façon de concevoir structurellement l'application. Et vous êtes juste fou du fait que vous ayez correctement divisé la logique en composants.
- La quatrième étape est l'étape du dieu du développement logiciel. Vous comprenez toutes les étapes précédentes et vous aimez construire un système pour assembler et livrer tous les modules d'application dans un seul programme d'installation automatisé pratique.
- La cinquième étape est l'étape la plus triste. Vous comprenez que votre truc préféré n'apporte plus cette ancienne euphorie et faites tout simplement sur la machine. Puis vient le moment où il vous envahit juste pour fabriquer votre produit et le mettre sur le marché, résolvant ainsi le problème de quelqu'un ou améliorant simplement une sorte de flux de travail.
Idées de naissance et de mort
Comme vous l'avez probablement déjà compris, ces étapes sont basées sur mon expérience personnelle. Par conséquent, peut-être que quelqu'un aura une expérience de développement complètement différente. Et je ne déclare pas qu'il en est autrement. Plus loin, nous parlerons du tout 5ème stade de développement et de la suite des choses.
Une fois, une idée très intéressante m'est venue à l'esprit. Avant cela, bien sûr, je suis allé pendant une semaine et j'ai réfléchi au type de service que j'allais "couper". Et sérieusement et délibérément, j'ai décidé de faire quelque chose de grandiose.
L'idée était de créer une plate-forme, en fait un site Web, qui permettrait à chacun de parler aux autres de leurs compétences dans un domaine où il avait excellé par rapport aux autres. Par exemple, un pêcheur passionné souhaite partager son expérience sur la façon d'attraper correctement la perche ou la carpe. Il crée un événement sur cette plateforme avec la date du séminaire et place une vidéo promotionnelle ou juste une description de son séminaire. Les autres utilisateurs votent de façon intéressante ou pas intéressante, lors de la collecte d'un certain nombre de votes, l'événement est approuvé par la plateforme ou rejeté par manque de votes en faveur. De plus, la personne qui a posté cet événement a la possibilité de fixer le montant de sa participation à ce séminaire. Le propriétaire de cette plateforme était tenu d'organiser pleinement cet événement. En conséquence, en prenant une petite commission sur la vente des billets. Voici la monétisation terminée.
Je peux déjà entendre dans vos pensées: "Oui, c'est déjà le cas, pourquoi recommencer le vélo." Mais cela a du sens, je reviendrai sur cette déclaration. Bien sûr, à la fin, l'idée s'est transformée de façon spectaculaire en une autre, mais sans la tâche principale, je n'aurais pas vu ce problème.
Juste un CMS
La question s'est alors posée de savoir quelle technologie faire tout cela. Sans y réfléchir à deux fois, j'ai commencé à regarder les CMS existants et d'autres plateformes pour l'assemblage rapide de ce type de projet. La solution était telle que je prendrais une sorte de moteur pour travailler avec des données et ferais juste un museau web récupérant ces données via REST. Je n'allais pas creuser dans le développement complet. En fin de compte, je devais encore.
Ma vision du développement logiciel
Pour chaque tâche, son propre outil. J'essaie toujours d'adhérer à cette règle dans le développement de logiciels. Un autre facteur important est la division de la logique en domaines technologiques de responsabilité. Pour moi, les limites claires de l'intégration entre les différentes technologies sont importantes. En d'autres termes, j'aime bien quand le front-end est séparé du back-end, par exemple. Autrement dit, du mot «complètement». Ou il existe des modules structurellement dédiés, des intégrations, et tout cela fonctionne indépendamment. Maintenant, cela s'appelle des micro-services.
Je pense qu'il est plus facile d'organiser le travail sur le projet, en divisant les développeurs en équipes selon leurs compétences.
C’est tout! Je décide de faire un vaisseau spatial
Sur la base de l'expérience, je pensais que nous avions besoin d'un tel outil qui nous aiderait à former des conceptions de page à partir de blocs prêts à l'emploi et à le connecter aux données et services de cette plate-forme directement à partir du navigateur. Le critère principal n'était pas une programmation étroitement spécialisée pour chaque tâche. Tout doit être abstrait et en tant que constructeur.
Après avoir passé 2 semaines à chercher quelque chose de similaire et expérimenté deux CMS gratuits -
Drupal et
Wordpress (j'ai essayé de les utiliser comme moteur de gestion de données et d'intégration d'API REST). Mais aucun d'eux n'a satisfait à mes exigences. Par conséquent, j'ai décidé d'écrire mon CMS avec "blackjack and whores".
La technologie
La question suivante qui devait être résolue était le choix d'une pile technologique pour la mise en œuvre. Sans trop y penser, j'ai certainement préféré tout faire en
Java . Il suffit de décider des cadres à adopter. Le critère dans le choix des cadres était le suivant: ne pas en prendre trop et utiliser uniquement les parties nécessaires de l'outil (plus tard, j'ai un peu regretté le choix). Pour construire l'interface du panneau d'administration, j'ai sélectionné un framework AJAX peu connu de Taiwan -
ZK Framework . J'aime l'approche MVVM et son composant AJAX (maintenant je considère déjà cela comme un inconvénient). Puisque vous n'avez pas besoin d'écrire des tonnes de JS pour surveiller la pertinence de l'état de l'interface utilisateur sur la page (pour le moment j'ai trouvé une meilleure alternative).
Quel type de pile technologique ai-je obtenu en conséquence:
- Cadre ZK (MVVM)
- Java (EJB)
- Jax-rs
- Mongodb
- Wildfly
Eh bien, allez-y!
Et je me suis lancé tête baissée dans ce projet, tout en travaillant sur des projets pour un salaire. Le temps pour mon projet était principalement le soir et le week-end, parfois quelque part j'ai réussi à prendre du temps à mon travail principal, j'y travaillais aussi. Au cours du travail sur le projet, le principe de mise en œuvre a changé plusieurs fois. Le modèle de données a également subi de nombreuses modifications. En parallèle, j'ai dit à des amis des programmeurs sur quoi je travaillais, proposé de rejoindre le projet et de commencer à travailler ensemble. Mais malheureusement, j'ai continué à faire ce projet seul. En conséquence, j'ai passé 3 ans pour obtenir une version fonctionnelle de la fonctionnalité prévue.
Seul sur le terrain n'est pas un guerrier, ou ...
Ensuite, j'ai toujours voulu créer une équipe. J'ai commencé à enregistrer mon produit en tant que startup dans l'un des accélérateurs d'entreprise. Mais il n’a pas terminé sa candidature, s’étant arrêté au stade «Votre équipe».
J'en ai souvent et souvent parlé à mes amis qui travaillaient dans le domaine de l'informatique (technologies de l'information) ou dans le domaine de l'informatique.
Au final, j'ai réussi à trouver
le mĂŞme client potentiel
fou pour mon produit. Il a, comme moi, décidé de fabriquer son produit, mais il n'est pas programmeur. Et il avait besoin d'une plate-forme pour son produit. J'ai décidé, le voici! Je n'avais même pas à proposer d'utiliser mon CMS moi-même, on m'a demandé de créer un site dessus. Libre bien sûr. Ce fut ma chance d'essayer mon CMS en développement réel. Et vous savez quoi, j'ai été agréablement surpris, mais mon CMS a fait face à cette tâche à 100%. Oui, bien sûr, j'ai travaillé sur beaucoup de choses pendant le processus d'assemblage, je les ai améliorées et j'ai simplement «corrigé» des bugs. Mais au final, j'ai pu tirer de manière flexible tous les designs et modèles sur les pages, connecter et intégrer des données et des services à partir de sources tierces.
Et les Suisses, et le moissonneur, et le mec
À partir de ce moment, j'ai réalisé que vous devez développer vos connaissances dans le domaine du marketing et lire des livres sur la création de votre entreprise. Dans le processus, j'ai participé avec ce produit à un hackathon de
MongoDB , reçu partiellement la réaction du public à ce produit. Dans le social. les réseaux ont répondu et ont même partagé mon message sur ce que j'ai fait CMS. D'après les résultats du hackathon, je n'ai certes pas reçu un seul prix, mais j'étais content d'avoir participé.
Pendant que j'attendais les résultats du hackathon, j'ai quand même fait deux tentatives pour «brancher» mon produit lors d'événements de promotion des investissements. Après quoi j'ai déjà vu une réponse animée du public. Ce qui m'a apporté une grande expérience.
Résultat
Ce que j'ai en ce moment:
- Un certain MVP (Minimal Viable Product) couvrant la fonctionnalité:
- normalisation flexible
- stockage de fichiers
- modifications du modèle de données à la volée
- intégration avec les services REST
- gestion des rĂ´les et des utilisateurs dans MongoDB
- Expérience dans la présentation d'un produit informatique et la réaction du public.
- Partenaires dans le travail sur les produits informatiques, motivés pour résoudre les problèmes uniquement pour l'idée.
- Et une grande feuille de route pour le développement de nouveaux produits. En ce moment, sur la pile technologique, j'ai conçu un énorme traitement, et presque un changement complet de cette pile technologique. Plus d'extensions de fonctionnalités.
- Je laisse la même idéologie dans la mise en œuvre.
Conclusion
Et maintenant je reviens où j'ai commencé. Il y a toujours une raison de fabriquer votre produit, même si tout le monde autour de vous dit
"oui c'est déjà le cas, ils l'ont fait avant vous" . J'appelle ces personnes le mot anglais
Naysayer , une fois que j'ai entendu ce mot d'Arnold Schwarzenegger dans l'un de ses discours de motivation.
Plusieurs façons possibles de développer un produit:
- Donnez-le Ă l'open source
- Faites équipe avec des produits connexes
- Rassemblez une communauté de gens aussi fous que moi qui créent leurs produits et essayons de les commercialiser.
Voici la vidéo promotionnelle officielle:Voici le site officiel de démonstration de CMS:MastermindCMSPS: Je voudrais m'excuser pour l'utilisation fréquente des "américanismes" dans le texte. L'argot du développeur en est très rempli. Si j'avais tout paraphrasé dans des synonymes russes, j'aurais perdu le style narratif compréhensible et atmosphérique pour les collègues de l'atelier.
J'espère que vous avez aimé mon histoire et que quelqu'un la trouvera utile. Passez une bonne journée productive!