PĂ€dagogische Brettspiele fĂŒr Programmierer

Es gibt eine interessante Situation auf dem Arbeitsmarkt in der Java-Entwicklung. Es gibt mehr als 100.000 aktive LebenslĂ€ufe fĂŒr Entwickler und eine freie Stelle pro Lebenslauf. Gleichzeitig beschweren sich Arbeitgeber und Personalagenturen ĂŒber den Personalmangel, und trotz Tausender LebenslĂ€ufe ist es schwierig, einen guten Spezialisten zu finden. Zum Beispiel hat ein Java-Entwickler ein knappes Produkt: Es ist selten, dass ihre KĂŒrzungen nicht betroffen sind, die GehĂ€lter steigen und der Wettbewerb sinkt. Wir werden die Ursachen des PhĂ€nomens nicht untersuchen, sondern ĂŒber eine Möglichkeit zur Lösung dieses Problems sprechen.



Sie können lange nach technischen Spezialisten suchen, aber die Arbeit wartet nicht, sodass Sie nicht genĂŒgend qualifiziertes Personal einstellen und dabei schulen mĂŒssen. Zu den Optionen: Selbststudium in Ihrer Freizeit oder Kurse und Seminare am Arbeitsplatz, aber Sie können Spiele auswĂ€hlen. Artyom Larin ( artem_larin ) erklĂ€rt, warum traditionelle Lehrmethoden unzuverlĂ€ssig sind und warum Spiele in gewisser Weise besser sind als andere.

Spezielle Team-Brettspiele vermitteln nicht nur komplexe Themen der Softwareentwicklung, wobei jeder Teilnehmer aktiv einbezogen wird, sondern bilden auch eine gemeinsame Fachsprache im Team, lösen das Teambuilding-Problem und bilden eine Unternehmenskultur.



Über den Sprecher: Artyom Larin in Java seit 2004. Er arbeitet als fĂŒhrender Entwickler und als Senior, bildet regelmĂ€ĂŸig Kollegen aus, hĂ€lt VortrĂ€ge und interne Schulungsseminare. Leider gab es eine negative Lernerfahrung, die Artyom zu der Idee fĂŒhrte, dass Brettspiele das sind, was in der Entwicklung benötigt wird.



Es wird darum gehen, wie man nicht harte, sondern harte technische FĂ€higkeiten in das Team einbringt. Der Bericht besteht aus zwei Teilen: humanitĂ€r und kreativ. Selbst wenn Sie kein Technikfreak sind, mĂŒssen Sie im zweiten Teil Ihr humanitĂ€res Gehirn belasten, denn ohne technische Informationen werde ich nirgendwo ĂŒber harte FĂ€higkeiten und deren Nivellierung sprechen.

IT-Probleme


Ich glaube, dass es ein großes Problem in der IT gibt - und das ist Personalmangel . Das Thema wurde schon oft diskutiert, es gibt Statistiken von hh.ru und Veröffentlichungen zu diesem Thema. ÜberprĂŒfen Sie fĂŒr alle FĂ€lle die Statistiken selbst. Wenn Sie "Java" in die Suchmaschine von hh.ru eingeben, werden in Russland 5-6.000 Jobs angezeigt, und die Anzahl der LebenslĂ€ufe auf derselben hh.ru betrĂ€gt mehr als 100.000. Es scheint, dass es keinen Mangel an Entwicklern gibt - der Lebenslauf ist um eine GrĂ¶ĂŸenordnung grĂ¶ĂŸer als die offenen Stellen .





Schauen wir von der anderen Seite. Die Site hh.ru hat einen speziellen Index, der als hh-Index bezeichnet wird . Dies ist das VerhĂ€ltnis von aktiven LebenslĂ€ufen und offenen Stellen. FĂŒr eine Java-Anfrage entspricht dies ungefĂ€hr eins: fĂŒr eine freie Stelle einen Lebenslauf. Auch hier stellt sich heraus, dass es keinen Personalmangel gibt? Das Unternehmen braucht einen Programmierer, es eröffnet eine Stelle, und laut Index sollte der Senior sofort kommen, einen Job bekommen und die Stelle schließen.

