Kotlin, IT in Estland und (plötzlich) der Tunnel zwischen Tallinn und Helsinki: ein Interview mit Anton Keks

Kürzlich wurde in unserem Blog ein sehr spezifischer Beitrag über Kotlin veröffentlicht: nicht sehr ernst, eher oberflächlich und unerwartet peppig. Wir sind uns jedoch bewusst, dass es schlecht ist, eine Technologie zu kritisieren, indem man sie mehrere Tage lang studiert. Und so haben wir uns dieses Mal entschlossen, mit einer Person über Kotlin zu sprechen, die auf Prod ab Version 1.0 darüber schreibt.



Der Name Kotlin ist bereits heute kaum zu überraschen, insbesondere in der Android-Entwicklung. Es war Anfang 2016: Die Nachfrage war viel geringer, die offizielle Unterstützung für Google kam nicht in Frage, und das Schreiben über Kotlin war ein kühner Geist. Anton Keks wurde einer dieser Draufgänger, und später schenkte er Kotlin auch viel Aufmerksamkeit (zum Beispiel trat er zweimal bei KotlinConf auf). Deshalb haben wir uns entschlossen, ihn zu fragen, wie sich das Leben des Kotlin-Entwicklers im Laufe der Zeit verändert hat.

Und um nicht zweimal aufzustehen, behandelten sie ein anderes Thema. Anton ist Mitbegründer des estnischen Unternehmens Codeborne, das extreme Programmierkenntnisse praktiziert. Gleichzeitig lernten sie, was in Estland mit IT zu tun hat und wie man dort ein eigenes Unternehmen gründet.

- Wie hast du angefangen in Kotlin zu schreiben und wie benutzt du es jetzt?
- Beginn der Verwendung ab Anfang 2016 ab Version 1.0. Mein erstes Projekt in Kotlin war das sicherste: ein Plug-In für IntelliJ IDEA, das ich für einen japanischen Kunden durchgeführt habe. Danach habe ich meine persönlichen Projekte von Java nach Kotlin übertragen und versucht, sie für das Backend zu verwenden.

Im letzten Jahr haben wir die Sprache im Backend im Bankumfeld verwendet und das große Java-Projekt schrittweise nach Kotlin verlagert. Und wir schreiben Microservices darauf, und es gibt sauberes Kotlin. Wenn Sie ein Projekt nur auf Kotlin haben, wird alles noch angenehmer: Sie müssen nicht über die Interoperabilität mit Java nachdenken.

- Seit Sie die Sprache von Version 1.0 auf die heutige Version 1.3 gesehen haben - wie hat sich diese aus der Sicht des Entwicklers geändert, der darauf geschrieben hat?
- Am Anfang dachte ich, seit der Release-Version ist dann schon alles super und wird ohne Probleme funktionieren. Es stellte sich heraus, dass dies nicht ganz der Fall war, und die erste Lücke zwischen 1,0 und 1,1 ist größtenteils eine Korrektur der Aktien, eine Verbesserung der Performance usw. In den Versionen 1.2 und 1.3 geht es jedoch um neue Funktionen.

Zum Beispiel können Coroutinen, die in 1.3 stabil geworden sind, einen großen Unterschied machen. Ich habe mit ihnen herumgespielt und bin sehr zufrieden. In der Produktion haben wir sie jedoch noch nicht ausprobiert: Alles liegt immer noch in den Schwierigkeiten, die mit JDBC-Treibern verbunden sind. Bei der Entwicklung für Android ist es jedoch einfacher, ein asynchrones Modell zu erstellen, sodass Android-Entwickler Coroutinen bis 1.3 verwendeten.

Und was immer noch sehr interessant ist: In Version 1.2 wurde experimentelle Unterstützung für Projekte mit mehreren Plattformen angezeigt. Es wurde möglich, mit Kotlin / JS in JavaScript und mit Kotlin / Native in nativem Code zu kompilieren. Derzeit ist das Kompilieren in JavaScript für mich jedoch beängstigend, und bei Native besteht das Hauptproblem darin, dass Kotlin über eine sehr kleine Standardbibliothek verfügt. Bei der JVM ist Kotlin stark von der Standard-Java-Bibliothek abhängig. Und in Kotlin / Native können Sie theoretisch alle nativen Bibliotheken verwenden, aber dann verlieren Sie "vollständige plattformübergreifende", alles wird getrennt. Derzeit arbeitet JetBrains jedoch daran, und plattformübergreifend kann eine große Zukunft haben. Plattformübergreifende iOS / Android-Anwendungen sind das, was viele möchten.

