Wie wählen Startups normalerweise einen Technologie-Stack für ihr Produkt aus?

(Update: Ich habe diese Antwort zu einem Blogbeitrag bei DeveloperZen erweitert.)

Nachdem ich als CTO und Technologieberater für viele Startups gearbeitet habe, kann ich Ihnen sagen, dass die Auswahl der ersten Technologie eine wichtige Entscheidung ist, bei der Sie verschiedene Faktoren berücksichtigen müssen:

# 1 – Die Technologie-Gründer wissen es

Bei der Arbeit an einem neuen Start ist es wichtig, schnell voranzukommen. Wenn das Gründungsteam bereits Erfahrung mit einem bestimmten Stapel hat, ist es von Vorteil, ihn auszuwählen und innerhalb seiner Komfortzone zu arbeiten, anstatt eine neue Technologie erneut zu erlernen

# 2 – Der Problemraum

Manchmal bestimmt der Platz, auf dem sich Ihr Produkt befindet, den Stapel.
Einige Technologie-Stacks sind in bestimmten Bereichen (aufgrund technischer Einschränkungen oder nur aufgrund starker Community-Anforderungen) besonders stark und daher die ideale Umgebung für diese Bereiche.
Zum Beispiel werden Sie in Python keine Grafik-Engine oder ein AAA-Spiel schreiben, und es ist wahrscheinlich besser, Datenberechnungsmaterial in Python zu schreiben, in dem Sie über NiumPy, SciPy, Pandas usw. verfügen, und dann dasselbe zu tun in Ruby…

# 3 – Einstellung von Vor- und Nachteilen

Die Verwendung eines unbekannten oder ungewöhnlichen Technologie-Stacks kann die Rekrutierung erschweren. Sie möchten einen Stapel anstreben, mit dem Sie problemlos Leute rekrutieren können.
Zugegeben, gute Entwickler können jeden Stack lernen, aber die Frage ist, ob sie das wollen.

Wenn Sie zum Beispiel einen Chat-Server in Erlang schreiben, wird es für Sie wahrscheinlich viel schwieriger sein, Erlang-Entwickler (oder Leute, die bereit sind, Erlang zu lernen) zu finden, als Leute, die mit Java \ Ruby \ Python vertraut sind …

# 4 – Gemeinschaft

Wenn Scheiße auf den Fan trifft, von dem Sie wissen wollen, dass Sie irgendwo hin müssen, wo Sie Fragen stellen und / oder Hilfe bekommen können.
Bei der Auswahl eines Produkts würde ich Folgendes berücksichtigen:

  • Irgendwelche großen Namen dahinter als Sponsoren \ Benutzer?
  • Wie aktiv ist die Community? Gibt es einen Slack Channel \ Mailing List \ Public JIRA? werden Fragen zu StackOverflow beantwortet? Schreiben die Leute darüber in Blog-Posts (ich suche nach Artikeln, Vergleichen mit Konkurrenzprodukten und Migrationsgeschichten)?
  • Wenn Open Source – wann war das letzte Commit? Wird der Code aktiv weiterentwickelt und gepflegt? Reagieren die Autoren auf PRs?

# 5 – Zeit, Ihre ersten Meilensteine ​​zu erreichen

Als Startup steht die schnelle Markteinführung an erster Stelle. Es ist einfach, in den Voroptimierungsmodus zu wechseln und zu vergessen, dass Sie noch keine Facebook-Skala unterstützen müssen 😉
Finden Sie eine Reihe realistischer Ziele und Meilensteine ​​und wählen Sie Ihre Technologie entsprechend aus.
Möglicherweise können Sie problemlos mit einer relationalen Datenbank arbeiten und benötigen nicht den Aufwand einer NoSQL-Datenbank.
Möglicherweise können Sie mit einem gehosteten Dienst problemlos umgehen und die Verwaltung von Servern und Bereitstellungen zu einem bestimmten Zeitpunkt vermeiden.

Es ist wichtig, eine Technologie zu wählen, mit der Sie Ihre Aufgaben schnell erledigen und Ihre Ziele erreichen können, ohne dass Sie in Zukunft die Möglichkeit haben, zu skalieren oder auf ein besseres System zu migrieren.
Möglicherweise können Sie eine solche Migration auch im Voraus planen.

In einem der Unternehmen, mit dem ich zusammenarbeite, haben wir beispielsweise begonnen, unsere Datenpipeline mithilfe von Google Dataproc zu verwalten. Hierbei handelt es sich im Wesentlichen um eine gehostete Version von Spark. Jeder Datenjob startet einen gehosteten Spark-Cluster, wird ausgeführt und beendet den Cluster, wenn er abgeschlossen ist.
Wir wissen, dass wir in Zukunft, wenn wir wachsen, rund um die Uhr einen einzelnen Cluster betreiben können, um die Last zu tragen. Da wir Spark verwenden, wissen wir, dass wir auch unseren eigenen Cluster hosten können, wenn wir uns dafür entscheiden und nicht von Googles Produkt abhängen.

In erster Linie ist der Treiber Ihr Funktionsumfang. Dagegen muss man verschiedene Technologien bewerten.
Weitere Faktoren, die ich in Betracht ziehen würde, sind: Time-to-Market (Entwicklung / Änderung des Funktionsumfangs für Start-ups sehr schnell. Es sollte leicht zu ändern und zu konfigurieren sein), Skalierbarkeit und Gesamtbetriebskosten.

was am meisten bewegt