Der Herr "muss" kommen, kommt aber nicht. Die Zahlen besagen, dass es keinen Personalmangel gibt, aber in der realen Welt und nicht in der Welt des hh-Index. Java ist ein sehr seltener Beruf. Es gibt eine blutige Kopfjagd fĂŒr Java-Senioren: HRs und Personalvermittler belagern sie mit Angeboten, einen Job zu bekommen. Im Durchschnitt erhĂ€lt ein Java-Entwickler 5-6 Angebote , auch wenn er beschĂ€ftigt ist.

Was ist los? Woher kam der Personalmangel? Aufgrund meiner persönlichen Interviewerfahrung glaube ich, dass das Problem darin besteht, dass die meisten Arbeitssuchenden, die LebenslÀufe senden und zu VorstellungsgesprÀchen kommen, eine unzureichende Ausbildung und geringe Qualifikation haben. Da es jedoch an Personal mangelt, sind Unternehmen gezwungen, diese Personen einzustellen und selbst auszubilden - Menschen mit hohen Qualifikationen verbringen ihre Zeit damit, Menschen mit geringen FÀhigkeiten auszubilden.

Wir können den Personalmangel nicht besiegen - nur um es zu erklĂ€ren. Deshalb passen wir das Problem an und lösen es - wir trainieren. Lassen Sie uns darĂŒber nachdenken, wie Menschen in der IT-Branche geschult werden können.

Möglichkeiten, in der IT-Branche zu lernen


1980 untersuchten die National Training Laboratories in den Vereinigten Staaten die Wirksamkeit verschiedener Trainingsmethoden. Es stellte sich heraus, dass VortrĂ€ge und das Lesen von BĂŒchern eine Ă€ußerst geringe Effizienz aufweisen - nur 5-10% . Als nĂ€chstes schauen Sie sich VideovortrĂ€ge an und hören Audio. Die maximale Effizienz von 90% ist die Schulung durch Personen anderer Personen - Mentoring und die sofortige Anwendung des in der Praxis gewonnenen Wissens.





Basierend auf der Schulungspyramide werden wir eine explizite Analyse der IT-Schulungsmethoden durchfĂŒhren.

Kurse


Sicherlich haben Sie im Internet kontextbezogene Werbung getroffen, die verspricht, AnfĂ€nger zu professionellen Programmierern zu machen: "Werden Sie in 3 Monaten Entwickler." Ich selbst habe solche Kurse aus Interesse mehrmals besucht und sie meinen SchĂŒlern empfohlen. Ich kann sagen, dass diese Kurse zwar effektiv sind, aber zwei Probleme haben: In den Kursen werden nur Grundkenntnisse vermittelt - sie werden den Juni nicht zu einem Senior machen, und die EffektivitĂ€t des Trainings ist nicht höher als 20% . Kurse sind ineffizient, daher werden wir sie vergessen.

Interne Workshops


Ich liebe die internen Seminare sehr und habe sie schon oft abgehalten. Ich glaube, dass sie nur dann effektiv sind, wenn das Publikum interaktiv mit dem Lehrer interagiert. Dies ist leider selten der Fall. Normalerweise kommen Leute zu einem Seminar, nehmen Platz und hören passiv einem Dozenten zu, wÀhrend sie Möwen trinken. Keine InteraktivitÀt, geringer Wirkungsgrad - maximal 50% . Daher können auch Seminare vergessen werden.

Konferenzen


Ziel der Konferenz ist es, Brancheninnovationen vorzustellen, aber kein Hardcore-Training. Konferenzen sind Kommunikation , frische Ideen, aber kein Training - die EffektivitÀt betrÀgt in diesem Fall nur 5-30%. Konferenzen sind auch nicht das, was wir brauchen.

Selbstlernen


Ich bin, wie die meisten meiner Freunde, Programmierer, durch Selbstbildung in den Beruf gekommen. Dies ist eine effektive Methode, ich wĂŒrde sie mit einer Effizienz von 75% bewerten , wenn nicht ein großer Nachteil wĂ€re - eine Liste der zu studierenden BĂŒcher.



Dies ist eine Liste, die ich Leuten gebe, die Java-Entwickler werden und echten Branchencode schreiben möchten. Wenn ich es AnfÀngern zeige, sehe ich Angst, Verzweiflung und Hoffnungslosigkeit in ihren Augen. Die Begeisterung lÀsst schnell nach.

Um Programmierer zu werden, muss eine Person das „Plateau der Verzweiflung“ durchlaufen. Nach diesem Konzept kommt eine lange Zeit, in der eine Person kein Wissen mehr erhĂ€lt und das SelbstwertgefĂŒhl rapide abnimmt, nachdem sie im Zuge der Begeisterung erste Kenntnisse erhalten hat.



