Die Geburt eines Projekts oder wie man ein eigenes CMS schreibt

Ich begrüße dich, lieber Chabravchane. Ich habe hier sehr lange einen Artikel über mich und mein Projekt geschrieben. In diesem Artikel möchte ich Ihnen meine Geschichte über den Ursprung der Projektidee erzählen. Schreiben Sie auch Ihre Geschichte über die Entwicklung von Ansichten zur Softwareentwicklung im Allgemeinen. Vielleicht kann sogar ich einen Teil des Wissens aufgrund meiner langjährigen Erfahrung als Programmierer übertragen. Lass uns gehen!

Über mich


Ich werde dir ein wenig über mich erzählen. Mein Name ist Alexander, ich arbeite seit mehr als 10 Jahren als Programmierer. Ich musste Probleme in verschiedenen Geschäftsbereichen lösen, wie z. B. Bankwesen, E-Commerce, Datenstrukturierungsprojekte, Parser und andere Aufgaben des Unternehmenssektors.

Der Zweck dieses Artikels ist es, eine der Facetten der Welt der Softwareentwicklung aufzuzeigen und möglicherweise anderen Programmierern neue Möglichkeiten zu eröffnen. Was meine ich mit dieser Aussage?

Entwicklungsstufen für Programmierer


Sicherlich haben Sie bereits früher Artikel über die Entwicklungsstadien von Programmierern gelesen. Meiner Meinung nach durchläuft jeder Programmierer in seiner beruflichen Laufbahn Entwicklungsphasen.

Ich habe diesen Entwicklungspfad für einen Programmierer in 5 Schritten definiert:

  • Die erste Phase ist, wenn Sie Student sind oder noch nicht mit dem Programmieren vertraut sind. Sie möchten nur das Ergebnis Ihrer Programmierung sehen, sei es ein Fenster mit der Schaltfläche „Hallo“ oder ein Datenparser, der analysiert und strukturiert.
  • In der zweiten Phase schreiben Sie bereits komplexe Integrationen und verwenden erweiterte Frameworks. Und Sie genießen die Tatsache, dass Sie ein anderes Werkzeug beherrschen.
  • In der dritten Phase beginnen Sie herauszufinden, wie Sie die Anwendung am besten strukturell gestalten können. Und Sie sind einfach verrückt nach der Tatsache, dass Sie die Logik korrekt in Komponenten unterteilt haben.
  • Die vierte Stufe ist die Stufe des Gottes der Softwareentwicklung. Sie verstehen alle vorherigen Schritte und möchten ein System zum Zusammenstellen und Bereitstellen aller Anwendungsmodule in einem einzigen praktischen automatisierten Installationsprogramm erstellen.
  • Die fünfte Stufe ist die traurigste Stufe. Sie verstehen, dass Ihre Lieblingssache diese frühere Euphorie nicht mehr mit sich bringt und tun einfach alles an der Maschine. Dann kommt der Moment, in dem es nur so losgeht, dass Sie Ihr Produkt herstellen und auf den Markt bringen, um so das Problem einer Person zu lösen oder einfach einen Workflow zu verbessern.

Ideen für Geburt und Tod


Wie Sie wahrscheinlich bereits verstanden haben, basieren diese Phasen auf meiner persönlichen Erfahrung. Daher hat vielleicht jemand eine völlig andere Entwicklungserfahrung. Und ich erkläre nicht, dass es anders ist. Weiter werden wir über die fünfte Entwicklungsstufe sprechen und was als nächstes zu tun ist.

Einmal fiel mir eine sehr interessante Idee ein. Vorher habe ich natürlich eine Woche lang darüber nachgedacht, welche Art von Service ich "einschlagen" würde. Und im Ernst und absichtlich habe ich beschlossen, etwas Großartiges zu tun.

Die Idee war, eine Plattform zu schaffen, in der Tat eine Website, auf der jeder anderen von seinen Fähigkeiten in etwas erzählen kann, in dem er sich im Verhältnis zu anderen hervorgetan hat. Zum Beispiel möchte ein begeisterter Fischer seine Erfahrungen darüber teilen, wie man Barsch oder Karpfen richtig fängt. Er erstellt auf dieser Plattform eine Veranstaltung mit dem Datum des Seminars und platziert ein Werbevideo oder nur eine Beschreibung seines Seminars. Andere Benutzer stimmen interessant oder nicht interessant ab. Wenn eine bestimmte Anzahl von Stimmen gesammelt wird, wird die Veranstaltung von der Plattform genehmigt oder aufgrund fehlender Stimmen zur Unterstützung abgelehnt. Darüber hinaus hat die Person, die diese Veranstaltung veröffentlicht hat, die Möglichkeit, den Betrag für die Teilnahme an diesem Seminar festzulegen. Der Eigentümer dieser Plattform musste diese Veranstaltung vollständig organisieren. Dementsprechend eine kleine Provision für den Ticketverkauf. Hier ist die fertige Monetarisierung.

