Programowanie · Wydarzenia

Recenzja .NET Developer Days 2019

W ubiegłym miesiącu odbywała się w Warszawie dwudniowa międzynarodowa konferencja .NET Developer Days. Wraz z kilkoma osobami z mojej pracy otrzymaliśmy od firmy bilety i ruszyliśmy podbijać stolicę 🙂

Dzień 1

Opening Keynote: The Intelligent Cloud and Intelligent Edge – Scott Guthrie

Samo rozpoczęcie dnia było rewelacyjne. Otwierający keynote prowadzony przez Scotta wraz z gościnnymi wystąpieniami Kendry Havens i Simony Cotin zrobił na mnie ogromne wrażenie. Niektóre poruszane tematy były mi już znane (np. poprawa wydajności oraz produktywności w VS 2019, o czym pisałam w tym wpisie). Inne ciekawostki, które dotyczyły VS 2019:

  • automatyczne dodawanie usingów,
  • wskazywanie w edytorze sypiącego się testu wraz z jego błędem (po najechaniu kursorem myszki)
  • uruchamianie testów w tle
  • możliwość używania Print() w testach
  • nowe indeksowanie np. ^1, ..3 (jak w Pythonie)
  • tip, by używać „is” zamiast „==” (bo nie można go nadpisać)

Scott opowiedział trochę o GitHub Actions, czyli nowości: CI/CD na GitHubie. Na dniach ma być jego oficjalny release (wcześniej było w preview). Fajne jest to, że są przygotowane templaty dla różnych aplikacji, więc nie trzeba wiele konfigurować.

Welcome to the (State) Machine – Mauro Servienti

Rewelacyjna prezentacja pokazująca, jak przekształcić wielką aplikację do sprzedaży biletów w kilka mniejszych. Czyli jak z tego

Slajd pochodzący z prezentacji http://bit.ly/dnd-wa-state-machine-slides

zrobić to

Slajd pochodzący z prezentacji http://bit.ly/dnd-wa-state-machine-slides

Przestrzeganie zasady pojedynczej odpowiedzialności, wprowadzenie sag, podzielenie procesów na serwisy i używanie opóźnionych wiadomości to tylko kilka haseł poruszanych podczas prelekcji. Zamiast rozpisywać tutaj wszystkie etapy przekształcania aplikacji, podrzucę link do slajdów i aplikacji testowej.

Designing a UI for Microservices – Mauro Servienti

Drugi wykład prelegenta z poprzedniego przykładu.

Przykładowa struktura aplikacji przedstawiającej produkt w sklepie online najpierw wyglądała tak:

Slajd pochodzący z prezentacji http://bit.ly/dnd-wa-composition-slides

A później tak:

Slajd pochodzący z prezentacji http://bit.ly/dnd-wa-composition-slides

Podczas prelekcji były porównywanie 2 podejścia:

  • Branding, czyli monolityczny UI, który trudno zepsuć, ale który zawiera jeden ogromny model
  • UI Composition, czyli używanie w widoku komponentów, przez co ciężko mieć pełną kontrolę na UI

Zamiast rozpisywać tutaj wszystkie etapy przekształcania UI, podrzucę link do slajdów i aplikacji testowej.

Dzień 2

Building Trust in Teams – Richard Campbell

Rewelacyjny prelegent! Prezentacja zwracała uwagę na to, że kasa już nie jest motywacją dla programistów. Są nią 3 aspekty:

  • autonomia (autonomy)
  • mistrzostwo (mastery)
  • cel (purpose)

Odnośnie zespołu ważne jest to, żeby zespół sobie ufał. To znaczy dzielił pewne wartości, żeby każdy mógł się czuć bezpiecznie i mógł się wyrażać w zespole. Porażki są bardzo dobrą nauką – warto na nie odpowiednio reagować i wyciągać z nich wnioski.