In Analogie zum „Plateau der Verzweiflung“ habe ich das Konzept der „Mauer der Verzweiflung“ eingefĂŒhrt. Dies ist eine Wand aus 15 dicken BĂŒchern, die es Hunderttausenden von AnfĂ€ngern mit hh.ru nicht ermöglicht, in die begehrten 5.000 aktiven Stellen von Senioren und Mittleren zu gelangen.



Es stellt sich heraus, dass ein AnfĂ€nger Zeit fĂŒr die Selbstbildung verbringt, um Entwickler zu werden, und nicht fĂŒr eine Familie oder ein Hobby. Es scheint, dass diese Methode auch nicht sehr gut ist.

Mentoring und Coaching


Dies ist laut der Pyramide des Lernens der effektivste Weg - 90% Effizienz . Er hat aber auch Nachteile, die es nicht erlauben, diese Methode als „magische Pille“ zu bezeichnen.

Mentoring ist immer ein VerhĂ€ltnis von 1: 1 , dh ein Mentor und ein Menti - der Lernende . In meiner Praxis habe ich keine FĂ€lle gesehen, in denen ein Mentor 10 Personen ausbilden kann. Mentoring ist sehr schlecht skaliert und lenkt Senioren von der Hauptarbeit ab. Ich kann es persönlich sagen - ich hatte maximal 2 Menti. Gleichzeitig wurde die HĂ€lfte meiner Arbeitszeit und manchmal mehr fĂŒr Mentoring aufgewendet und nicht fĂŒr die Lösung von Produktionsaufgaben, fĂŒr die ich Geld erhielt. Daher ist es unmöglich, 3-4 Personen oder mehr zu betreuen, wenn wir ĂŒber qualitativ hochwertiges Mentoring sprechen.

Langzeitstudien - 1-2 Jahre. Nach meiner Erfahrung arbeitet ein Programmierer durchschnittlich 2 Jahre in einem Unternehmen. Es stellt sich ein trauriges Bild heraus: Sie betreuen eine Person, treiben Wissen in sie hinein und dann gibt jemand auf - entweder Sie oder er, und alles Mentoring geht nirgendwo hin.

Mentoring ist effektiv, aber aufgrund der MĂ€ngel dachte ich mir - warum nicht einen Weg finden, der als Mentoring effektiv ist, aber ohne die Minuspunkte: lustig, interessant und skalierbar. Ich habe mir die Idee fĂŒr Spiele ausgedacht - es macht Spaß, ich mag Menschen und löse die Probleme des Mentorings.

Spiele!


Welche Spiele kennen wir? Dame, Schach, Spulen und Dominosteine ​​sind trotz der Einfachheit eine intellektuelle BeschĂ€ftigung.



Karten sind auch ein intellektuelles Spiel. Wer den Klassiker nicht mag, gibt es "Magic: The Gathering". Viele IT-Leute lieben dieses Spiel, auch ich. Viele IT-Unternehmen veranstalten ganze Turniere, die ihr gewidmet sind.



Alle diese Spiele sind Spiele zur Unterhaltung, nicht fĂŒr Programmierer, und ich fragte mich - gibt es Spiele fĂŒr Programmierer? Und ich habe zum Beispiel ein solches Spiel gefunden.



Der Spieler arbeitet mit Farbblöcken und kompiliert den Quellcode daraus, um den Astronauten zu steuern. Offensichtlich ist das Spiel völlig kindisch, wĂŒrde ich sagen - Kindergarten. Sie macht den Spieler nicht zum Senior.

Dann ist das Spiel abrupt: 3D-Landschaft und dreidimensionaler Heldenroboter.



In einer C-Ă€hnlichen Sprache mĂŒssen Sie Pseudocode schreiben, um den Roboter zu steuern.

Unten ist ein Screenshot des dritten Spiels, das ich gefunden habe.


Auch hier mĂŒssen Sie auf einem Pseudocode ein Programm schreiben, um den Charakter zu steuern: Bewegen Sie ihn durch das Labyrinth, öffnen und schließen Sie TĂŒren, manipulieren Sie Objekte.

Alle anderen Spiele Àhneln diesen drei und haben viele schwerwiegende MÀngel.

Spiel Nachteile


