Angebot in London an einem Tag: wie man es bekommt und was man nach dem Umzug macht

Hallo Habr!

Wir haben große Pläne für 2020. Wir beabsichtigen, Badoo und Bumble aktiv weiterzuentwickeln, daher erweitern wir das technische Team ernsthaft. Und heute geben wir die massive Einstellung von PHP-Entwicklern in unserem Londoner Büro bekannt. 

2017 haben wir ein neues Suchformat ausprobiert - eine Einstellungsveranstaltung: Wir bringen coole Entwickler nach Moskau, führen an einem Tag Interviews und machen sofort ein Angebot für geeignete Kandidaten. Alle Kosten für eine Reise in die Hauptstadt fallen natürlich an.

Das Format hat gut funktioniert und wir haben wieder viele offene Stellen, daher kündigen wir ein neues PHP-Einstellungsereignis an. 

Die Regeln sind die gleichen: Zeigen Sie ein hohes Testergebnis vor dem 1. März, bestehen Sie das Interview erfolgreich am 21. oder 22. März in Moskau - und erhalten Sie am selben Tag ein Angebot an das Büro von Badoo London. 

UPD: Der Test ist abgeschlossen, danke an alle Teilnehmer! Wir haben die Finalisten bereits benachrichtigt und gewarnt, dass die Daten des Interviews aus Gründen des Komforts und der Sicherheit der Kandidaten auf unbestimmte Zeit verschoben werden.



Unter dem Schnitt werde ich Ihnen sagen:

  • mehr über den Test;
  • An welchen Projekten wir beteiligt sind: Fotooptimierung, Video-Streaming, maschinelles Lernen für Briefe, Übergang zu neuen Versionen von PHP und vieles mehr.

Wenn Sie ein PHP-Shnik sind und nach London ziehen möchten, sind Sie bei kat willkommen!


So bestehen Sie den Test


Der Test besteht aus fünf Aufgaben. Der Entscheidung sind genau 90 Minuten zugeordnet: Es wird nicht funktionieren, um den Prozess zu verzögern oder anzuhalten. Bevor Sie beginnen, stellen Sie sicher, dass Sie genügend Zeit haben. 

In drei Aufgaben müssen Sie Code- / SQL-Abfragen schreiben, und in den verbleibenden zwei erwarten wir detaillierte Antworten auf Fragen. Test auf HackerRank veröffentlicht. Wir empfehlen, die Testaufgaben der Plattform zu üben, um sich mit der Benutzeroberfläche vertraut zu machen. 

Entscheidungen werden bis 2020-03-01 23:59:59 UTC getroffen. Basierend auf den Testergebnissen werden wir ungefähr 60 Kandidaten auswählen, die wir zu einem Interview nach Moskau einladen werden. 

Das Unternehmen übernimmt alle Kosten für eine Reise nach Moskau sowie die Kosten für den Umzug nach London. Wir helfen den Familienmitgliedern unseres neuen Kollegen, ein Arbeitsvisum zu bekommen, den Flug zu bezahlen, ein Haus für die Dauer der Suche zu mieten, einen Bargeldbonus für den Umzug zu zahlen und bei der Verbesserung der Englischkenntnisse zu helfen. Sie können das Team bereits in der Interviewphase kennenlernen: Die Entwickler führen selbst Interviews bei der Einstellungsveranstaltung.

Was das Serverentwicklungsteam macht 


Wir sind verantwortlich für das Backend der Dating-Dienste Badoo und Bumble. Die Anwendungen streichen nicht nur nach links und rechts, um einen Partner zu finden, sondern bieten auch Video-Streaming, Chat mit Audio-Nachrichten, Suche nach Personen in der Nähe, Integration in Zahlungsdienste und vieles mehr. Eine relativ einfache Schnittstelle verbirgt viel Logik in PHP und Go (und es wird immer mehr). 

Unser Team hat mehr als 40 Mitarbeiter. Die Arbeit kann in zwei große Teile unterteilt werden:

  • neue Funktionalität in Anwendungen,
  • technische Projekte - Verbesserung der Werkzeuge, Optimierung, Arbeit mit technischen Schulden.

