Retrospektive Rechen. Wie sich herausstellte, dass eine selbst gemachte Lösung cooler als bezahlt war

Hallo! Mein Name ist Alexey Pyankov, ich bin der Chefprogrammierer bei Sportmaster. Ich sage sofort, dass "main" nicht "der wichtigste aller Programmierer" bedeutet, nein, dies ist nur ein Name, eine so charmante Übersetzung für "Senior +".


Ich arbeite seit 2012 bei Sportmaster und in dieser Zeit hat das Entwicklungsteam viele Entscheidungen getroffen, die aus technischer Sicht interessant sind. Aber heute möchte ich über unsere Arbeit sprechen und mehr darauf eingehen, wie wir in bestimmten zweideutigen Situationen argumentiert haben.


Dieser Artikel enthält keine spezifischen technischen Lösungen (und auch keine technischen), die in Ihrem Projekt erfasst und angewendet werden sollten. Es ist vielmehr eine Reflexion über die geleistete Arbeit. Es gab solche besonderen Momente, die uns als Team beeinflussten - gesammelt, temperiert und auf Stärke getestet. Ich werde versuchen, Ihnen von diesen Momenten zu erzählen, von der Atmosphäre der Teamarbeit, von unserem Rechen und von einer Reihe von psychologischen Fallen, in die wir uns manchmal hineintreiben.


Bild


Und ich werde 2012 anfangen.


Ich bin 2012 mit dem Hauptziel gekommen, an unserer Flaggschiff-Website zu arbeiten. Zu dieser Zeit war es ein "Frankenstein-Monster": Ein Teil des Teams arbeitete mit unserem alten System, das nicht sehr gut mit Lasten umgehen konnte (Bitrix). In einem anderen Teil des Teams (wo ich es mit einbezog) wurde versucht, ein neues System zu implementieren, das nach dem Kriterium "Einmalig" ausgewählt wurde Dies ist der teuerste E-Commerce der Welt. " Sie haben „versucht, es umzusetzen“ - weil das System verzweifelt Widerstand leistete und für jeden Moment, in dem es sich als erledigt herausstellte, gab es eine „Überraschung“. Sie haben viel gearbeitet, sind aber mit der Geschwindigkeit einer Schnecke vorangekommen.


Für mich persönlich war der letzte Strohhalm, der den Code einer Methode in diesem "teuersten E-Commerce der Welt" kennenlernte, als mehrere Stunden konzentrierter Arbeit an einem komplizierten Fehler dazu führten, dass der Grund irgendwo im Custom-Tag gefunden wurde, was wann funktioniert HTML-Generierung in jsp. Die Aufgabe dieses benutzerdefinierten Tags besteht darin, die Summe einiger Werte anzuzeigen. Das ist nicht schlecht, dafür sind Custom-Tags vorgesehen. Die Überraschung lag jedoch darin, dass sich einige Daten in der Datenbank geändert hatten, das Verhalten auf den folgenden Seiten damit verknüpft war und wenn Sie F5 drückten, wurde der Aufruf wiederholt, was die Konsistenz der Daten verletzte. Außerdem verstieß es derart, dass es erst nach wenigen Schritten auf der 3. Seite der Sequenz erschien. Nein, mir macht es nichts aus, dass so ein "Meister-Ninja" im Team war und mit seinem Code die Aufmerksamkeit der Kollegen in guter Verfassung unterstützte. Aber einfach so, im teuersten System!


Das war freitag Ein Kollege und ich verbrachten Samstag und Sonntag im Büro, um herauszufinden, welche Aufgaben das Unternehmen heute für das System stellt und welche Aufgaben es in einem Jahr erledigen kann. Wie würden wir sie dementsprechend lösen, wenn wir nicht in den Rahmen des Einsatzes dieses teuersten und kostengünstigsten Systems getrieben würden?


Gesagt, getan. In einem Pilotprojekt haben wir den Grundstein für die Entwicklung der neuen Sportmaster-Website gelegt. Viele dieser Ideen haben Wurzeln geschlagen und im Moment dreht sich ihre Fortsetzung aktiv auf der Website.


Pilotphasen und Zeitrahmen


2 Tage. Wir haben einen Mikrotrototyp erstellt. Am Wochenende überholen wir unsere Basis in ElasticSearch und führen eine Facettensuche durch. Woah la! In dem gleichen gekauften System "aß" eine solche Einstellung 2 Wochen. Und hier - in wenigen Stunden! Ja, und es geht schneller. Und auf Bestellung schneller.


