La naissance d'un projet ou comment écrire son propre CMS

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:

  1. 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

  2. Expérience dans la présentation d'un produit informatique et la réaction du public.
  3. Partenaires dans le travail sur les produits informatiques, motivés pour résoudre les problèmes uniquement pour l'idée.
  4. 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.
  5. 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:

MastermindCMS

PS: 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!

Source: https://habr.com/ru/post/fr463655/


All Articles