Ich werde über die interessantesten Projekte sprechen, die wir in den letzten zwei Jahren umgesetzt haben.

Kühle Chips im Produkt


Der Markt für Dating-Anwendungen ist dynamisch und wettbewerbsfähig, daher ist unser Hauptziel die Entwicklung des Produkts: Es muss für Benutzer interessant und sicher bleiben. 

Ich habe gelernt, zu "persönliche" Fotos zu verstecken


Einige Benutzer senden erotische Chat-Fotos, auch wenn der Gesprächspartner nicht um solche Geschenke gebeten hat. 

Die Aufgabe, die wir lösen mussten, bestand darin, der Anwendung beizubringen, „private“ Fotos (18+) von normalen zu unterscheiden und sie im Chat zu zeigen, damit der Empfänger selbst entscheiden kann, ob er sie vollständig sehen möchte. 

Zusammen mit dem Forschungs- und Entwicklungsteam haben wir einen Go-Service mit einem neuronalen Netzwerk erstellt, das "private" Fotos erkennen kann. Wenn die Wahrscheinlichkeit, dass das Foto erotisch ist, höher als der festgelegte Schwellenwert ist, wird ein spezielles Flag in die Nachricht eingefügt, und der Client behandelt diese Situation entsprechend: Zeigt einen unscharfen Stub an, der fragt, ob der Empfänger sehen möchte, was sich darin befindet. 

Wir führen alle Aufgaben durch A / B-Tests und decken die wichtigsten Punkte der neuen Funktionalität sorgfältig mit Statistiken ab. So haben wir herausgefunden, dass pro Tag ungefähr 200.000 "private" Fotos gesendet werden. Und auch - dass diese Fotos oft noch angesehen werden und sich nicht über den Absender beschweren.  

Audio- und Video-Chat-Nachrichten hinzugefügt


In den letzten zwei Jahren haben wir Funktionen für fortgeschrittene Messenger entwickelt und Benutzern die Möglichkeit gegeben, Multimedia-Nachrichten auszutauschen. Die Implementierung dieser Option auf der Serverseite war aufgrund der flexiblen Architektur der mobilen API und des eigenen CDN recht einfach.

Beim Entwerfen von Multimedia-Mitteilungen im Chat haben wir den Datei-Upload von der Client-Server-Haupt-API auf die separaten HTTP-Dienste im CDN übertragen. Wir verwenden ein einziges Repository, sodass diese Lösung aus Sicht der Codeunterstützung keine Probleme verursachte. Es war jedoch möglich, Werkzeuge zu verwenden, die für die Art der Last optimiert waren:

  • Die mobile API (Binärprotokoll) wird durch den Austausch kurzer Befehle geschärft und durchläuft in der Spitze mehr als 100.000 Anforderungen pro Sekunde.
  • CDN ist auf die Arbeit mit Multimedia abgestimmt und kann 200.000 Fotos pro Sekunde liefern (wir haben auf der Uptime Day-Konferenz ausführlich über CDN-Optimierungen gesprochen ).

Aus Sicht von CDN spielt der Typ der heruntergeladenen Datei keine große Rolle, und wir hatten bereits eine Videokonvertierung. Wir konnten die neuen Typen (Audio und Video) im Protokoll der mobilen API nur korrekt verarbeiten.

Erfahren, wie man ML-Modelle ohne F & E baut


Im Jahr 2018 haben wir ein eigenes Framework zur Automatisierung des Trainings von Modellen für unsere Daten erstellt. Jetzt kann jeder Backend-Entwickler unabhängig ein auf seine Anwendung zugeschnittenes Modell erstellen, ohne Kollegen aus Forschung und Entwicklung anzulocken. 