- Sowohl Xamarin als auch React Native haben bereits versucht, sie uns zu geben ...
"Sie alle haben ein Problem, mit dem Kotlin nicht konfrontiert ist." Im Fall von React Native, Xamarin und dergleichen muss das Framework mit den Betriebssystemversionen Schritt halten. Es bricht ständig etwas, und all diese Rahmenbedingungen halten nicht mit. Sie befinden sich in einem unverständlichen Zustand, wenn bereits eine neue Version des Betriebssystems veröffentlicht wurde und Ihr Framework immer noch nicht funktioniert und Sie noch etwas tun müssen. Dies ist der unangenehmste Moment. Und mit Kotlin in diesem Sinne ist alles anders - sie verwenden direkt alle Standard-APIs und -Bibliotheken aus der Sprache.

- Oft erscheint eine Funktion in Kotlin als "experimentell" und kann vor einer stabilen Version geändert werden. Gefällt dir dieser Ansatz? Wenn Sie experimentelle Funktionen verwenden, wie stark ändern sich diese und wie stark müssen Sie sie wiederholen?
- Ja, ich mag es. Da es in Beta-Versionen und Release-Kandidaten 1.3 wirklich viele Fehler gab (selbst für meinen Bericht mit Puzzlern habe ich ein paar Puzzler zu diesem Thema gefunden), haben sie diese in der endgültigen Version behoben, und das ist sehr gut.

In Coroutinen sind einige Dinge etwas komplizierter geworden, aber es ist klarer geworden, was passiert: Zum Beispiel wurde es notwendig, den Kontext den Coroutinen expliziter zu vermitteln. Und am Ende wird der Code mit Coroutinen, der unter Kotlin 1.2 geschrieben wurde, jetzt einfach nicht kompiliert. Gleichzeitig sind diese Änderungen jedoch nicht so groß, dass eine Migration schwierig war.

- Wenn wir nicht über die Sprache selbst sprechen, sondern zum Beispiel über die IDE, wohin ging die Entwicklung? Wie war es vorher und jetzt was?
- Da JetBrains sowohl die Sprache als auch den Compiler und die Tools produzieren, gab es eine beispiellose Situation hinsichtlich der Unterstützung in der IDE. Sehr oft, wenn eine Sprache geboren wird, werden Early Adopters zunächst in einem Texteditor ohne Hervorhebung und dergleichen darin geschrieben. Und mit Kotlin war dies nicht einmal bis zur Version 1.0, die Unterstützung in der IDE war sofort.

Es war jedoch nicht ideal und verbessert sich im Laufe der Zeit ständig. Mit jeder Nebenversion werden Inspektionen hinzugefügt. Und was jetzt ist, ist viel besser als es war. Zum Beispiel einer dieser Fehler, auf den ich gewartet habe: Es gibt Vorlagenzeichenfolgen in Kotlin, und ich wollte versuchen, sie anstelle einer anderen Vorlagensprache in meinen Projekten zu verwenden. Aufgrund eines Fehlers in der IDE wurde die Hervorhebung jedoch unterbrochen, sobald die Variable in der Vorlagenzeichenfolge gestartet wurde in Kotlin. Und jetzt ist es endlich behoben, also habe ich angefangen, es zu benutzen. Im Moment habe ich keine spezifischen Dinge mehr, die nicht passen würden.

- Was ist mit der Entwicklung des gesamten Ökosystems - der Community, den Reaktionen auf den Stapelüberlauf, den Frameworks?
- Soweit ich sehen kann, ist die Community sehr aktiv, es gibt viel Aktivität in Slack. Der Stapelüberlauf wurde bereits ausreichend geschrieben. Vielleicht ist das einzige Problem, dass es bei Google manchmal einige Beiträge gibt, die vor Version 1.0 geschrieben wurden, als einige Funktionen völlig anders waren. Sie müssen der Relevanz folgen.