Ich kann schon in deinen Gedanken hören: "Ja, das ist es schon, warum machst du das Fahrrad noch einmal?" Aber es macht Sinn, ich werde auf diese Aussage zurückkommen. Natürlich hat sich die Idee am Ende dramatisch in eine andere verwandelt, aber ohne die Hauptaufgabe hätte ich dieses Problem nicht gesehen.

Nur ein CMS


Dann stellte sich die Frage, welche Technologie dies alles tun sollte. Ohne nachzudenken, begann ich mich mit vorhandenen CMS und anderen Plattformen zu befassen, um diese Art von Projekt schnell zusammenstellen zu können. Die Lösung war so, dass ich eine Art Engine für die Arbeit mit Daten nahm und einfach eine Web-Schnauze machte, um diese Daten über REST abzurufen. Ich würde mich nicht mit der vollen Entwicklung befassen. Am Ende musste ich noch.

Mein Blick auf die Softwareentwicklung


Für jede Aufgabe ein eigenes Werkzeug. Ich versuche immer, diese Regel in der Softwareentwicklung einzuhalten. Ein weiterer wichtiger Faktor ist die Aufteilung der Logik in technologische Verantwortungsbereiche. Für mich sind die klaren Grenzen der Integration zwischen verschiedenen Technologien wichtig. Mit anderen Worten, ich mag es, wenn zum Beispiel das vordere Ende vom hinteren Ende getrennt ist. Das heißt, vom Wort "vollständig". Oder es gibt strukturell dedizierte Module, Integrationen, und all dies funktioniert unabhängig voneinander. Jetzt heißt es Mikrodienste.

Ich denke, es ist einfacher, die Arbeit an dem Projekt zu organisieren und die Entwickler entsprechend ihrer Kompetenz in Teams aufzuteilen.

Das ist alles! Ich beschließe, ein Raumschiff zu bauen


Aus Erfahrung dachte ich, dass wir ein solches Tool benötigen, mit dem wir Seitenentwürfe aus vorgefertigten Blöcken erstellen und direkt über den Browser mit den Daten und Diensten dieser Plattform verbinden können. Das Hauptkriterium war keine eng spezialisierte Programmierung für jede Aufgabe. Alles sollte abstrakt und als Konstruktor sein.

Nachdem ich 2 Wochen lang nach etwas Ähnlichem gesucht und zwei kostenlose CMS erlebt hatte - Drupal und Wordpress (ich habe versucht, sie als Datenverwaltungs- und REST-API-Integrations-Engine zu verwenden). Aber keiner von ihnen hat meine Anforderungen erfüllt. Deshalb habe ich beschlossen, mein CMS mit "Blackjack and Whores" zu schreiben.

Technologie


Die nächste Frage, die gelöst werden sollte, war die Wahl eines Technologie-Stacks für die Implementierung. Ohne viel nachzudenken, habe ich es sicherlich vorgezogen, alles in Java zu machen . Es musste nur entschieden werden, welche Rahmenbedingungen gewählt werden sollten. Das Kriterium bei der Auswahl von Frameworks war Folgendes: Nicht zu viel zu nehmen und nur die erforderlichen Teile des Tools zu verwenden (später bereute ich die Auswahl ein wenig). Um die Admin-Panel-Oberfläche zu erstellen, habe ich ein wenig bekanntes AJAX-Framework aus Taiwan ausgewählt - ZK Framework . Ich mag den MVVM-Ansatz und seine AJAX-Komponente (jetzt halte ich dies bereits für ein Minus). Da Sie nicht Tonnen von JS schreiben müssen, um die Relevanz des Status der Benutzeroberfläche auf der Seite zu überwachen (im Moment habe ich eine bessere Alternative gefunden).

Welche Art von Technologie-Stack habe ich als Ergebnis erhalten:

  • ZK Framework (MVVM)
  • Java (EJB)
  • Jax-rs
  • Mongodb
  • Wildfliege

Na los!


Und ich habe mich kopfüber mit diesem Projekt befasst, während ich an Projekten für ein Gehalt gearbeitet habe. Die Zeit für mein Projekt war hauptsächlich abends und am Wochenende, manchmal irgendwo, wo ich es geschafft habe, mir Zeit für meinen Hauptjob zu schnappen, habe ich auch dort gearbeitet. Während der Arbeit an dem Projekt hat sich das Umsetzungsprinzip mehrmals geändert. Das Datenmodell wurde ebenfalls mehrfach modifiziert. Parallel dazu erzählte ich Freunden der Programmierer, woran ich arbeitete, bot an, mich dem Projekt anzuschließen und zusammenzuarbeiten. Aber leider habe ich dieses Projekt alleine weiter gemacht. Infolgedessen habe ich 3 Jahre damit verbracht, eine funktionierende Version der beabsichtigten Funktionalität zu erhalten.