Dieses Framework kann Hunderte von Metriken erfassen, die sowohl universell (Geschlecht, Alter, Aktivität in der Anwendung) als auch spezifisch und für jedes spezifische Modell von Bedeutung sind. Algorithmen zur Erstellung von ML-Modellen sind flexibel konfiguriert, und Diagramme der Ergebnisse stehen für die Analyse „out of the box“ zur Verfügung. Bei der Ausgabe bietet das Framework ein Arbeitsmodell, das schnell genug (innerhalb von 10 bis 100 ms) reagiert, sodass es direkt in Benutzeranforderungen von PHP aus aufgerufen werden kann, ohne UX zu beeinträchtigen.

Letztes Jahr haben wir das Framework in verschiedene Teile unserer Anwendung integriert: Anti-Spam-Systeme, Bewertung der Anwendung und einige andere. Mail ML ist eine der erfolgreichsten Anwendungen: Das Modell sagt die Wahrscheinlichkeit eines Klicks auf den Link in der E-Mail für einen bestimmten Benutzer voraus. Das Modell lernt aus den Daten anderer Benutzer, ähnlich wie der Empfänger der E-Mail mit „wichtigen“ Attributen, und die „Wichtigkeit“ wird vom Framework automatisch berechnet.

Nach Auswertung der Ergebnisse haben wir das Senden von E-Mails mit der geringsten Wahrscheinlichkeit, auf Links zu klicken, eingestellt. Aus diesem Grund haben wir: 

  • Erhöhte Benutzerbindung, was zu verbesserten Aktivitätsmetriken im Dienst führte: Menschen mögen keine "hoffnungslosen" Briefe;
  • Erhöhte Posteingangsrate bei wichtigen Mailern: E-Mail-Dienste wie Absender mit hoher Klickrate.

Video-Streaming gestartet


Wir sind immer auf der Suche nach neuen Entwicklungsmöglichkeiten. Als das Video-Streaming an Fahrt gewann, beschlossen wir, es in unsere Anwendung zu integrieren. Die Vorhersage des Projekterfolgs war nicht einfach. Um die Kosten zu senken, haben wir uns nicht direkt in die Entwicklung unserer Lösung gestürzt, sondern ein Unternehmen gefunden, das der Plattform und dem SDK die von uns benötigten Funktionen zur Verfügung stellte.

Wir mussten Funktionslogik und Client-Server-Interaktion erstellen, Optionen zum Senden und Bezahlen von Geschenken implementieren, Inhalte (sowohl den Videostream als auch die Kommentare) schnell moderieren und alles mit Metriken abdecken. Wir haben ein funktionsübergreifendes Team aus verschiedenen Abteilungen und Abteilungen zusammengestellt: Kundenentwicklung, Serverentwicklung, Abrechnung, Plattform, Backoffice, BI-Analyse, Design und Produktmanagement. Alle ließen sich in einem Büroraum nieder - und die Arbeit begann zu kochen.

Wir haben die Funktionalität der ersten Version (MVP) festgelegt - und einen Monat später haben wir eine Funktion in einem Land nach dem anderen gestartet. Seit einigen Wochen haben wir es in verschiedenen Ländern eingeführt, und heute ist Video-Streaming überall verfügbar. 

Senden Sie Benutzernachrichten auf dem Arbat


Es war eine sehr ungewöhnliche Aktion: Den ganzen Oktober über schickten Badoo-Benutzer Nachrichten an eine riesige Video-Werbetafel am Novy Arbat in Moskau. Innerhalb eines Monats wurden 23.000 Nachrichten an uns gesendet, von denen 12.000 erfolgreich moderiert wurden und auf den Bildschirm kamen.

Eine Werbetafel ist so ein Smart-TV mit einem Browser und unserem JavaScript-Client. Auf dem Bildschirm wurden fünfminütige Werbespots gezeigt, von denen uns jeweils drei Minuten gegeben wurden. 



Natürlich wollten alle Benutzer die gesendete Nachricht mit eigenen Augen auf dem Bildschirm sehen. Um dies zu ermöglichen, mussten wir die Frage beantworten, wenn jede der Nachrichten dort erscheint.