Es gibt Frameworks, die sofort speziell für Kotlin erstellt werden. Zum Beispiel ein ausgezeichnetes Framework für Unit-Tests MockK, es ist auf Kotlin zugeschnitten, es gibt viel schönere APIs. Darüber hinaus unterstützen viele Java-Frameworks Kotlin jetzt speziell, nicht dass dies aufgrund seiner Interoperabilität unbedingt erforderlich ist, sondern sie fügen einige Chips hinzu oder machen die Verwendung noch komfortabler.

- Die Explosion der Popularität in der Android-Welt hat nicht zu einer Tendenz in der Community geführt, wenn sich alle nur um Android kümmern und andere Plattformen in den Hintergrund getreten sind?
"Ich fühle irgendwie überhaupt keinen Versatz." Natürlich hat die Entscheidung von Google, Kotlin zur offiziellen Sprache für Android zu machen, das zunehmende Interesse an der Sprache dramatisch beeinflusst, aber es scheint mir, dass nicht nur Android, sondern auch das Interesse an der Sprache im Allgemeinen erschossen wurde. Es gab viele Android-Entwickler bei KotlinConf, aber es gibt auch viele, die Serveranwendungen, Desktops und sogar JS schreiben: Ich habe Leute getroffen, die das Schreiben von Code sowohl für den Client als auch für den Server wirklich verwenden. Und es gibt kein Gefühl, dass es "eine Sprache für Android" ist. Obwohl Android zu einem Treiber von Interesse geworden ist, ist es immer noch eine Allzwecksprache.

- Bei neuen Technologien besteht die ewige Angst vor "interessant, aber Sie können es noch nicht in die Produktion ziehen", und in Android gibt es kein solches Problem, aber außerhalb von Android gibt es immer noch eine Frage. Wenn solche Bedenken für Codeborne relevant sind, was hat sich in der Zeit, in der Sie Kotlin verwenden, geändert?
- Wir wählen die Technologie hauptsächlich selbst aus, aber es kommt häufig vor, dass der Kunde auch an der Entscheidungsfindung teilnehmen möchte. Und im Moment, wenn wir Kotlin zu verschiedenen Projekten bringen, gibt es keine Einwände. Was sich geändert hat: Früher hatten Kunden noch nichts von Kotlin gehört, jetzt ist es bereits in der mündlichen Verhandlung. Und jetzt, wenn wir sagen: „Wir beginnen, zu Kotlin zu wechseln“, besteht zum Beispiel keine Angst mehr, dass er verschwinden wird. Es gibt die Kotlin Foundation, dort JetBrains und andere Unternehmen in guter finanzieller Verfassung. Und die Unterstützung der Community ist großartig. Im Allgemeinen besteht das absolute Vertrauen, dass Kotlin nirgendwohin geht.

- Viele kommen jetzt nach Kotlin, nachdem sie die beschriebenen Phasen der Sprachentwicklung übersprungen haben. Dies kann nur beneidet werden, weil sie bereits eine ausgereiftere Technologie erhalten haben oder ohne die Erfahrung eines frühen Anwenders etwas Wichtiges verlieren?
- Es kommt auf die Person an, was für sie interessanter ist. Durch eine frühere Verbindung könnte man persönlich an der Entwicklung teilnehmen, die Formation beeinflussen. Vor allem vor Version 1.0 gab es eine Zeit, in der man mit dem JetBrains-Team sprechen, seine Entscheidungen beeinflussen und ihnen helfen konnte. Und jetzt wendet sich das Team immer noch an die Community und berücksichtigt deren Meinung, aber gleichzeitig wurden bereits viele grundlegende Entscheidungen getroffen, die sich nicht ändern werden. Daher hängt alles vom persönlichen Interesse an solchen ab.

Meiner Meinung nach hilft es sehr, Technologie für die Entwicklung einzusetzen, wenn sie nicht mehr roh ist: Sie verbringen Zeit mit Ihren Aufgaben und nicht mit Fehlern. Und Ihr Tool funktioniert nur für Sie. Ich denke, jetzt ist die Zeit gekommen, in der diejenigen, die Kotlin nicht probieren - jetzt sind sie wirklich sehr spät und verlieren viel.