Allein auf dem Feld ist kein Krieger oder ...


Dann wollte ich noch ein Team bilden. Ich habe angefangen, mein Produkt als Startup in einem der Business Accelerators zu registrieren. Er hat seine Bewerbung jedoch nicht abgeschlossen, da er in der Phase "Ihr Team" stehen geblieben ist.

Ich habe meinen Freunden oft und oft erzählt, dass sie im Bereich IT (Informationstechnologie) oder im Bereich IT gearbeitet haben.

Am Ende gelang es mir, den gleichen verrückten potenziellen Kunden für mein Produkt zu finden. Er hat wie ich beschlossen, sein Produkt herzustellen, aber er ist kein Programmierer. Und er brauchte eine Plattform für sein Produkt. Ich entschied, hier ist es! Ich musste nicht einmal anbieten, mein CMS selbst zu verwenden, sondern wurde gebeten, eine Website darauf zu erstellen. Natürlich kostenlos. Es war meine Chance, mein CMS in der realen Entwicklung auszuprobieren. Und weißt du was? Ich war angenehm überrascht, aber mein CMS hat diese Aufgabe zu 100% gemeistert. Ja, natürlich habe ich während des Montageprozesses an vielen Dingen gearbeitet, sie verbessert und einfach Fehler behoben. Am Ende konnte ich jedoch alle Designs und Vorlagen flexibel auf Seiten ziehen, Daten und Dienste aus Quellen von Drittanbietern verbinden und integrieren.

Und der Schweizer und der Schnitter und der Typ


Von diesem Moment an wurde mir klar, dass Sie Ihr Wissen im Bereich Marketing erweitern und Bücher über den Aufbau Ihres Geschäfts lesen müssen. Dabei nahm ich mit diesem Produkt an einem Hackathon von MongoDB teil und erhielt teilweise die Reaktion des Publikums auf dieses Produkt. In der sozialen. Netzwerke antworteten und teilten sogar meine Nachricht darüber, was ich mit CMS gemacht habe. Nach den Ergebnissen des Hackathons habe ich sicherlich keine einzige Auszeichnung erhalten, aber ich war erfreut, dass ich teilgenommen habe.

Während ich auf die Ergebnisse des Hackathons wartete, machte ich immer noch zwei Versuche, mein Produkt bei Investitionsförderungsveranstaltungen „anzuschließen“. Danach sah ich bereits eine lebhafte Reaktion des Publikums. Was mir großartige Erfahrungen gebracht hat.

Ergebnis


Was ich im Moment habe:

  1. Ein bestimmtes MVP (Minimal Viable Product), das die Funktionalität abdeckt:
    • flexible Standardisierung
    • Dateispeicherung
    • Änderungen des Datenmodells im laufenden Betrieb
    • Integration mit REST-Services
    • Rollen- und Benutzerverwaltung in MongoDB

  2. Erfahrung in der Präsentation eines IT-Produkts und der Reaktion des Publikums.
  3. Partner bei der Arbeit an IT-Produkten, die motiviert sind, Probleme nur für die Idee zu lösen.
  4. Und eine große Roadmap für die weitere Produktentwicklung. Im Moment habe ich auf dem Technologie-Stack eine enorme Verarbeitung und fast eine vollständige Änderung dieses Technologie-Stacks konzipiert. Plus Funktionserweiterungen.
  5. Ich lasse die Ideologie in der Umsetzung gleich.

Fazit


Und jetzt bin ich wieder da, wo ich angefangen habe. Es gibt immer einen Grund, Ihr Produkt herzustellen, auch wenn alle um Sie herum sagen: "Ja, das ist es bereits, sie haben alles vor Ihnen getan . " Ich nenne solche Leute das englische Wort Naysayer , als ich dieses Wort von Arnold Schwarzenegger in einer seiner Motivationsreden hörte.

Mehrere Möglichkeiten, ein Produkt zu entwickeln:

  • Gib es Open Source
  • Arbeiten Sie mit verwandten Produkten zusammen
  • Sammeln Sie eine Gemeinschaft von Menschen, die so verrückt sind wie ich, die ihre Produkte kreieren und versuchen, sie zu vermarkten.

Hier ist das offizielle Promo-Video:


Hier ist die offizielle CMS-Demo-Site:

MastermindCMS

PS: Ich möchte mich für die häufige Verwendung von "Amerikanismen" im Text entschuldigen. Entwickler-Slang ist sehr mit ihnen gefüllt. Wenn ich alles in russische Synonyme umschrieben hätte, hätte ich den Erzählstil verloren, der für die Kollegen in der Werkstatt verständlich und atmosphärisch ist.

Ich hoffe, Ihnen hat meine Geschichte gefallen, und jemand wird sie nützlich finden. Ich wünsche Ihnen einen schönen produktiven Tag!

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


All Articles