Wir sollten den Benutzer über den Zeitpunkt der Anzeige nach der Moderation informieren. Technisch gesehen fiel die Nachricht zu diesem Zeitpunkt mit einer eindeutigen Startzeit und -dauer in unseren internen Zeitplan, die dynamisch berechnet wurde: von 30 Sekunden bis fünf Minuten (abhängig von der Anzahl der Absender). 

Die Schwierigkeit bestand darin, dass der Anbieter seinerseits nicht die Möglichkeit bot, die Zeit des Werbespots zu steuern und zu verfolgen. Daher war es notwendig, unseren Zeitplan geschickt mit dem Zeitplan des Anbieters zu synchronisieren, ihn ständig zu überwachen und gegebenenfalls anzupassen. Es hat uns geholfen, dass wir bemerkt haben (Protokollierung ist unser Alles!), Dass ein paar zehn Sekunden bevor das nächste Video gezeigt wurde, der Smart-TV die Seite neu lädt. Es war unmöglich, sich auf diese Zeit zu konzentrieren, aber man konnte Verschiebungen im Zeitplan feststellen, die manchmal 15 bis 30 Sekunden erreichten. Wir haben die Überwachung der Schichten auf unserer Seite eingerichtet und zum Zeitpunkt des Betriebs begonnen, den Zeitpunkt der nächsten Show beim Anbieter anzufordern. 

Während der Einrichtung dieses Systems aß unser Ingenieur, der in einem Café gegenüber der Werbetafel arbeitete, eine beeindruckende Menge Croissants und trank viele Tassen Kaffee. Dank ihm verlief die Übertragung von Benutzernachrichten jedoch reibungslos und es gab keine schwerwiegenden Zwischenfälle. 

Technische Projekte


Trotz des großen Volumens an Lebensmittelarbeiten widmen wir technischen Projekten viel Zeit. Die meisten davon beziehen sich auf die Leistung unserer Anwendungen sowie auf die Entwicklung und Verbesserung interner Tools.

Liveprof Open Source Projekt


Wir hatten lange Zeit die Möglichkeit, XHProf für eine bestimmte Anfrage in der Produktion zu aktivieren, aber dies reicht nicht immer aus. Anfragen sind unterschiedlich, aber für systematische Arbeiten an der Leistung möchte ich das Gesamtbild für alle Anfragen sehen. Daher wurde eine solche Idee geboren: Starten Sie XHProf automatisch für einen kleinen Teil der Abfragen und aggregieren Sie die Ergebnisse. So entstand das Liveprof- Projekt , das wir offen zugänglich machten .

Bei der Verarbeitung der Anforderung gibt es eine Logik, die basierend auf den Wahrscheinlichkeiten und der API-Methode entscheidet, ob XHProf gestartet werden soll. Profilerstellungsergebnisse werden auf die Festplatte geschrieben und dann an einen separaten Server übermittelt, wo sie in MySQL in Rohform abgelegt werden. 

Einmal am Tag wird ein Skript ausgeführt, das die Ergebnisse für jede Marke, Plattform und API-Methode zusammenfasst. So können wir die Ergebnisse der Profilerstellung für bestimmte Anforderungen von Badoo iOS sehen (sowohl in Form eines Baums als auch in Form eines Flammengraphen). Wir können sehen, wie viel Prozent des Clusters erforderlich sind, um eine einzelne Funktion aufzurufen (z. B. wie viel es kostet, eine URL für ein Foto zu sammeln). und hat kürzlich die Ausgabe dieser Informationen direkt zu PhpStorm hinzugefügt.

Migration auf PHP 7.4


Neue Versionen von PHP freuen sich über die Leistungsverbesserung. In den letzten beiden Übergängen (von 7.0 auf 7.2 und von 7.2 auf 7.4) war unsere Abteilung verantwortlich.

Der Übergang beginnt lange vor der offiziellen Veröffentlichung. Zuerst führen wir die Tests manuell mit der neuen Version aus und ... wir stehen vor einer Vielzahl von Problemen. Einige von ihnen sind leicht zu lösen, während andere einige Zeit benötigen. 