- Nun, da im Allgemeinen alles in Ordnung ist, was fehlt Ihnen persönlich bei Kotlin?
"Vielleicht zwei kleine Dinge." Ganz minderjährig ist ein ternärer Operator. Es ist klar, dass Sie, wenn es sich um einen Ausdruck handelt, ihn einfach verwenden können, aber vertrauter schreiben möchten.

Etwas größer - paketlokaler Zugriff. Es scheint mir, dass intern in Kotlin eher ein Fehler ist. Sie haben versucht, das zu verbessern, was in Java ist, aber meiner Meinung nach haben sie es vergebens getan. In Java hat dies mehr oder weniger gut funktioniert, und intern ist nur nützlich, wenn Sie eine Bibliothek schreiben, keine reguläre Anwendung. Und ich vermisse die feinkörnige Zugriffskontrolle, die Java hat.

Nun, ich möchte eine plattformübergreifende Entwicklung entwickeln, über die ich bereits gesprochen habe. Dort müssen Sie an einer Standardbibliothek arbeiten. Es gibt aber auch das Ktor-Framework, und es ist jetzt eine solche Testumgebung, um alles auf Kotlin zu schreiben, und einige Bibliotheken sind jetzt aus diesem Projekt hervorgegangen



- Kommen wir zum zweiten Teil der Fragen: Estland, Codeborne, Unternehmertum. Zunächst eine unnahbare Frage: Wie ist es, in Tallinn zu leben?
- Vielleicht bin ich nicht ganz die richtige Person für diese Frage, weil ich ein Fan von Tallinn bin. Es scheint mir, dass dies der beste Ort auf der Erde ist. Einerseits haben wir die Europäische Union, die europäische Währung, die europäische Ordnung und die europäische Reinheit. Auf der anderen Seite können Sie die russische Sprache ziemlich häufig verwenden (ein Drittel der Bevölkerung spricht sie mit Sicherheit), und wir sind geografisch nah beieinander. Viele IT-Spezialisten aus Russland, der Ukraine und Weißrussland kommen jetzt zu uns - ich denke, genau aus diesen Gründen.

Die Stadt ist nicht so groß wie Moskau oder St. Petersburg, so dass Sie nicht viel Zeit mit dem Transport verbringen und es oft bequem ist, zu Fuß zu gehen. Wenn Sie Abwechslung wünschen, ist es gleichzeitig einfach, ins Ausland zu gehen. Und in Bezug auf die Preise ist Tallinn billiger als England und andere europäische Länder, sodass der Lebensstandard, den Sie sich in Tallinn für das gleiche Gehalt leisten können, viel höher ist.

Von den Minuspunkten nur das Klima. Im Sommer ist es sehr gut und im Winter ist es schön mit Schnee, aber der November ist ein sehr deprimierender Monat.

- Nun, Sie gewöhnen sich nicht an die letzten Petersburger / Moskauer. Und was ist mit dem Land mit IT?
- Wir haben einen sehr hohen technologischen Entwicklungsstand. Alles, was mit dem „elektronischen Staat“ zu tun hat, entwickelt sich aktiv - bis hin zum E-Residence-Programm, bei dem Sie online in einem Land ansässig werden können, ohne jemals dabei zu sein. Viele Online-Dienste, die in anderen Ländern neu sind, werden von uns als selbstverständlich angesehen. Startups werden angezeigt - beispielsweise war Skype ursprünglich estnisch. Jobs gibt es auch reichlich. Daher würde ich sagen, dass es für IT-Spezialisten viele interessante Dinge gibt.

- Es klingt plötzlich: Intuitiv scheint es, dass sich solche IT-Zentren an Orten wie dem Tal befinden und nicht in einem Land mit weniger Einwohnern als Nowosibirsk.
- Nun, im Tal ist es nur eine IT-Person, die schlimmer sein könnte. Es gibt unrealistische Immobilienpreise und im Allgemeinen die Lebenshaltungskosten.

