Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Interní DX: Kutil Tim v každém z nás

Interní DX: Kutil Tim v každém z nás

Každodenní útrapy vývojářů a jak na ně

Jirka "Jurri" Jansa

January 10, 2023
Tweet

More Decks by Jirka "Jurri" Jansa

Other Decks in Programming

Transcript

  1. co nás zdržuje • pomalý feedback • porady, vyrušení •

    tříštění pozornosti • nedostatek informací • časté změny požadavků • nepoužívané komponenty • rozepře, hledání konsensu • únava, práce pod tlakem • rutinní, mravenčí práce • zastaralé závislosti • support
  2. code base • README.md first ◦ onboarding ◦ smysl projektu,

    spuštění ◦ rozchození projektu ◦ API docs s příklady • lint, .editorconfig, format on save • kód by měl být hlavně čitelný • nemíchejte jazyky • trvalý refactoring • šablony, startery • YAGNI
  3. dependencies • renovate ◦ automerge ◦ groups, patterns ◦ pinned

    versions • interní knihovny ◦ vyhněte se commons, shared… • interní services ◦ samostatně spustitelné ◦ testovací data / mocky ◦ ephemeral prostředí ◦ SDK? • externí services ◦ Stoplight Prism • REST vs. GQL (vs. ani jedno)
  4. testy • TestContainers ◦ DB, ◦ AWS, Keycloak, ◦ libovolný

    kontejner • pocit bezpečí při push • dostatečné pokrytí, aby umožnilo refactoring • testovat můžete architekturu, závislosti, testy… • testovací data ◦ flyway clean & migrate mezi integračními testy ◦ jen mocky nestačí
  5. pipeline • automatizujte všechno, co jde ◦ manuální krok =

    asi něco chybí ◦ podmíněné pipelines ◦ pipelines as code • pipeline do 2-3 minut ◦ nepodceňujte CI HW • release ◦ by tag only ◦ trunk-based ?vs.? feature ◦ feature flagy, A/B testing, paralelní prostředí
  6. observability • logy ◦ strukturované logy ◦ pozor na ukecanost

    • healthchecky, metriky ◦ technické + business! • costs! ◦ nenechávejte si je pro sebe ◦ budgeting • secrets ◦ dle platformy, nebo sdílené password managery • buďte kreativní ◦ UI heatmapy, ◦ deprecated call detection ◦ feature adoption rate
  7. komunikace • co nejméně zdrojů akcí • pomodoro • YAGNI

    meetingy • Slack ◦ otevřené vs. private chaty ◦ virtuální kuchyňka ◦ open call • pairing, mob programming • feedback: průběžný > pravidelný > ad hoc • feedback button v toolech ◦ ref.: Stripe developer productivity
  8. složení týmu • jasné zodpověnosti • budujte zástupnost • support

    ◦ hokejová střídačka vs fluidní tým ◦ neizolujte support tým • toolmaker nechce být každý • R&D ◦ ideálně všichni ◦ podcasty, knihy, konference ◦ technology radar(y) • remote-first, BYOD, VPN & go
  9. Naší nejvyšší prioritou je vyhovět zákazníkovi časným a průběžným dodáváním

    hodnotného softwaru. Vítáme změny v požadavcích, a to i v pozdějších fázích vývoje. Agilní procesy podporují změny vedoucí ke zvýšení konkurenceschopnosti zákazníka.
  10. Dodáváme fungující software v intervalech týdnů až měsíců, s preferencí

    kratší periody. Lidé z byznysu a vývoje musí spolupracovat denně po celou dobu projektu.
  11. Budujeme projekty kolem motivovaných jednotlivců. Vytváříme jim prostředí, podporujeme jejich

    potřeby a důvěřujeme, že odvedou dobrou práci. Nejúčinnějším a nejúspornějším způsobem sdělování informací vývojovému týmu z vnějšku i uvnitř něj je osobní konverzace.
  12. Hlavním měřítkem pokroku je fungující software. Agilní procesy podporují udržitelný

    rozvoj. Sponzoři, vývojáři i uživatelé by měli být schopni udržet stálé tempo trvale.
  13. Agilitu zvyšuje neustálá pozornost věnovaná technické výjimečnosti a dobrému designu.

    Jednoduchost – umění maximalizovat množství nevykonané práce – je klíčová.
  14. Nejlepší architektury, požadavky a návrhy vzejdou ze samo-organizujících se týmů.

    Tým se pravidelně zamýšlí nad tím, jak se stát efektivnějším, a následně koriguje a přizpůsobuje své chování a zvyklosti.
  15. roll your own • skripty, CLI • knihovny, šablony, startery

    ◦ máte plnou kontrolu ◦ je úzce šitá na míru pro vás ◦ ale - musíte si to supportovat sami • interní aplikace a nástroje ◦ vznikají vždy z potřeby ◦ nechcete generické řešení • občas se z toolu stane produkt
  16. buy everything každý tool musí někdo znát, nastavovat, supportovat Fáze

    1. experimentování 2. běžné používání 3. ohýbání nástrojů 4. bez toolu už si řešení nedovedete představit 5. …
  17. Pět fází závislosti na alkoholu Fáze 1. experimentování 2. běžné

    užívání 3. riskantní užívání 4. závislost 5. chorobný návyk
  18. A.I. • GitHub Copilot, Tabnine, ChatGPT... • pomocník ◦ porozumění

    a dokumentace kódu ◦ prototyping, rutiny • nutný dozor (nejen dohled) • zajímavé koncepty ◦ human TDD + AI implementace ◦ what does this do? ◦ search dokumentace • velmi chybí "offline mód" • zatím slabá customizace
  19. Jak začít • prvních pár týdnů jen pozorujte a zaznamenávejte

    • sejděte se neformálně • skautské pravidlo ◦ zpevňujte testy s každou novou feature nebo fixem ◦ refactoring jako denní chleba • odstraňujte problémy hned • budujete mindset • zpomalte, jděte správným směrem ◦ raději dobře, než zbrkle ◦ nebo aspoň indiánský běh
  20. Sarah …checked her email … new feature to work on

    … began coding … …the design team had not provided her with all of the necessary assets for the page. …Sarah took a break to grab a snack and stretch… …committed her code to version control before updating her to-do list for the next day. Overall, Sarah had a productive and enjoyable day as a front-end developer.
  21. Jason …checked his email … new feature to work on

    … began coding … …he encountered an issue with the database connection. …Just as he was about to reach out to the database administrator for assistance, his computer suddenly crashed and he lost all of his unsaved work. …Frustrated, Jason took a break to grab a snack… …updated his to-do list for the next day… …feeling accomplished despite the initial hinderances he had faced.
  22. Alex …checked his email … new feature to work on

    … began coding … …The design team had provided Alex with a mockup of the chat feature, but it didn't fit well with the existing design… …He also took breaks to stretch and grab a snack… …committed his code to version control before updating his to-do list for the next day. Overall, Alex had a productive and enjoyable day as a full-stack developer.
  23. Laura …checked her email … new feature to work on

    … began coding … …she encountered an issue with the design assets. …She also took breaks to stretch and grab a snack… …committed her code to version control before updating her to-do list for the next day. Overall, Laura had a productive and enjoyable day as a mobile developer.
  24. Naivní společný oběd bla bla bla… …Overall, the group had

    a productive and enjoyable day despite the various challenges and hinderances they had faced.
  25. Realističtější oběd Q: I think in this phase, they would

    have discussed the design team. Play out how this conversation could go in the style of a theater play script. Sarah: "I can't believe how much time I wasted waiting for the design team to provide me with the necessary assets for the responsive layout." Jason: "I had a similar issue yesterday with the payment gateway integration. The mockup they provided didn't match up with the actual design of the site." Alex: "Same here with the chat feature. The design just didn't fit with the rest of the app." Laura: "And don't even get me started on the design assets for the push notification feature. They were in a totally different design tool than what I use." Sarah: "Why do they keep doing this? It's like they don't understand the importance of timely communication and collaboration in the development process."
  26. A jak to bylo u designérů? As the day went

    on, the designers worked with the developers on their projects, trying to iron out any issues and come up with creative solutions. However, some of the developers proved to be more difficult to work with than others. Sarah, the frontend developer, was defensive and uncooperative when Rachel tried to explain the issues with the responsive layout. Jason, the backend developer, was unresponsive and slow to provide the necessary information for the payment gateway integration. Alex, the full-stack developer, was resistant to any suggestions for improving the chat feature. And Laura, the mobile developer, was disorganized and constantly changed her mind about the design for the push notification feature.