Komunikatory, czaty i maile są fajne dla osób, które się dobrze znają np. dla rodziny. Ale gdy przychodzi do osób, które się mniej znają, to spotkania 1-1 działają cuda. Nie ma miejsca na niedomówienia czy nieporozumienia. Widać mimikę twarzy, ton głosu – od razu lepiej się komunikujemy. Dlatego nawet dla pracowników zdalnych warto robić wideo.

Richard zwrócił też uwagę, że bardzo ważne jest chociaż wspólne jedzenie: wzmacniamy wtedy więzy z innymi członkami zespołu, możemy też dyskutować i rozmawiać nie tylko na tematy firmowe. Tak samo wychodzenie na kawę – krótkie wyjście, a może dać wiele.

Building Enterprise Grade Web APIs in ASP.NET Core – David Berry

David opowiadał, że pisząc API, powinniśmy mieć 3 cele:

  • żeby API było proste dla użytkowników
  • żeby kod był łatwy w utrzymaniu
  • żeby implementacja była pragmatyczna i spełniała cele biznesowe

Pisząc API należy myśleć o liczbie calli do API, jakie wywołamy, robiąc jakąś operację biznesową (np. zamówienie produktu). Powinniśmy starać się utrzymać każde API skupione na 1 domenie biznesowej.

Zapytanie o produkt po Id powinno wyglądać:

api/ Foodtruck /10

a zapytanie o produkt po tagu już inaczej:

api/Foodtruck?tag=abc

David pokazał praktykę tworzenia feature folderów w celu organizacji kodu. Czyli zamiast robienia struktury:

  • Controllers
    • FoodTrucksController
    • FoodTrucksReviewsCotroller
  • ApiModels
    • FoodTrucksModel
    • FoodTrucksReviewsModel

żeby stworzyć osobny podział

  • FoodTrucksReviews
    • Models
      • FoodTrucksReviewsModel
    • FoodTrucksReviewsController
  • FoodTrucks
    • Models
      • FoodTrucksModel
    • FoodTrucksReviewsController

Z dodatkowych ciekawych rzeczy można było usłyszeć o:

  • Result<TValue>, które pozwalają zwrócić obiekt lub komunikat błędu.
  • IActionResult<T>, które pozwala na zwrócenie OK(model) lub NotFound(model) czyli odpowiedzi z odpowiednim kodem błędu
  • base controllerze
  • API controller atrybut (od .NET Core 2.1), który umożliwia automatyczne walidowanie ModelState
  • wersjonowanie API z wykorzystaniem Microsoft.AspNetCore.Mvc.Versioning

Konkretną aplikację z powyższymi przykładami, pokazującą dobre praktyki, możecie znaleźć na GitHubie.

Aplikacja

Konferencja miała dedykowaną aplikację mobilną, na której można było przeglądać agendę i układać swoją, spersonalizowaną. Dodatkowo była możliwość oceny każdego wykładu. Pojawiały się w też niej powiadomienia na tematy konferencyjne np. o konkursach organizowanych przez sponsorów.

Party

Wieczorem, między pierwszym, a drugim dniem konferencji było organizowane party. Niestety z powodu spotkania biznesowego nie miałam możliwości w nim uczestniczyć. Jednakże z opowiadań słyszałam, że było bardzo fajnie. Furorę zrobili niezastąpieni Dueling Pianos! Oby pojawili się na kolejnej edycji również 🙂

Organizacja

Tak duży event to na pewno ogrom pracy organizacyjnej. Muszę jednak przyznać, że wypadła ona na prawdę bardzo dobrze. Zawsze jest coś, co można zrobić jeszcze lepiej (np. rozłożyć obiad na 2 sloty czasowe lub 2 sale) – ale nawet z takim mankamentem jak długie kolejki obiadowe ocena jest bardzo wysoka 🙂

Podsumowanie

Czy warto? Bilety kosztują niemało… Ale zdecydowanie mogę polecić! Ogrom wiedzy, dobra organizacja, wspaniali prelegenci… Warto 🙂

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s