Und vielleicht wird in russischen Quellen wenig über Estland geschrieben, aber wenn man sich die internationale Presse ansieht, dann gibt es viele Texte im Geiste des „elektronischen Staates, der erste der Welt“ (hier ein gutes Beispiel ). Wenn ich zu IT-Konferenzen auf der ganzen Welt gehe, sagen sie zu mir: „Estland? Oh, du hast so eine IT dort! "

Außerdem gibt es in der Nähe von Tallinn Helsinki, zwischen ihnen eineinhalb Stunden mit dem Wasser oder 15 Minuten mit dem Hubschrauber. Und es gibt Verhandlungen, um Tallinn-Helsinki zu einem europäischen IT-Hub zusammenzuführen. Ein Tunnel zwischen zwei Städten ist möglich, dann wird es der längste Tunnel der Welt sein.

- Ist es in einem Land mit einer kleinen Bevölkerung mit großer IT wahrscheinlich, dass es hauptsächlich für ausländische Kunden funktioniert?
- Ja, jedes Unternehmen, das hier auftaucht, möchte so schnell wie möglich auf den internationalen Markt kommen. Der innere ist klein in der Anzahl der Menschen. Aber dank der Tatsache, dass wir in der Europäischen Union sind, haben wir sofort den Markt der Europäischen Union. Außerdem ermöglicht ein kleiner Inlandsmarkt der IT, einige Dinge vor der Veröffentlichung der Welt zu testen.

- Viele Russen in den Köpfen der baltischen Staaten verschmelzen, daher werden wir klarstellen: Inwieweit gilt das, was über Estland gesagt wurde, für Lettland und Litauen?
- Eigentlich nicht sehr zutreffend. Es gibt einige Schnittpunkte, aber die Mentalität ist unterschiedlich, für Letten und Litauer ist es näher an Osteuropa. Die Geschichte der Länder ist auch völlig anders. Wenn Sie also durch Tallinn, Riga und Vilnius spazieren gehen, werden Sie das Gefühl haben, dass sie unterschiedlich sind, und wenn Sie länger leben, wird es noch mehr Unterschiede geben.

Es war einmal eine Zeit, in der ich sowohl mit Letten als auch mit Litauern zusammengearbeitet habe - dann erwiesen sich die Esten als die fortschrittlichsten in der IT, dann adoptierten sie die Letten und die Litauer noch später.

- Sie sind einer der Mitbegründer der estnischen Firma Codeborne - erzählen Sie uns zunächst einmal davon.
- Wir sind klein, wir sind 32. Alle Entwickler, wir nennen sie nicht "Entwickler", sondern "Software-Handwerker" - dies ist ein sehr wichtiger Unterschied, da wir keine Analysten, Tester oder Produktmanager haben. Wir haben universelle Fullstack-Mitarbeiter, die neben der Fullstack-Entwicklung auch direkt mit dem Kunden in Kontakt treten, ohne dass Vermittler Aufgaben für sich selbst festlegen können. Dank dessen ist die Effizienz um ein Vielfaches höher als bei vielen anderen IT-Unternehmen. Wir können Dinge mit zwei oder vier Personen bauen, für die Tausende von Personen für die bedingte Sberbank benötigt werden. Ich scherze übrigens nicht, wir haben mit Sberbank über dieses Thema gesprochen, sie waren an einer Interaktion interessiert. Aber es scheint mir, dass im großen Maßstab eine solche Effizienz wie unsere kleinen unmöglich ist. Deshalb wollen wir nicht zu viel wachsen. Unternehmenskultur - schnell handeln, kleine Mengen von Menschen super effizient erledigen, große Probleme lösen, damit der Kunde nicht sechs Monate wartet. Hierzu verwenden wir beispielsweise extreme Programmierung und Paarprogrammierung.

- Ist all dieses extreme Extrem ein besonderes Merkmal von Codeborne oder ist es typisch für Estland im Allgemeinen? Könnten Sie in einem anderen Land?
- Sagen wir einfach, dass das Aggel in Estland typisch ist, kleine Teams sind ziemlich typisch. Aber ich denke, wir sind anders und sind noch weiter gegangen. Es ist unwahrscheinlich, dass es viele Unternehmen gibt, die Paarprogramme in solchen Zahlen durchführen und so entwicklerorientiert sind.