2 Wochen. Wir sägen einen Prototyp, der Funktionen für eine angemessene personalisierte Lieferung hinzufügt.


Zum Beispiel hat der Benutzer mehrere Rabatte und Sonderaktionen, die speziell für ihn relevant sind - dann müssen Sie in den Suchergebnissen für die Produkte genau den Preis anzeigen, der mit allen verfügbaren Brötchen am rentabelsten erzielt werden kann.


Bei Aktien ist nicht alles so einfach. Ich habe zum Beispiel Ski gekauft, jetzt gibt es einen Rabatt von 40% auf einen Hut, aber gleichzeitig wird ein Willkommensrabatt von 10% auf die gesamte Bestellung storniert. Ja, ja, das ist ein realer Fall :) Und um eine solche Aktion im Einkaufssystem einzurichten, wurden 3 Konsultationen mit dem Lieferanten bezahlt, wodurch wir viele Beispiele dafür erhielten, wie man verschiedene andere Aktionen durchführt. Sehr diplomatisch und angesichts der Beratungskosten sehr wirtschaftlich.


Dem Unternehmen eine ausführliche Demo gezeigt. Sie versprachen, den Piloten schnell zusammenzubauen und sofort an die Arbeit zu gehen.


2 Monate. Pilotprojekt - Wir machen es in Form einer Live-Site mit einer Verzeichnissuche. Suche mit Facetten, Suchergebnisse - mit persönlichen Rabatten sieht der Pilot fast wie die Site eines Sportmasters aus, und wir haben die gleichen Produkte ausgefüllt. Süße!


Wir fügen die "Eloquenz: 100" unseres Abteilungsleiters hinzu, und die Präsentation zum Geschäft findet auf Hurra statt! Sie geben uns die freie Hand, um die eCommerce-Plattform selbst zu entwickeln.


Und das bedeutet, Jungs, Team, Jungs, Budget. Cool!


2 Jahre. Website-Rückzug in der Produktion. Ja, schon lange. Alles, was wir damals wussten, haben wir nur im Maßstab des Prototyps ausprobiert. Zwei Personen bilden leicht ein zusammenhängendes Team. Und die Aufgaben, die wir „abgebrochen“ haben - im Großen und Ganzen waren dies kleine Dopila von „Hello World“ in neuen Technologien. Wir haben leicht neue Hypothesen erstellt, sie schnell getestet, hatten keine Zeit, uns an sie zu binden, und deshalb haben sie sie ohne Reue "getötet". Als wir 10 Leute wurden, haben wir träge unsere Arbeitsgeschwindigkeit auf alle anderen hochgerechnet. Und sie versprachen solche Fristen für die Aufgabe, die der Idee des Schönen entsprechen, multipliziert mit unserer Begeisterung.


Eine vertraute Situation? :)


Wissen Sie dann schon, was als nächstes passieren wird?


Falle Nr. 1. "Extrapolator-stark"


Es ist klar, dass neue Technologien in Präsentationen sehr cool aussehen und in der Kategorie „Hello World“ hervorragende Ergebnisse zeigen. Aber die Realität ist normalerweise etwas weiter davon entfernt.


Also. Wir nehmen die Bibliothek, schreiben eine Reihe von Anwendungscode. Wir betrachten Unit-Tests als Belastung (wir sind cool und pflügen hier auf Überschall, der Code ist modern und so weiter). Wir ändern und modifizieren die API ständig - na ja, welche Art von Tests gibt es, im Ernst. Und das alles unter dem Motto "Den Entwicklungsprozess cool optimieren" (ja, jetzt ist es beängstigend, es überhaupt zu beschreiben).


Und dann ist alles ziemlich offensichtlich.


Wir rollen einen neuen Build auf uat aus. Die Jungs aus dem Geschäft gehen fröhlich los, um das Ganze zu testen und Knöpfe zu drücken. Manchmal drücken sie sehr kreativ - etwas fällt ab. Dann gehen Sie und finden Sie heraus, was sie dafür getan haben. Auf der anderen Seite des Monitors befindet sich jedoch kein langweiliger Tester, der Ihnen alle Umwelteigenschaften zur Verfügung stellt, unter Berücksichtigung des Wetters in der Region, aber der Kunde hat kein Geschäft. Er "funktioniert einfach nicht". Also ist er unglücklich. Fragen Sie ihn - und er wird schrecklich unglücklich sein!


Bild