Wenn die meisten Probleme behoben sind, wechseln wir in der Entwicklerumgebung zur neuen Version. Einige Zeit überwachen wir Fehlerprotokolle und sammeln Feedback von Entwicklern und QS-Ingenieuren. Zum Zeitpunkt der offiziellen Veröffentlichung der stabilen Version sind wir bereit, die Produktion zu testen: Zuerst führen wir sie auf einer Maschine aus und legen sie schrittweise auf den anderen aus.

Nachdem die neue Version auf allen Servern verteilt wurde, endet der Übergang jedoch nicht: Wir überprüfen weiterhin die Syntax mit beiden Versionen von PHP (neu und früher). Wir sind daher davon überzeugt, dass die Entwickler die neue Syntax nicht verwendet haben und dass wir jederzeit zur alten Version wechseln können, wenn bei der neuen unerwartete Probleme auftreten. Zum Beispiel haben wir vor den Neujahrsferien ein kleines Problem mit einem Speicherverlust in PHP 7.4 entdeckt, beschlossen, es nicht zu riskieren, und sind vor den Feiertagen zur vorherigen Version zurückgekehrt. Nachdem wir uns in den Ferien mit dem Problem befasst hatten, haben wir Version 7.4 erneut eingeführt und verwenden es weiterhin. 

Aggregation von Anfragen


Mit dem PHP-Update endet unser Kampf um die Leistung nicht dort. Wir haben ein leistungsfähiges Framework, das zu Beginn viel Arbeit leistet: von der Initialisierung bis zu verschiedenen Überprüfungen, die für jede Anforderung erforderlich sind. 

Wir beschlossen, ein einfaches Experiment durchzuführen. Wir haben einen Teil der Befehle ausgewählt, für den die Antwort des Servers nicht kritisch ist (z. B. das Senden von Statistiken vom Client oder das Wählen der Option "Nein" im Wischspiel), und einen Go-Dienst für Go geschrieben, der solche Anforderungen akzeptiert, speichert und sie dann in einem Paket an den Server sendet ( für jeden Benutzer). Auf diese Weise können wir sehr einfach beim Initialisieren der Anwendung sparen, ohne den Hauptcode neu schreiben zu müssen.

Das Experiment hat sich als erfolgreich erwiesen: Nach unseren Schätzungen können wir einige Prozent der CPU (in unserem Fall mehr als zehn Server) einsparen, ohne den Hauptcode neu zu schreiben, jedoch auf Kosten der Komplikation des Betriebs und der Arbeitslogik. Um das Bild zu vervollständigen, haben wir uns entschlossen, auf die Ergebnisse von Experimenten mit PHP 7.4 Preload und RoadRunner zu warten, um die optimale Lösung entsprechend dem Gewinnverhältnis und der Komplexität der Implementierung auszuwählen. 

Fotooptimierung


Die Benutzeraktivität hängt direkt von einigen technischen Projekten ab. Je schneller wir beispielsweise Fotos zeigen, desto aktiver streichen die Leute, desto mehr Übereinstimmungen finden statt, desto mehr neue Paare bilden sich und so weiter. 

Im Oktober 2018 beschloss eine unserer Marken, Bumble, in den indischen Markt einzutreten. Da wir nichts über die Geschwindigkeit des lokalen Internets wussten, beschlossen wir, eine Reihe von Experimenten mit der Qualität und Größe von Fotos durchzuführen.

Wir starten alle technischen Experimente unter A / B-Tests. Auf diese Weise können Sie nicht nur den Unterschied im Verhalten und der Aktivität verschiedener Gruppen sehen, sondern auch Statistiken über den Betrieb der Anwendung auf dem Client, aufgeschlüsselt nach Optionen. Wir waren an Zeit zum Herunterladen von Bildern und an Zeit zum Dekodieren und Anzeigen interessiert. 

Infrastruktur Zusätzlich zu den Speicherservern weisen wir einen Cluster von Foto-Caches zu. Dies sind die Server, auf denen die am häufigsten verwendeten Bilder gespeichert werden. Da es weltweit eine große Anzahl von Smartphones mit unterschiedlichen Bildschirmen gibt, speichern wir Fotos in verschiedenen Grundgrößen und konvertieren sie im laufenden Betrieb in die vom Kunden gewünschte Größe und das gewünschte Format. 