Diese Spiele vermitteln nur grundlegende Konzepte - wie Variablen, Schleifen, Funktionen -, die selbst Junioren am Institut lernen. Spiele sind von echten industriellen Aufgaben getrennt , weil sie weder Multithreading noch TransaktionsfĂ€higkeit aufweisen - alles, was der Senior oder die Mitte weiß. Spiele wie dieses werden nicht unterrichtet, und das ist ihr Problem.

Der Spieler kontrolliert den Charakter oder den "Roboter" , wĂ€hrend in Wirklichkeit die Seigneure und Mitten mit sehr komplexen GeschĂ€ftsobjekten arbeiten. Außerdem ist der Spieler immer allein , wĂ€hrend er in der IT in Teams arbeitet. Jedes Softwareprojekt ist eine Teamarbeit. Da viele Programmierer von Introvertierten gewachsen sind und Teamwork fĂŒr uns oft schwierig ist, möchte ich, dass das Spiel auch TeamfĂ€higkeiten fördert.

Persönliches Spielerlebnis


Gleichzeitig gibt es eine reiche Kultur von Brettspielen auf der Welt: Munchkin, Magic: The Gathering, Dungeons & Dragons. Leider habe ich den "Desktop" fĂŒr Programmierer nicht getroffen.

Ich persönlich und meine ganze Familie: Frau, Tochter und Katze Tishka, wir lieben die „Desktops“. Außerdem lieben es meine Tochter und ich, sie zu kreieren. Wir haben das Spiel nach dem beliebten Programm „Revizorro“ und verschiedenen anderen Abenteuerspielen erfunden. Auf diesen einfachen Fotos finden Sie 3 Beispiele unserer „Desktops“.



Wie bin ich auf die Idee gekommen, Brettspiele fĂŒr Programmierer zu entwickeln? Ich habe vier Phasen durchlaufen: die negative Erfahrung mit der Schulung von Mitarbeitern, die enttĂ€uschende Analyse aktueller Spiele , die Erfahrung mit dem Spielen von „Tricks“ und die Erfahrung mit deren Erstellung . All dies fĂŒhrte mich zum "Desktop" fĂŒr Programmierer. Warum nicht das Spiel selbst machen?

Spielanforderungen


Wie viel sollte es futuristisch oder bodenstÀndig sein?



Eine kurze Spielsitzung dauert nicht lĂ€nger als 15 bis 20 Minuten, da Sie dieses Spiel wie geplant wĂ€hrend der Arbeitszeit spielen mĂŒssen. Wenn Sie lĂ€nger als 20 Minuten spielen, werden die Leute mitgerissen und verlassen den Produktionsprozess, und die Chefs gehen und mĂ€hen. Daher sind 20 Minuten ideal: Wir spielten und machten uns an die Arbeit.

Das Spiel sollte echte industrielle Aufgaben vermitteln , denen echte Senioren und MittelstĂ€ndler gegenĂŒberstehen: Multithreading, JPA, Datenbanken und gleichzeitige Datenstrukturen . Dies sind die Themen, die es Junioren oft nicht erlauben, auf einem bestimmten technischen Niveau in den Kopf zu springen und Senioren zu werden. Ich spreche nicht nur ĂŒber Java, sondern allgemein ĂŒber alle Sprachen, einschließlich Python, C ++ - ĂŒberall gibt es Multithreading, Datenbanken und gleichzeitige Strukturen.

Die nĂ€chste Aufgabe, die das Spiel lösen sollte, besteht darin , FĂ€higkeiten in der Teamarbeit zu verbessern : die Bildung einer einzigen technischen Sprache innerhalb des Teams und die FĂ€higkeit, Code zu diskutieren. Mittlerweile hat fast jedes Unternehmen eine CodeĂŒberprĂŒfung, und es tritt hĂ€ufig eine Situation auf: Entwickler, insbesondere AnfĂ€nger, sehen den Quellcode, können jedoch nicht in Worten beschreiben, was darin geschieht. Sie können Code schreiben, aber sie können ihn nicht diskutieren - es gibt kein technisches Wörterbuch im Kopf. Ich möchte, dass das Spiel dieses technische Wörterbuch pumpt. DarĂŒber hinaus hilft Ihnen eine technische Sprache beim Schreiben von QualitĂ€tsdokumentationen.

