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

[SnowOne 2023] Александр Кучук: Советы для продолжающих от Кучука

jugnsk
March 17, 2023

[SnowOne 2023] Александр Кучук: Советы для продолжающих от Кучука

Кучук Александр собирается преподнести миру вторую часть своих (не)бесполезных советов.

Рассмотрим популярные ошибки, которые которые часто совершают разработчики. Разберем код, который вы встретите, спустимся в src.test подвал, вспомним грабли, которые больно ударили автора доклада, ну и не пройдем мимо софт-скиллов, которые быстро твердеют в большой корпорации.

jugnsk

March 17, 2023
Tweet

More Decks by jugnsk

Other Decks in Programming

Transcript

  1. Кто я • Преподавал в МФТИ(ГУ) • Преподаю в НИУ

    ВШЭ ФКН • Пишу на Java
 Но с ошибками могу еще и на других языках • Тимлид • Соведущий подкаста «Вторая пересдача» • Пишу в твиттер @aarexer • Пишу в телеграм-блог @aarexer_blog 3
  2. 4

  3. Исключения К чему привело решение • Добро пожаловать в мир

    ошибок
 ERROR: Can’t decrypt by …. • Нам не страшно видеть ERROR в логе 11
  4. Исключения К чему привело решение • Добро пожаловать в мир

    ошибок
 ERROR: Can’t decrypt by …. • Нам не страшно видеть ERROR в логе • Нам уже вообще ничего не страшно 12
  5. 14

  6. Исключения Оцениваем проект через призму исключений Лучший способ понять качество

    кода - это посмотреть, насколько хорошо в этом коде организована работа с исключительными случаями 15
  7. Исключения Исключение - это НЕ способ замазать ошибку или сделать

    так, чтобы ваша программа не выдавала ошибки (с) Георгий Курячий https://youtu.be/hjVmyU7N8Jo Канал UNИX 
 Читает Георгий Курячий 18
  8. Исключения Клиент-серверный пример Кто здесь источник ошибок? • Пользователь •

    Разработчики • Менеджеры • БД/Инфраструктура/Сеть Мой сервер Команда разработки 24
  9. Исключения Клиент-серверный пример Кто здесь источник ошибок? • Пользователь •

    Разработчики • Менеджеры • БД/Инфраструктура/Сеть 25
  10. Исключения Исключение - это НЕ ошибка, а нелинейная передача управления,

    способ обработки некоторых условий не там, где они были обнаружены (с) Георгий Курячий Канал UNИX 
 Читает Георгий Курячий https://youtu.be/hjVmyU7N8Jo 34
  11. Исключения • Разные по смыслу и нужны для разных целей


    Бизнес-сценарий
 Ошибка пользователя
 Ошибка разработчика
 Завязаны на Framework (Привет, Spring!) • Может быть красным флагом для оценки проекта • Думать: как будут ситуации обрабатываться и для кого эта обработка, к чему она может привести • Не лениться и строго следить за работой с этим инструментом 35
  12. Логирование Пользователь шлет дичь • Перехватим исключение ДО пользователя •

    Подробно расскажем пользователю что не так он ввел/сделал • Минимально запишем в лог
 Мой сервер 45
  13. Логирование Разработчик сделал дичь • Перехватим исключение ДО пользователя •

    Минимально расскажем пользователю что не так • Максимально подробно запишем в лог • Отдать ID ошибки - для идентификации
 и упрощения поиска
 46
  14. Логирование Итог • MDC/Structured Logging • Думайте: как лог поможет

    вам быстро найти проблему • Помните: лог - это единственный друг и относиться к нему надо соответствующе 49
  15. Документация Что нужно сделать в первую очередь, когда вы пришли

    на проект, а там отличная документация? A. Сказать спасибо менеджеру 53
  16. Документация Что нужно сделать в первую очередь, когда вы пришли

    на проект, а там отличная документация? A. Сказать спасибо менеджеру B. Сказать спасибо тимлиду 54
  17. Документация Что нужно сделать в первую очередь, когда вы пришли

    на проект, а там отличная документация? A. Сказать спасибо менеджеру B. Сказать спасибо тимлиду C. Сказать спасибо родителям тимлида
 за воспитание такого сына/дочери 55
  18. Документация Что нужно сделать в первую очередь, когда вы пришли

    на проект, а там отличная документация? A. Сказать спасибо менеджеру B. Сказать спасибо тимлиду C. Сказать спасибо родителям тимлида
 за воспитание такого сына/дочери D. Поблагодарить судьбу 56
  19. Документация Что нужно сделать в первую очередь, когда вы пришли

    на проект, а там отличная документация? Проснуться 57
  20. Документация Что нужно сделать в первую очередь, когда вы пришли

    на проект, а там отличная документация? Проснуться А я и не спал 57
  21. Документация Реальность: есть разработчик/тимлид кто давно на проекте и он

    единственный знает как все работает Остальные знания разбросаны
 по команде частями 59
  22. Документация Реальность: есть разработчик/тимлид кто давно на проекте и он

    единственный знает как все работает Остальные знания разбросаны
 по команде частями Он единственный, кто всё знает о проекте 59
  23. Документация Реальность: есть разработчик/тимлид кто давно на проекте и он

    единственный знает как все работает Остальные знания разбросаны
 по команде частями Он единственный, кто всё знает о проекте 59
  24. Документация Реальность: есть разработчик/тимлид кто давно на проекте и он

    единственный знает как все работает Остальные знания разбросаны
 по команде частями Он единственный, кто всё знает о проекте К сожалению, это просто картинка 59
  25. Документация Мы поняли как плохо без документации и решили исправиться.

    JIRA-14950: Добавить документацию сервису Было: Стало: 64
  26. Документация JavaDoc на русском! • Это не психическое заболевание •

    Не надо этого стесняться • Не всем проектам и командам надо писать на английском языке 75
  27. Документация JavaDoc на русском! • Это не психическое заболевание •

    Не надо этого стесняться • Не всем проектам и командам надо писать на английском языке • От того, что вы пишете с ошибками, лучше не станет никому • Посмотрите для кого вы пишите код и документацию 76
  28. Logger Итог • Сидели 2 часа • Подключали даже внутренние

    чакры • Все в итоге заработало • Разработчик уволился через 3 месяца 89
  29. Документация • Это тяжело, рутинно • Это навык, подобный программированию,

    который надо развивать • Помогает разработке и даже вам самим • Позволит вам попасть в рай • На русском языке тоже можно писать • Покажите документацию другу 90
  30. Документация • Это тяжело, рутинно • Это навык, подобный программированию,

    который надо развивать • Помогает разработке и даже вам самим • Позволит вам попасть в рай • На русском языке тоже можно писать • Покажите документацию другу НЕ ОСТАВЛЯЙТЕ СЛЕДОВ 91
  31. Тестирование Я пишу на статически типизированном языке - у меня

    уже есть тесты! • Тесты бывают разные • Мы будем рассматривать unit-тесты 94
  32. Тестирование Тесты - это искусство • Каждый раз когда вы

    смотрите на тест - он должен объяснять свою необходимость или должен быть удален 98
  33. Тестирование Тесты - это искусство • Каждый раз когда вы

    смотрите на тест - он должен объяснять свою необходимость или должен быть удален • Если тест падает, то он должен не только падать, но и внятно "объяснить" почему 99
  34. Тестирование Тесты - это искусство • Каждый раз когда вы

    смотрите на тест - он должен объяснять свою необходимость или должен быть удален • Если тест падает, то он должен не только падать, но и внятно "объяснить" почему • В assert-ах есть message, а еще есть @DisplayName 100
  35. Тестирование Что посмотреть • jUnit5, Mockito, Spock, Power Assert, Truth,

    AssertJ • Разные подходы TDD, BDD • https://youtu.be/1XoQv5oeAm8 106
  36. Тестирование Что посмотреть • jUnit5, Mockito, Spock, Power Assert, Truth,

    AssertJ • Разные подходы TDD, BDD • https://youtu.be/K-eA9ZIkJBg • 107
  37. Тестирование Обратная сторона медали • Это вторая кодовая база •

    Это может существенно тормозить
 разработку 109
  38. Тестирование Обратная сторона медали • Это вторая кодовая база •

    Это может существенно тормозить
 разработку • Плохие юнит тесты иногда хуже, чем их
 полное отсутствие - это ложное 
 чувство защищенности 110
  39. Тестирование Обратная сторона медали • Это вторая кодовая база •

    Это может существенно тормозить
 разработку • Плохие юнит тесты иногда хуже, чем их
 полное отсутствие - это ложное 
 чувство защищенности • Особенно, если нет культуры 111
  40. Тестирование Помните • Не надо бежать писать сразу тесты -

    если функциональность постоянно меняется и вы в процессе активной разработки и творения • Тесты - это еще одна документация • Тест должен кричать почему он упал • Писать тесты - это тоже навык 112
  41. Выводы: Нормально делай - нормально будет! • Внедряйте Peer review


    Возможно, даже вживую • Думайте с позиции пользователя
 Сделали большую фичу - покажите ее кому-то • Развивайте в себе навыки документации • Меняйте отношение к тестам • Повышайте культуру
 Разработка - это не только написание кода 114
  42. Пора прощаться • Твиттер: @aarexer • Телеграм-блог @aarexer_blog • Заметки

    по Java и программированию: 
 https://github.com/qcha/JBook • Подкаст с Углянским:
 https://www.youtube.com/@second_retake 116