Ich denke, dass dies in jedem Land möglich ist. Wir haben kein Modell von Grund auf neu entwickelt. Wir haben uns auf mehrere Unternehmen konzentriert, von denen sich eines in Chicago befindet. Wir haben einige Blogs gelesen und hauptsächlich in Amerika habe ich einen Ansatz gesehen, der unserem am nächsten kommt.

Ich denke, der Ansatz der Kunden hat anfangs geholfen. Stundenlöhne sind in Estland üblich. Sie können sagen, dass Sie so viele menschliche Stunden sehen. Gemeinsam werden wir herausfinden, wie wir mit dem verfügbaren Budget so gut wie möglich umgehen können. In Estland muss diese Idee nicht verkauft werden. Und zum Beispiel sind in Russland die meisten Kundenunternehmen nicht bereit dafür, sie wollen für das Projekt bezahlen, obwohl es sich für den Kunden in der Regel als teurer herausstellt.

- Zu Beginn des Interviews wurde der japanische Kunde erwähnt - ist das typisch? Wenn Kunden im Ausland und sogar mit welchen Sprachen müssen Sie sich befassen?
- Über Japan - ja, normalerweise arbeitet Estland viel mit den Japanern zusammen, sie kommen als ganze Delegationen hierher.

Wir kommunizieren mit fast allen Kunden auf Englisch, nur mit Russisch auf Russisch. Sie sind nicht einverstanden, überhaupt auf Englisch zu wechseln - vielleicht könnten es viele, aber sie sind schüchtern. Aus diesem Grund haben wir festgestellt, dass wir besonders wertvolle Entwickler haben, die Russisch sprechen.

Und wir arbeiten mit anderen Ländern auf Englisch zusammen - obwohl Japanisch normalerweise nicht sehr englisch ist, sprechen normalerweise diejenigen, die Estland für Verhandlungen erreichen. Und selbst in Estland kommunizieren wir oft auf Englisch, weil es in den letzten zehn Jahren sehr kosmopolitisch war, insbesondere in der IT. Viele Experten kamen aus der ganzen Welt, so dass sich fast immer herausstellt, dass nicht alle am Dialog Beteiligten Estnisch sprechen. Ich denke, dies ist auch der Grund, warum es ziemlich einfach ist, nach Estland zu ziehen - die Hauptsache ist, Englisch zu sprechen, Estnisch ist nicht erforderlich.

- Ich denke, viele Entwickler würden theoretisch gerne ein eigenes Unternehmen gründen, aber sie befürchten, dass sie dann überhaupt keine Zeit für die Programmierung haben und die Änderung sich verschlechtern wird. Was zeigen Ihre Erfahrungen mit der Gründung eines Unternehmens in Estland?
"Das würde ich sagen." Codeborne ist ungefähr neun Jahre alt und in dieser Zeit, als jemand das Unternehmen verließ, meistens, um sein eigenes zu gründen. Einerseits ist dies beleidigend, weil wir Menschen gewachsen und erzogen haben, und andererseits ist es schmeichelhaft, dass die Menschen glauben, dass der nächste Schritt nach Codeborne genau das sein kann.

Und ich würde sagen, dass die Gründung eines Unternehmens eine coole Option ist, aber seien Sie wirklich darauf vorbereitet, dass Sie die meiste Zeit (besonders zuerst) Aufgaben haben, die nicht mit der IT zusammenhängen. « », , — .

, - . — , .

— — « ». , « »?
— , flat-. « », , , — « ». , , , core team 10 , 30 - . .

— « »: ? ?
— : . ( ), — . . : , , , .

— , - . ?
— . , , , . Codeborne, — , , - . , ( ) , — , - . . .

Dieses Wochenende präsentierte Anton auf der Mobius- Konferenz in Moskau den zweiten Satz Kotlin-Puzzler . Neben ihm hat das Programm auch viele interessante Dinge für mobile Entwickler (zum Beispiel den Bericht „Kotlin zum Schreiben von allgemeinem Code für Android und iOS“ ).


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


All Articles