Teambuilding ist eine Voraussetzung fĂŒr die Personalabteilung. Ich spreche nicht von Teambuilding, bei dem Leute Alkohol sammeln und trinken, sondern von Meetings, bei denen sie den Quellcode diskutieren. Es gibt eine solche Teambildung, und die Aufgabe des Spiels liegt darin.

Um dem Herrn und dem Team zu gefallen. Ich möchte, dass das Spiel von mir als Lord und Gastgeber dieses Spiels und vom Team persönlich gemocht wird - damit es interessant, lustig, vielleicht sogar provokativ irgendwo ist.

Die letzte Voraussetzung ist sehr wichtig - das Spiel muss ein echtes Brettspiel sein, nicht online, nur offline . Mehrmals wurde ich gebeten, eine Online-Version dieses Spiels zu schreiben, aber ich lehnte es immer ab. Viele kennen das Go-Spiel, aber nicht jeder weiß, dass in einem echten chinesischen Spiel schwarze Chips aus Basalt und Weiß bestehen - aus einer speziellen Muschel. Plastikchips sind nicht mehr Go's Spiel. Die Chinesen reagieren wĂ€hrend des Spiels empfindlich auf taktile Empfindungen - sie sollten ein Teil davon sein. Ich denke genau das gleiche. Daher sollte mein Spiel auch lebhaft sein und taktiles VergnĂŒgen bereiten.

Ein Beispiel fĂŒr "Tabellen"


Das Spiel, das ich entwickelt habe, heißt "Wer hat den Monitor gestohlen?" Da wir alle Technikfreaks sind, wissen wir, dass der Monitor nicht der Fernseher ist, den wir bei der Arbeit sehen, sondern das Konzept des Multithreading. Das Ziel des Spiels ist es, das Team gemeinsam in einen Deadlock beim Java-Multithreading einzufĂŒhren . Spieler in einem Team konkurrieren nicht miteinander, sondern lösen gemeinsam ein gemeinsames Problem - eine echte Teambildung. Ich habe mich fĂŒr das Thema Multithreading entschieden, weil dies die Messlatte fĂŒr den Juni ist, durch die er oft nicht springen und anfangen kann, wirklich guten Industriecode zu schreiben. Das GeschĂ€ft erfordert große KapazitĂ€ten von uns, und fast jedes Industrieprogramm ist multithreaded . Daher ist es sowohl fĂŒr Unternehmen als auch fĂŒr Programmierer wichtig zu wissen, was Multithreading ist.

Spielelemente


Das erste Element ist das Feld Quellcode auf einem großen Blatt dicken Kartons. Es zeigt einen bestimmten Code - in unserer Sprache Java.



Das nÀchste Element sind die ZauberstÀbe der aktuellen Linien . Dies sind farbige Rahmen aus Draht.



Jeder Spieler bewegt seinerseits seinen Stream-Stab durch den Quellcode und zeigt so den aktuellen Fortschrittsbalken an.



Das Spiel hat zwei Spielfelder. Die erste ist eine Zustandsmaschine - Quadrate und Pfeile mit Inschriften.



Ich habe die Zustandsmaschine aus der Standard-Java-Dokumentation genommen. Jeder Senior, Middle und sogar Junior sollte diese Zustandsmaschine auswendig kennen, aber meiner Erfahrung nach wissen es nicht alle Java-Entwickler, viele schreiben Code ohne dieses Wissen. Eine der Aufgaben des Spiels ist es , die Zustandsmaschine von Java-Threads zu kennen .

Das nÀchste Element sind doppelseitige Stream-Token .



Auf einer Seite werden geschlossene Augen gezeichnet - dies bedeutet, dass der Stream inaktiv ist. Auf der anderen Seite - einem rennenden Mann - ist ein Stream aktiv.

Ich werde veranschaulichen, wie sich die Chips um die Zustandsmaschine bewegen. Wenn der Thread zu arbeiten begann, versetzt der Player den Status-Token in den Status " Neu" - den Ausgangszustand, in dem der Thread gerade erstellt wurde.



WĂ€hrend des Spiels versetzt der Spieler den Chip aufgrund einiger Ereignisse in den Zustand „ lauffĂ€hig“ , ohne zu vergessen, ihn mit der Seite umzudrehen, auf der der laufende kleine Mann gezeichnet ist, was bedeutet, dass jetzt sein Fluss funktioniert.



Das nÀchste Element des Spiels sind die Monitorkarten .