Um den Fehler zu reproduzieren, muss man dann alles erledigen. Natürlich haben wir keine einzige Beschwerde ignoriert und alles behoben. Sie warfen die geplanten Aufgaben, aber "löschten das Feuer."


Also haben wir uns das nächste Loch gegraben.


Falle Nummer 2. "Stakhanovets"


Sie haben nicht die angenehmste Wanze bekommen. Du beginnst zu verstehen. Es klappt nicht - Ärger - ein Versuch, es noch einmal zu klären - ein weiterer Mist - Sie geben alles an, was möglich ist - wieder nicht, dass Sie daran denken, dass Sie bereits alt sind und jeder Kinder und eine Hypothek hat - Sie versuchen es erneut - nicht noch einmal. Ein paar Tassen Kaffee, und alles wiederholt sich. 12-14 Stunden hintereinander sind fast die Norm. Und jetzt, wo alles an seine Grenzen stößt - Knall, Inspiration!


Bild


Vielleicht ist die Einschätzung der Wirksamkeit eines solchen Tages von außen gut und richtig sichtbar. Aber von innen kann es anders sein.


In meinem Fall war der Eindruck einer solchen Arbeit: "Ich bin fertig, ich bin cool, ich habe mich zurückgezogen." Nicht immer bewusst, aber unbewusst - immer!


Und nehmen Sie Platz, kein Scherz. Es stellt sich heraus, dass die internen Messgrößen für den Erfolg der Bewegung vom Ergebnis auf die Anzahl der angewendeten Anstrengungen und die Höhe der Leistungen, die Sie erbracht haben, auf die Anzahl der Leiden, die Sie bei dem Versuch, das Problem zu lösen, verschoben werden.


Dies ist wahrscheinlich die schlimmste Falle.


Weiterhin wird es einfacher und macht mehr Spaß :)


Falle Nummer 3. "Die Kraft der hallo Welt"


Unser Technologie-Stack aus dieser Zeit: ElasticSearch, Hazelcast, Pentaho, Freemarker (und bewährtes Java, Spring, Tomcat, Nginx). Freemarker meldete Fehlermeldungen nicht sehr informativ. ElasticSearch, Hazelcast, Pentaho mussten jedoch mehrmals gepatcht werden - wir fanden talentiert Fälle, in denen sie nicht wie in der Dokumentation angegeben funktionierten.


Einfacher Start und schneller Lebkuchen durch den Einsatz neuer Technologien sind gut, aber sie bringen Euphorie und reduzieren die Aufmerksamkeit. Da die neue Technologie Fehler enthält, muss sie auch Fehler enthalten. Und wenn Sie noch nicht darüber geschrieben haben - freuen Sie sich, es liegt an Ihnen, der Pionier zu werden, der sowieso etwas schiefes aufgreift und auf Google oder SO geht. Natürlich steckt das „krumme“ in bewährten Produkten, aber bei neuen ist es viel einfacher.


Bild


Trotz aller Schwierigkeiten gingen wir in Produktion. Ja, mit Verzögerungen. Ja, nicht sehr stabil. Aber im Großen und Ganzen - keine Katastrophen.


Insgesamt stelle ich noch einmal Fallen fest, in denen eine gesunde Wahrnehmung des Arbeitsprozesses verzerrt ist.


  1. "Extrapolator-stark" . Beeindruckt von den aktuellen Erfolgen, extrapolieren wir freudig die Entwicklungsgeschwindigkeit auf anstehende Projekte.
  2. "Stakhanovets . " Wir arbeiten für Abnutzung, wir sind zufrieden mit uns selbst, aber wir bemerken nicht, dass die Probleme, die wir lösen, eine Folge unserer persönlichen Fehler / Mängel / Vernachlässigungen sind. Funktioniert nicht zu machen.
  3. "Die Kraft der hallo Welt . " Wir beeilen uns, die neuesten und interessantesten in der Produktion vorzustellen.

Warum hat es geklappt?


Natürlich habe ich nicht alle Fehler aufgelistet, die wir in dieser Zeit hatten, aber die häufigsten, wahrscheinlich für ein Projekt jeglicher Art. Diese Fehlerbehebung hilft, sie in Zukunft zu vermeiden.


Ein wenig darüber, wie wir es im Allgemeinen geschafft haben, ein solches Mini-Startup innerhalb des Unternehmens zu schaffen und das Unternehmen davon zu überzeugen, von dem bereits gekauften System auf etwas Eigenes umzusteigen.


