Najciekawsze programistyczne materiały w 2023

Podsumowanie będzie składać się z dwóch części. W pierwszej wymienię nagranie, książkę i tutorial na stronie internetowej, które zrobiły na mnie w minionym roku największe wrażenie.

W drugiej będą artykuły mojego autorstwa, które wzbudziły wasze największe zainteresowanie.

Podsumowania z poprzednich lat znajdziecie pod tagiem podsumowania.

Things that work for me so well I cannot believe you are not using it

Prezentacja Kuby Nabrdalika, wygłoszona kilka razy, ja polecam nagranie z Confitury 2022. Mnóstwo wiedzy, pomysłów jest tyle, że można by obdzielić kilka prezentacji albo artykułów.

  • „udowadnianie przydatności” historyjki przed zaakceptowaniem jej; nie wystarczy, że Product Owner obiecał komuś zrobienie ficzera, niech teraz udowodni zespołowi, że użytkownicy będą tego używali i że ten kod naprawdę pozwoli zaoszczędzić (albo zarobić) pieniądze
  • warto dzielić rozwiązanie na kilka MVP i dostarczać przed uzgodnionym terminem, nawet jeśli klient nigdy nie prosił o pracę etapami
  • często zdarza się, że implementujemy rzecz, której nie rozumiemy; po wszystkim warto skasować kod i napisać od nowa, tym razem dysponując zrozumieniem
  • programiści nie rozumieją, jak działa proces twórczy, bo mają awersję do kasowania kodu („marnotrawstwo!”); tymczasem malarze robią dużo szkiców i większość niszczą
  • na koniec każdej historyjki task na dodanie observability
  • metoda naukowa przy incydentach produkcyjnych: nie rzucamy się do poprawiania, należy sformułować hipotezy, użyć logów od odrzucenia hipotez niepasujących do incydentu, poprawiać dopiero, gdy rozumiemy, co jest przyczyną
  • logi mają mówić wszystko tak, że nie jest potrzebny debugger; logowanie każdej gałęzi decyzyjnej (też Optional.ofNullable itp.), też gałęzi, gdy nie robimy nic

Twój mózg w działaniu

Oryginalny tytuł „Your Brain at Work” (Goodreads), autor David Rock. Książka z praktycznym nastawieniem (nie ma długich wykładów), pokazująca, jak się zorganizować, żeby ograniczenia naszych mózgów mniej przeszkadzały w osiąganiu naszych celów. Dobrze napisana, każdy rozdział omawia jedno z ograniczeń (planowanie przyszłości, wielozadaniowość, status w grupie, itp.), pokazuje scenkę, gdzie bohater przez nie poniósł porażkę, a na koniec ta sama scenka pokazana jest po zastosowaniu rad z rozdziału.

Myślę, że dwa rozdziały, o wychodzeniu z impasu i o pomaganiu innym w rozwiązywaniu problemów, będą szczególnie przydatne dla osób pracujących kreatywnie.

Wcześniej polecałem podobną książkę Pragmatic Thinking and Learning, ale tematy (poza wychodzeniem z impasu) nie powtarzają się. Jeśli komuś podobała się jedna, warto przeczytać drugą.

Prompt Engineering Guide

Zbiór artykułów objaśniających, jak zadawać pytania do ChatGPT i podobnych narzędzi, żeby uzyskać rozwiązania skomplikowanych problemów (np. generowanie kodu robiącego, o co prosimy).

Zainteresowałem się tematem promptów, gdy w newsletterze Java Annotated Monthly pojawił się artykuł An Incomplete Guide to Modern Java I/O Idioms, gdzie autor narzekał, że ChatGPT powiela złą wiedzę, tzn. sugeruje używanie przestarzałych konstrukcji (narzekał też na ludzi piszących bzdury na blogach i StackOverflow, ale zostańmy przy AI).

Próbowałem zweryfikować, czy twierdzenia autora artykułu o ChatGPT są prawdziwe. Faktycznie, prompt „How to convert InputStream to a String in Java?” dawał „złą” odpowiedź. Ale drobna modyfikacja zapytania dawała znacznie lepsze odpowiedzi: „Write code in Java 17 to convert InputStream to a String.”

Prompt Engineering Guide jest zbiorem technik dużo bardziej zaawansowanych niż prosty przykład wyżej. Więcej pisałem na LinkedIn.

Na blogu

Najwięcej zainteresowania budziły artykuły:

W bonusie polecam editorconfig na CI – automatyczna weryfikacja jednolitego stylu, który według mnie spokojnie znalazł by się w czołowej trójce, gdyby nie świąteczna awaria na jvm-bloggers, kiedy to cały tydzień artykułów z polskiej blogosfery w ogóle nie został opublikowany.


Zdjęcie Moritz Knöringer z Unsplash

Creative Commons License
Except where otherwise noted, the content by Piotr Kubowicz is licensed under a Creative Commons Attribution 4.0 International License.