Die Aufgabe, die wir lösen wollten, war die Auswahl des optimalen Formats (JPEG, WebP, PJPEG), der Größe und der Bildqualität. Theoretisch sollte das WebP-Format das beste sein, aber es ist im Hinblick auf die Konvertierung im laufenden Betrieb am teuersten: Anstatt Datenverkehr zu sparen, müssen Sie mehr Foto-Cache-Server kaufen. Gleichzeitig haben wir uns entschlossen zu testen, wie CDNs in der Region zur Verbesserung von UX beitragen können.

Mehrere unserer Ingenieure wurden dorthin geschickt, um ein Projekt in Indien zu starten. Wir hatten also nicht nur trockene Zahlen, sondern auch Leute, die die Anwendung vor Ort bei verschiedenen Bedienern testen, ihre Arbeit mit der Arbeit anderer Anwendungen vergleichen und so weiter konnten.

Die Ergebnisse der Experimente ermöglichten es uns, die besten Optionen für die Qualität und Größe der Fotos auszuwählen. Wir haben beispielsweise festgestellt, dass die Logik des Vorladens von Fotos auf dem Client eine große Rolle bei der Benutzeraktivität spielt. Und trotz der Tatsache, dass Fotos in WebP schneller heruntergeladen werden, war der positive Effekt nur in mobilen Browsern spürbar. Die gleiche Geschichte mit CDN: Wir haben drei externe CDN-Dienste getestet und trotz der Beschleunigung der Bereitstellung von Inhalten keine positiven Änderungen in der Aktivität festgestellt. Infolgedessen haben wir WebP für mobile Browser aktiviert und Strom gespart, sodass alle anderen Clients im JPEG-Format verbleiben.

Eigenes Video-Streaming


Wie oben erwähnt, wurde die erste Version des Video-Streamings über einen externen Dienst gestartet. Das Experiment wurde als erfolgreich angesehen - und wir begannen, Software und Infrastruktur für den Start in unseren Rechenzentren vorzubereiten. 

Mit Hilfe eines vorgefertigten Transcoders (zum Auspressen des Videostreams vom Benutzer) und Edgeservern (zum Verteilen des Streams an den Benutzer) mussten wir ein System erstellen, das einer externen Box-Lösung ähnelt. Und natürlich musste vieles mit einer „Datei“ für unterwegs abgeschlossen werden.

Beispielsweise war anfangs jeder Edgeserver mit jedem Transcoderserver verbunden, was die Skalierung erschwerte und den internen Verkehr erhöhte. Wir haben das Client-Balancing so geschrieben, dass Clients eines Streams auf die geringste Anzahl von Edgeservern zugreifen, wobei die Beliebtheit jedes einzelnen Streams berücksichtigt wird. 

Ein weiteres Beispiel, bei dem wir schlagfertig sein mussten, ist die Logik der Änderung der Stream-Qualität in WebRTC: Aufgrund der Tatsache, dass wir zwei Qualitätsoptionen verwenden, wurde der Standardalgorithmus abgerissen und nur zur Verringerung der Bitrate beigetragen. Ich musste tiefer gehen und den in der WebRTC-Bibliothek verwendeten Algorithmus bearbeiten.

Darüber hinaus wurden bei der WebRTC-Signalisierung standardmäßig zu viele Informationen zu Hosts im Netzwerk an den Client übergeben. Die Lösung war ein Proxy-Server auf Go, der dem Client nur das bietet, was er wissen muss, und außerdem viele nützliche Informationen über verbundene Clients sammelt. 

Vom Beginn der Forschung bis zur vollständigen Umsetzung dauerte das Projekt mehr als sechs Monate. Infolgedessen konnten wir die Kosten durch den Verzicht auf externe Dienste erheblich senken. 

Leistungsoptimierung