Bedingung Nr. 0 . Gesundes Klima im Unternehmen. Dies ist nicht nur die "brennenden Augen" der Mitarbeiter und Geselligkeit in stressigen Bedingungen der Extraktion von Cookies, nein. Hier geht es um alle Wechselwirkungen.


Bedingung Nr. 1 . Glaube an das, was du tust. Im Ernst, ich glaube nicht, dass wir zumindest eine Chance hätten, wenn wir einen Piloten mitnehmen würden, ohne das gekaufte System „auf den Punkt gebracht“ zu haben - das heißt, wir treten zurück und wissen unbewusst, dass dieses System cooler ist und mit uns beschäftigt ist.


Was wir getan haben: 1) das Einkaufssystem herausgefunden, mit dem die grundlegenden Anforderungen des Geschäfts gelöst wurden 2) eine Liste von Aufgaben zusammengestellt, die nicht nur jetzt existieren, sondern in absehbarer Zukunft auch noch funktionieren werden 3) eine Lösung ausgewählt haben, die am besten funktioniert. Und dann unsere Einschätzung der Entscheidung - es war eine Einschätzung von Experten.


Würden sie uns etwas geben, wenn wir nur kamen und sagten: "Leute, all dieser Müll, wir wollen uns nicht darum kümmern und haben beschlossen, unser Ding von Grund auf neu zu machen"? Kaum. Und die Antwort wäre in einer Form eingegangen, an die man sich gut erinnert :)


Bedingung Nr. 2 . Der erste Schritt ist klein. Wir erstellen die erste Hypothese und überprüfen sie. Sie können Ihre persönliche Zeit damit verbringen. Wenn Sie Ihre Zeit nicht verschwenden möchten, sollten Sie sich mit so etwas überhaupt nicht befassen. Und wenn Sie eine kleine Hypothese nicht testen wollen, sondern sie sofort cool und brillant machen wollen, halten Sie sich von solchen Menschen fern!


Wir hatten Glück und die erste Hypothese hat funktioniert. Das kommt aber nicht immer vor. In einem der folgenden Projekte, in denen der Administrator im Rahmen eines ähnlichen Pilotprojekts befördert wurde, hat beispielsweise nur die 18. Option für uns funktioniert. Und die ersten 17 Annäherungen an das Projektil wurden verschwendet. Übrigens waren in der Geschichte mit der Schaffung des Admin-Bereichs Drehungen und Wendungen auf dem Niveau der brasilianischen Fernsehserien, weil das Team aus Jungs bestand, die zu diesem Zeitpunkt Veteranen waren und echte „geriebene Kalachs“ waren.


Bedingung Nr. 3 . Wir machen MVP und suchen nach Schmerzen beim Entscheider. Natürlich kann sich das Entsetzen bereits in seinem Gesicht widerspiegeln, wenn Sie ihm zum dreißigsten Mal eine Art Wagnis einbringen. Aber trotzdem. Und zeigen Sie auf jeden Fall, wie genau wir seine Probleme mit unserem Produkt lösen.


Bedingung Nr. 4 . Auf dem Knie machen wir schnell einen Piloten, der ungefähr so aussieht wie das Endergebnis. Es ist verlockend, alles richtig cool zu machen, aber man kann auf Perfektionismus stoßen, weshalb sich herausstellt, dass man anstelle eines Piloten eine Pilotversion eines bereits idealen Produkts zeigen möchte. Sie existieren aber nicht. Also mach einfach wenigstens Stöcke.


Bedingung Nr. 5 . Produkt. Das Projekt wächst, bekommt Finanzen, Experten bringen solide Erfahrung mit.
Und wenn Sie ein klassisches Startup sind, dann ist dies genau der Moment, an dem Sie die Schuld mit einer Pfeife geben müssen. Weil leichte Flüge ganz oben und ein Gefühl der allgemeinen Güte des Geschehens sich schnell zerstreuen.


Der Einstieg in das Produkt ist eine Kollision mit tatsächlichen Lasten, die Integration in ein Dutzend Systeme. Wenn Sie neue Funktionen erstellen, werden Sie im Rahmen der Wartung alte Versionen finalisieren. All dies sind Herausforderungen, die viel ernster sind, als eine Idee zu entwickeln und zu lösen, wenn auch gut, aber nur ein Kundenproblem.


Dies sind Herausforderungen, und das Wachstum von Fähigkeiten erfolgt genau in dieser Phase.


Danke fürs Lesen. Glücklicher neuer Code!

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


All Articles