Sie werden dem Entwickler von Mobilgeräten sagen, was los ist, bevor das Backend beschrieben wird. Die Hauptsache ist, dass die API dort bequem, verständlich und flexibel sein sollte. Das glauben wir aber nicht.
Bei AppsConf denken wir alle, dass wir manchmal über die mobile Entwicklung hinausgehen und den Hut des Buchstabens T in das T-förmige Modell pumpen müssen. Lernen Sie hier beispielsweise Serversprachen etwas tiefer kennen als: "Ich habe gehört, dass Ruby gestorben ist." Und ein bisschen breiter - das heißt nicht nur bei den populären, sondern auch bei den zweiten und sogar unterirdischen.
Um Sie von der Idee des Introductory-Tracks zu inspirieren, haben wir ein Interview mit Nikita Sobolev aufgenommen. Sie wollten über Programmiersprachen sprechen, aber es stellte sich heraus, dass es sich um Programmierer handelte. Kommen Sie unter den Schnitt, wenn Sie denken, dass es besser ist, nur ein guter Entwickler zu sein und kein Android- oder iOS-Entwickler, und vor allem, wenn Sie damit nicht einverstanden sind. Freitag ist die Zeit zu streiten.
- Wie gefällt Ihnen die Idee einer ganzen Reihe von Überprüfungsberichten zu verschiedenen Technologien vom Backend bis zum Frontend auf der Konferenz zur mobilen Entwicklung, die wir als Einführung bezeichnet haben?
Nikita Sobolev CTO bei wemake.services, Autor der Methodik des Repeatable Software Development Process, Organisator von ElixirLangMoscow, Mitglied des Moskauer Python- Programmkomitees ++ Conf ++ , häufiger Redner bei IT-Konferenzen und Verfechter der Codequalität .
Meiner Meinung nach ist dies der beste Track auf einer mobilen Konferenz.
Ich mag die Idee von engen Spezialisten nicht wirklich. Ich bin der Idee einer T-förmigen Person viel näher - das heißt einer Person, die sich in einer Sache gut auskennt, aber einen weiten Horizont für das Verständnis von Problemen im Themenbereich hat.
Leider scheint es mir, dass mobile Entwickler in diesem Sinne auf sich allein gestellt sind. Die Angelegenheit wird durch die Tatsache verschärft, dass sie sehr stark vom Anbieter abhängig sind. Grob gesagt wird Apple schließen - sie werden in der Kälte verlassen.
Daher gefällt mir die Idee des Einführungs-Tracks sehr gut und die Tatsache, dass Konferenzgäste eingeladen sind, sich umzuschauen, herauszufinden, was andere haben, aus ihren Erfahrungen zu lernen und sich als Spezialist in Bezug auf die Breite der Ansichten zu verbessern.
- Für welche anderen Konferenzen ist diese Idee relevant?Für so viele. Ich habe ein Python-Beispiel zur Hand. Das letzte Mal haben wir Go, Elixir und Julia eingeladen. Dieses Jahr möchte ich das Frontend und den Haskellisten einladen (
Call for Papers ist übrigens bereits geöffnet ). Da Python-Entwickler auch unterschiedlich sind und viele von ihnen als Full-Stack arbeiten, ist es für sie auch nützlich, Wissen von außen zu erhalten.
- Glauben Sie, dass mobile Entwickler eher bereit sind, sich umzuschauen, weil dies für die berufliche Entwicklung notwendig geworden ist, oder war es schon immer so, dass nur die Community gereift ist?Es fällt mir schwer, genau zu beurteilen, wann ich 2010 das letzte Mal eine mobile Anwendung geschrieben habe. Meine Hauptsprache war damals Java, ich nahm Objective-C und schrieb eine Anwendung für iOS. Ich war inspiriert, dachte ich, jetzt werde ich anfangen, das alles zu tun. Aber nein: Es gab keine Speicherverwaltung, es gab keine Bibliotheken, es gab keine Abhängigkeitsverwaltung, das Build-System war widerlich. Seitdem habe ich mich nicht mehr genau mit diesem Bereich befasst.
Und jetzt sehe ich einige Trends, die natürlich mobile Mitarbeiter zu „ernsthafter Programmierung“ bewegen.
In der Vergangenheit waren Sprachen auf diesem Gebiet hoch spezialisiert. Objective-C war nur für die Apple-Entwicklung bestimmt. Und jetzt versuchen sie zum Beispiel, Swift auf den Server zu ziehen und etwas darauf zu tun. Java für das Backend und für Android waren zwei verschiedene Sprachen. Und jetzt ist Kotlin für beide mehr oder weniger ähnlich. JavaScript tauchte in der Welt der Entwicklung mobiler Anwendungen auf, und dies ist eine Art Serversprache und gleichzeitig eine Sprache für das Frontend.
Es gibt eine einzige Infrastruktur , die die Menschen interessiert. Wenn früher (in meinem Fall 2010) die mobile Entwicklung völlig außer Kontakt war, ist jetzt alles anders.
Darüber hinaus ist die Annäherung auf beiden Seiten. Eine engere Plattformintegration gibt den Menschen die Möglichkeit und Notwendigkeit, dieser Integration zu folgen.
- Aber wenn die Integration selbst an den mobilen Entwickler geht, warum sollte er die Sprachen für das Backend verstehen?Ich habe eine philosophische Antwort auf diese Frage.
Wenn Sie ein Android-Entwickler sein möchten, müssen Sie das Backend wahrscheinlich nicht verstehen. Und wenn Sie nur Entwickler sein wollen, ist das natürlich notwendig.
Ein Entwickler ist jemand, der Probleme aus der realen Welt mit Code löst. Dementsprechend können Entscheidungen überall getroffen werden, auch in einer mobilen Anwendung, auf einem Server, auf einem Frontend. Ein guter Entwickler kann im Prinzip jedes reale Problem mit Entwicklungswerkzeugen lösen.
Es ist klar, dass es einen Zugang zu jedem dieser Werkzeuge gibt, die Anhäufung von Praxis usw., aber eine starre Fixierung auf eine Technologie ist meiner Meinung nach schädlich für die Person, die daran beteiligt ist.
Zumindest die Technologie ist veraltet. Sprachen, die vor 15 Jahren populär waren, werden heute fast nie mehr verwendet. Die Fähigkeit, ständig neue Dinge zu entwickeln und zu lernen und Nachbarn zu betrachten, ist für jeden Entwickler von entscheidender Bedeutung. Insbesondere ist es wichtig, das Backend zu verstehen, da das Backend für die gesamte Entwicklung von grundlegender Bedeutung ist. Heute kommuniziert alles irgendwie mit dem Server.
Darüber hinaus fühlen sich Mobilitätsbenutzer mit anderen Entwicklern unwohl, denen es leichter fällt, eine gemeinsame Sprache zu finden. Das Front-End und das Back-End sind noch näher als der Entwickler mobiler Anwendungen. Mein Bericht wird in gewissem Maße dazu beitragen, das Problem der menschlichen Kommunikation zu schließen und zur Integration beizutragen.
Wie tief oder oberflächlich Sie verstehen müssen, ist eine andere Frage. Vor allem, wenn es sich um einen mobilen Entwickler handelt, der, was auch immer man sagen mag, tief in sein Fachgebiet eintauchen muss.
Ich bin dafür, dass Sie sich aktiv umschauen müssen und in der Vergangenheit. Es ist wichtig, die Geschichte der Software und Programmierung zu studieren. Wenn Sie die Geschichte nicht kennen, werden Sie viele Dinge neu erfinden, die Sie sich bereits ausgedacht und aus völlig objektiven Gründen aufgegeben haben. Ich leite einen
Telegrammkanal, in dem ich Links zu coolen Open-Source-Projekten teile, ohne an die Sprache gebunden zu sein. Ich versuche, wichtige Ideen hervorzuheben.
- Hat ein Entwickler mobiler Anwendungen genügend allgemeine Ideen oder nicht?Das hängt vor allem von der Umgebung ab. Wenn eine Person das Backend in ihrem Unternehmen direkt beeinflussen muss: um korrektere Aufgaben für sie festzulegen, am Prozess teilzunehmen, möglicherweise um diese Personen zu verwalten, müssen Sie dies gründlich herausfinden.
Wenn Sie sich jedoch nur mit mobiler Entwicklung beschäftigen, reicht es aus, eine oberflächliche Vorstellung davon zu haben, was dort passiert, welche Sprachen, Probleme und gängigen Lösungen es gibt. Für solche Leute wird auch
mein Bericht über Saint AppsConf berechnet. Natürlich kann eine ausführliche Darstellung nicht in einem Bericht gegeben werden.
- Was braucht ein Entwickler noch, um ein cooler Entwickler zu sein?- Die Fähigkeit zu lesen und zu verstehen, was gelesen wird.
- Fähigkeit zu schreiben, drücken Sie Ihre Gedanken schriftlich aus.
- Die Fähigkeit zu sprechen, um diese Gedanken mündlich auszudrücken.
- Fähigkeit zuzuhören und andere Menschen zu hören.
- Den Themenbereich verstehen. Der Entwickler muss verstehen, was er tut, weil er das Problem des Lebens auf technische Weise löst.
- Und natürlich die Technik verstehen.
Diese Fähigkeiten scheinen mir genug zu sein. Alles andere kann entweder daraus abgeleitet oder verworfen werden.
- Sie denken also, dass Sie den Themenbereich verstehen müssen?Natürlich begrenzt, aber notwendig. Zum Beispiel haben wir gleichzeitig 3-4 Projekte. Natürlich verstehe ich nicht alle perfekt, aber ich verstehe die grundlegenden Konzepte, mit denen ich arbeite. Wie sie miteinander verbunden sind, wie sie sich auf das Geld auswirken, wo die Ausgaben sind, wo die Einnahmen sind, warum all dies für das Geschäft notwendig ist.
Und ich rate auch anderen Entwicklern. In unserem Unternehmen erstellen wir für sie Unterlagen, wie das Geschäft funktioniert, welche Probleme wir lösen, warum dies nicht von Hand gelöst werden kann. Manchmal ist es billiger, eine Person so einzustellen, dass sie beispielsweise einmal ein Warenverzeichnis durchgesehen hat. Wenn wir den Prozess automatisieren, müssen Sie verstehen, warum.
- Schauen wir uns ein Beispiel an. Wenn Sie einen Lieferservice für eine Bäckerei schreiben, müssen Sie verstehen, wie die Lieferung funktioniert, aber Sie müssen nicht verstehen, welche Arten von Brötchen diese Bäckerei backt?Und in einigen Arten von Brötchen auch. Weil einige Brötchen eine Stunde und einige zwei Tage gelagert werden können. Dementsprechend wird ihre Lieferung unterschiedlich sein.
- In Ihrem Bericht versprechen Sie, mehrere beliebte Sprachen gleichzeitig zu berücksichtigen, mehrere Sprachen aus der zweiten Reihe und mehrere Sprachen aus dem tiefen Untergrund. Welche Sprachen werden sie sein?Ich werde nicht die Sprachen nehmen, die Konferenzteilnehmer bereits kennen: Kotlin, Java, JavaScript. Es macht keinen Sinn, über sie zu sprechen, wenn der Großteil des Publikums bereits mit ihnen vertraut ist. Ich habe mich entschlossen, über Sprachen zu sprechen, die die Leute garantiert nicht kennen, weil mobile Anwendungen überhaupt nicht auf sie schreiben. Es gibt viele zur Auswahl.
Grundsätzlich liebe ich Programmiersprachen. Ohne eine bestimmte Aufgabe. Ich mag die Programmiersprache als Idee. Einige Leute dachten: „Es gibt so viele Probleme, dass sie auf einmal kombiniert und gelöst werden können. Machen wir eine Sprache dafür. “ Er wird eine bestimmte Liste von Problemen lösen. Und eine andere Sprache löst andere Probleme, da normalerweise nicht alle Probleme gleichzeitig gelöst werden können.
Ich mag es wirklich zu beobachten, welche Probleme jede Sprache löst und warum dies in der Praxis notwendig sein kann. Die Sprache selbst wird für mich zum Objekt intellektueller Kunst. Eine große Anzahl von Menschen arbeitete, dachte, entwarf und optimierte. Das ist sehr interessant, deshalb folge ich vielen Programmiersprachen.
Die Sprachen, die ich für den Bericht ausgewählt habe, weisen mehrere interessante Merkmale auf. Erstens sind sie umstritten. Keine von ihnen ist eine Sprache, die letztendlich in allem im Bewusstsein der Gemeinschaft gut ist.
Jeder weiß, dass Python langsam ist, aber es ist immer noch die beliebteste Sprache, es wird überall verwendet. Ich werde versuchen zu erklären, warum es verwendet wird.
Und wenn man von Ruby spricht, sagen die Leute als erstes, dass Ruby tot ist. Tatsächlich beschäftigen sich Ruby-Entwickler heute mehr als in jeder anderen Sprache mit Architektur und implementieren eine Vielzahl von Ideen aus anderen Sprachen - funktional, objektorientiert und machen etwas sehr Interessantes daraus.
Wenn wir über Go sprechen, hat Go einen sehr engen Anwendungsbereich, aber im Zuge des Hype haben alle angefangen, darüber zu schreiben.
Jede der Sprachen, die ich während der Rede vertreten wollte, hat einen Konflikt.
Als Charakter in einer guten Geschichte. Und das Wesentliche des Konflikts ist, dass einige Dinge gut funktionieren und andere nicht. Dieser Konflikt wird an der Spitze des Berichts stehen.
- Denken Sie, dass Sie Ihre Sprache für jede Aufgabe, jedes Projekt auswählen müssen?Dies ist eine gute Idee, funktioniert aber in der Praxis nicht. Genau dort, wo wir angefangen haben. Es gibt Android-Programmierer, es gibt Python-Programmierer, die, wenn Sie ihnen den Ruby-Code zeigen, der dasselbe ist, nur im Profil, sagen: "Oh nein, alles ist unverständlich, ich möchte nicht verstehen."
Natürlich möchte ich, dass die Leute vielseitiger sind und ein Instrument für die Aufgabe auswählen können, aber es stellt sich heraus, dass die Leute eines wissen und immer dieses Werkzeug nehmen.
Hier wird auch der Einstellungsfaktor hinzugefügt. In unserem Unternehmen konnten wir beispielsweise nicht zwischen TypeScript und Python wählen. Aber wenn ich einen Elixir-Entwickler einstellen muss, werde ich mein ganzes Leben lang nach ihm suchen. Ich kenne solche Entwickler, aber nicht so sehr und nicht so, dass ich sie schnell zu mir locken kann. Daher müssen Sie Ihre Ambitionen moderieren und sich an den Markt und an Kunden anpassen, die auch einen begrenzten Marktstapel haben.
- Sie versprechen einen subjektiven Blick auf fast 10 völlig verschiedene Sprachen. Kennen Sie sie alle wirklich, haben Sie etwas über sie alle geschrieben?Mit jedem auf unterschiedliche Weise, aber natürlich habe ich sie alle zumindest teilweise ausprobiert.
Zum Beispiel schreibe ich auf Rust Open Source und auf Pony habe ich 15 Codezeilen geschrieben, das Tutorial gelesen, bewundert und jetzt möchte ich den Teilnehmern der Konferenz zeigen. Damit auch sie von der Idee inspiriert sind.
- Offensichtlich können Sie in einem Bericht nicht ein vollständiges Bild und Verständnis für jede Sprache vermitteln. Warum sollten Leute zu Ihrem Bericht gehen und ihn nicht googeln?Der Grund ist, dass es völlig anders ist, wenn eine lebende Person es Ihnen sagt. Ein Bericht ist bis zu einem gewissen Grad immer eine Show. Wenn Leute zur Show kommen, erhalten sie nicht nur Inhalte, sondern auch Emotionen. Wenn Sie googeln, erhalten Sie nur Inhalte. Wenn Sie daran interessiert sind, werden Sie es trotzdem googeln. Und das Format der Rede eines lebenden Menschen ermöglicht es im Volksmund und leicht, interessantes Wissen zu erlangen.
- Was werden die Hauptelemente Ihrer "Show" sein?Es gibt viele Sprachen, sie sind alle cool, aber es gibt nichts zu schreiben.
Es gibt viele beliebte Sprachen zur Lösung Ihrer geschäftlichen Probleme: Einstellungen, Kunden, Bibliotheken. Aber sie alle wurden aus einem bestimmten Grund populär. Der Hauptgrund ist in der Regel, dass sie sehr einfach sind. Sie basieren auf einfachen Konzepten, die leicht zu beginnen, aber schwer fortzusetzen sind.
Es gibt Nischensprachen, und es erscheinen bereits sehr interessante komplexe Konzepte, auf denen Sie etwas Großes und Zuverlässiges aufbauen können: Rust mit seinem exzellenten Compiler, Elixir mit seiner absolut panzerbrechenden virtuellen Maschine, Haskell mit seinem Typsystem usw. Sie können aber nicht nur wegen der hohen Eintrittsschwelle populär werden.
Die meisten Entwickler, die etwas lernen möchten, nehmen beliebte Sprachen und schreiben ihnen. Und die Frage, warum etwas anderes benötigt werden könnte, stellt sich nicht, denn in den Projekten, mit denen sie arbeiten, ist nichts Komplizierteres erforderlich.
Für den Entwickler ist es sehr wichtig, die Einschränkungen des Tools zu verstehen.
Um die Einschränkung zu verstehen, müssen Sie sich an Ihre Stirn lehnen, ein Problem bekämpfen und dann einen Schritt zurücktreten und es aus der Ferne betrachten. Nur in den Berichten von Menschen, die jahrelang mit etwas gearbeitet haben, manifestiert sich dies. Und ich kenne diese Leute gut, ich habe verschiedene Fälle angesammelt und weiß, wo ich mich ausruhen kann. Und ich kann meine Erfahrungen und die Erfahrungen anderer Menschen zusammenfassen.
- „Hallo Welt“ auf Haskell zu schreiben ist schon eine große Leistung, aber ist das nicht genug?Ja, Sie müssen in der Gemeinschaft der Funktionäre kochen. Um zu hören, welche Probleme sie lösen, welche Berichte sie erstellen, können Sie den Abschnitt verstehen.
In der Haskellistengemeinschaft ist das Eintrittsproblem beispielsweise sehr akut. Sie können es immer noch nicht lösen und ihre Sprache für Anfänger freundlicher machen. Historisch gesehen verwendet Haskell eine völlig andere Syntax und völlig andere Regeln, nur um zumindest etwas zu schreiben. Selbst ein erfahrener Entwickler wird zunächst völlig unklar sein, was in diesem Code passiert.
Und es geht nicht nur um funktionale Programmierung. Wenn Sie sich mit den Funktionen von Elixir vertraut machen, wird dies viel einfacher. Elixir ist in der Syntax Ruby sehr ähnlich. Zuerst werden Sie den Unterschied nicht sehen, Sie können genauso schreiben wie in Ruby. Und erst dann wird klar, dass dies eine funktionale Sprache ist. Sie bemerken dies erst irgendwann und entdecken dann zusätzliche Möglichkeiten für sich. Sie verstehen, dass es tatsächlich auf völlig anderen Prinzipien beruht. Wenn Sie diese Basis kennen, können Sie leicht zu einer weniger benutzerfreundlichen Funktionssprache wechseln.
Ordnung ist wichtig.
- Zusätzlich zu den populären Sprachen und Sprachen der zweiten Reihe, die zumindest teilweise zu hören sind, werden Sie völlig unbekannte einführen. Was ist das zum Beispiel für ein Pony?Pony ist eine Open-Source-, objektorientierte, aktionsmodellierte, funktionssichere und leistungsstarke Programmiersprache. Das heißt, stark typisiert, speichersicher, Schauspielersprache. Er ist sehr jung und sehr interessant.
Die Entwickler erstellen eine Sprache, in der Sie wie in Elixir eine sehr große Anzahl von Akteuren erstellen können. Diese Akteure sind jedoch garantiert typsicher. Die Grenzen der Anwendbarkeit dieser Sprache sind noch völlig unverständlich. Aber ich würde sagen, dass er Go treffen kann, und ich unterstütze aktiv alles, was Go treffen kann.
- Was tun, wenn alle Sprachen Mängel und Einschränkungen aufweisen? Was tun?Leiden. Und suchen Sie weiter nach technischer Exzellenz. Dies ist ein unerreichbarer Traum eines jeden Ingenieurs, aber der Prozess, diese Exzellenz zu finden, ist ein großes Ziel.
Saint AppsConf nach 10 Tagen. Das Programmkomitee wählte 35 Berichte und 12 Sitzungen aus, unter denen jeder Entwickler von Mobilgeräten Ideen zur Lösung alltäglicher Probleme sowie zur beruflichen und persönlichen Entwicklung finden kann. Wir treffen uns am 21. und 22. Oktober in St. Petersburg!
Eine Bonusfrage für diejenigen, die ihre Erfahrungen teilen möchten, aber aus irgendeinem Grund noch kein Redner geworden sind. Sie sprechen oft, warum brauchen Sie es und was motiviert Sie?Ich habe drei Ziele:
- Viel Spaß, ich mag Konferenzen sehr, es macht Spaß und ist interessant.
- Lokal - Entwickler und Kunden finden.
- Global - um unsere Branche besser zu machen . Ich sehe viele Probleme und möchte das Schlechte positiv beeinflussen und gut machen.
Ein Redner auf einer Konferenz kann eine Branche durch ein Publikum beeinflussen. Er vom Podium aus kann seinen Standpunkt unter Beweis stellen und Menschen zu Veränderungen motivieren.