Dies ist kein einmaliges Projekt für unser Team - dies ist ein wichtiger Bereich, dem wir auch viel Aufmerksamkeit schenken. Unser Hauptcluster, der Anforderungen von Anwendungen bedient, besteht aus Hunderten von Servern. Daher ist es für uns rentabel, Zeit in die Optimierung der Anwendung zu investieren: Jeder gewonnene Prozentsatz kostet uns mehrere physische Server. 

Wir überwachen ständig die Gesamtlast unseres Clusters und die Last für jeden spezifischen API-Aufruf. Wenn ein bestimmter Schwellenwert überschritten wird, beginnen wir mit der Suche und Optimierung von Engpässen. Je größer der Überschuss, desto mehr Menschen engagieren sich. Dieser Ansatz ist völlig gerechtfertigt: In den letzten zwei Jahren war die Clusterwachstumsrate halb so hoch wie die Wachstumsrate des Publikums unserer Dienstleistungen. 

Wir teilen aktiv das während der Optimierungsarbeit gewonnene Wissen auf Konferenzen und Tagungen. Weitere Details zu unseren Projekten und Studien finden Sie in Artikeln und Berichten von Pasha Murzakov: 


Kontrolle über alten und nicht verwendeten Code


Wir haben eine ziemlich intensive Entwicklung, und das Tempo beim Starten von Produktaufgaben und Experimenten nimmt mit dem Wachstum des Unternehmens ebenfalls zu. Unter solchen Bedingungen wird die Codebasis komplexer und weniger kontrolliert. Die Situation wird durch mehrere Plattformen und Benutzer mit älteren Versionen von Anwendungen und Betriebssystemen verschärft. 

Wir versuchen, unsere Codebasis „sauber“ zu halten, um ein hohes Arbeitstempo aufrechtzuerhalten:

  • Erstellen Sie automatisch Aufgaben, um den Code nach Abschluss des Produktexperiments zu entfernen.
  • automatisierte Verfolgung alter Versionen von Anwendungen und Betriebssystemen und der darin verwendeten Codezweige;
  • Einführung von Tools zur automatischen Suche nach nicht verwendetem Code.

Sie können mehr über unsere Ergebnisse beim Badoo PHP Meetup erfahren , das diesen Samstag, den 15. Februar stattfinden wird. 

Natürlich sind dies nicht alle Projekte, über die ich sprechen möchte. In den letzten zwei Jahren haben wir mit Spammern und Schnappern gekämpft, unser Plugin für PhpStorm gesägt, verschiedene KV-Repositories getestet (und Aerospike ausgewählt), viel experimentiert, Wissen in Artikeln geteilt, auf Konferenzen und nicht nur.

Wenn Sie jedoch entscheiden, dass wir nur arbeiten, ist dies nicht der Fall. Jedes Team hat sein eigenes Budget für die Teambildung. Unsere Kollegen besuchten Amsterdam, Edinburgh, Prag und andere Städte. Und letztes Jahr haben wir eine Hauptversammlung der Abteilung in Kroatien organisiert:


Und wir wissen auch, wie man Photoshop macht.

Beim Umzug nach London und ins Büro in Soho Wir haben es bereits gesagt, daher werden wir uns nicht mit den Details in diesem Artikel befassen - zeigen Sie nur ein paar Fotos.



Großes Foto










Einstellungsereignis ist der einfachste und schnellste Weg, sich unserem Team anzuschließen. Wir akzeptieren Antworten auf den Test bis einschließlich 1. März. Dann nehmen wir uns eine Woche Zeit, um die Ergebnisse zu analysieren und diejenigen anzurufen, die mit den Aufgaben fertig wurden. 
 
Wenn Sie für uns in London arbeiten möchten, aber den Test nicht ablegen möchten, gibt es eine andere Möglichkeit: Antworten Sie einfach auf offene Stellen auf unserer Website . Diese Möglichkeit ist immer verfügbar.

Wenn Sie Fragen haben, können Sie diese gerne in den Kommentaren stellen oder mir private Nachrichten senden. 

Viel Glück

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


All Articles