Diese Karten liegen zuerst im gemeinsamen Stapel, und dann nehmen die Spieler sie selbst in die Hand. Jeder Monitor ist an ein Java-Objekt angeschlossen, von denen es zwei gibt: "eins" und "zwei".

Das letzte Element sind die Stunden der FlĂŒsse .



Wahrscheinlich wissen alle Technikfreaks, dass Threads fĂŒr eine bestimmte Zeit "einschlafen" können. Um diese Zeit im Spiel zu messen, gibt es Uhren, bei denen Sie die Zeiger bewegen können.

Betrachten Sie einige ZĂŒge aus einer Spielsitzung.

Beispiel fĂŒr eine Spielsitzung


Wir haben drei Spieler:

  • Michael arbeitet fĂŒr den "Haupt" -Thread - den Haupt-Java-Thread.
  • Eugene - Stream "t1".
  • Svetlana - der Strom "t2".

Jeder der Spieler setzt sich an die Stelle eines der Streams und lebt sein Leben im Verlauf des Spiels. Er versteht also, was es bedeutet, ein Java-Thread zu sein.

Michael bewegt den Stream-Zauberstab in die erste Codezeile.



Eugene und Svetlana schlafen noch - ihre Threads wurden nicht erstellt, und Mikhail verschiebt seine Stream-Mitarbeiter in die nÀchste Codezeile, in der <code> Thread t1 = neuer Thread () </ code> steht. Dies bedeutet, dass der Stream von Eugene "t1" erstellt wird. .



Eugene gÀhnt nicht, nimmt seinen Stream-Chip und versetzt ihn in den "lauffÀhigen" Zustand - die Seite mit dem rennenden Mann.

Beispiel fĂŒr Teamarbeit


Svetlana sagt Eugene:

  • Eugene, warum hast du den Chip deines Streams nicht in den "neuen" Zustand versetzt, sondern sofort in den "lauffĂ€higen" Zustand?

  • Warum nicht?

Es ist zu sehen, dass Eugene der unerfahrenste Junior im Team ist, aber Svetlana ist erfahrener und sagt:

  • Eugene, laut der Zustandsmaschine, ist der Anfangszustand des Flusses "neu".

Eugene stimmt Svetlana zu und bewegt den Chip seines Flusses in die richtige Position.



Dies ist ein Beispiel dafĂŒr, wie das Team wĂ€hrend des Spiels Wissen ĂŒbertrĂ€gt. Das Spiel geht weiter ...

Bei einem bestimmten Schritt macht Michael bereits einen Kommentar zu Eugene:

  • Eugene, du hast den Synchronblock betreten, aber vergessen, etwas zu tun ...

  • Genau, ich habe vergessen, den Monitor dieses Objekts aufzunehmen!

Eugene nimmt den Monitor des " einen" Objekts. Es stellt sich heraus, dass der Stream "t1" Eugene diesen Monitor besitzt.



Dann kommt das Spiel: viele ZĂŒge, Auslassungen, arbeiten mit der Uhr. Lesen Sie mehr im Video oder auf den Folien in der PrĂ€sentation .

Am Ende des Spiels hat Eugene einen Monitor und Svetlana einen anderen, und der Fluss jedes einzelnen wird durch die Erwartung von Monitoren blockiert . Infolgedessen befinden sich sowohl der Stream "t1" als auch der Stream "t2" im "blockierten" Zustand, dh wir beobachten einen Deadlock.

WĂ€hrend der Spielsitzung ĂŒberprĂŒft jeder Spieler persönlich, was ein Deadlock ist, wie er entsteht und was er ist.

Schlussfolgerungen


Die Spielsitzung ist kurz . 20 , , , . , — 1:n .

— . , , . Deadlock — — , «» — heisenbug, .

— . , , , . .


. , . : Delphi, — C++, — Haskell.

, Java- 20 . 5 , .



, — , , , . .


deadlock, :

  • Race conditions — , .
  • wait/notify .
  • join/isAlive .

?


, , . , .

JPA- JEE/Spring. , JPA-.

Google, « JPA-».



, , — .



, «» .

  • JEE.
  • SQL.
  • : , , HashMap.
  • java.util.concurrent.

, , .

, , - . , - , . - , .


, . , . , : , , , . - , , .

— «». , . , . .

Linkedin- GitHub. .

, , . 26 KnowledgeConf . , . , .

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


All Articles