SlideShare uma empresa Scribd logo
1 de 139
Baixar para ler offline
ІТЕРАЦІЯ
ЯК
DENYS MISHUNOV
ШЛЯХДОІДЕАЛУ
ДОБРОГОДНЯ
ХТОЯ?
ІТЕРАЦІЯ,ЯКШЛЯХДОІДЕАЛУ
- Вступ (10 хв.)
- Ітерація при розробці ПЗ (40 хв.)
— 10 хв. Перерва —
- Будівельні блоки ітерації в Frontend Engineering (40 хв.)
- Найкращі практики ітераційної розробки на фронтенді (40 хв.)
— 10 хв. Перерва —
- Hands-on завдання: Ітеративна побудова фронтенд проекту (80 хв.)
- Висновки та короткий конспект (10 хв.)
Визначення та важливість
ІТЕРАТИВНИЙПІДХІД
УРОЗРОБЦІПЗ
- Еволюція
- Мистецтво
- Спорт
- "День бабака”
ІТЕРАЦІЯУ
РЕАЛЬНОМУСВІТІ
ІТЕРАЦІЯВРОЗРОБЦІПЗ
ІТЕРАЦІЯПРОТИ“WATERFALL"
ІТЕРАЦІЯВРОЗРОБЦІ
“ЄДИНЕПОСТІЙНЕ
ВЖИТТІ-
ЦЕЗМІНА”
ГЕРАКЛІТ
ІТЕРАТИВНІМЕТОДОЛОГІЇ
- Agile
- Scrum
- Kanban
- Екстремальне
програмування (XP)
ІТЕРАТИВНІ
МЕТОДОЛОГІЇ
- Особистості та взаємодії важливіше процесів та інструментів.
- Робочий програмний продукт має перевагу над детальною документацією.
- Співпраця з замовником вище договірних умов.
- Готовність до змін важливіше, ніж дотримання плану.
AGILEМАНІФЕСТ
ЦІКАВИЙФАКТ
- Agile
- Scrum
- Kanban
- Екстремальне
програмування (XP)
ІТЕРАТИВНІ
МЕТОДОЛОГІЇ
- Робота в Scrum
- Ролі в Scrum
- Scrum Master
- Власник продукту
- Команда розробників
SCRUM
- Agile
- Scrum
- Kanban
- Екстремальне
програмування (XP)
ІТЕРАТИВНІ
МЕТОДОЛОГІЇ
KANBAN
- Візуалізуйте робочий процес
- Обмежуйте роботу в процесі
- Керуйте потоком
- Робіть політики процесів явними
- Реалізуйте зворотній зв'язок
- Співпрацюйте для еволюції
KANBAN
ЦІКАВИЙФАКТ
- Agile
- Scrum
- Kanban
- Екстремальне
програмування (XP)
ІТЕРАТИВНІ
МЕТОДОЛОГІЇ
- Розробка через тестування (TDD)
- Постійна інтеграція
- Парне програмування
- Колективна власність коду
- Рефакторинг
ЕКСТРЕМАЛЬНЕПРОГРАМУВАННЯ(XP)
ЦІКАВИЙФАКТ
ПЕРЕВАГИ
ІТЕРАТИВНОЇРОЗРОБКИ
- Управління ризиками
- Гнучкість і адаптивність планування
- Швидкий вихід на ринок
- Постійне покращення
ПЕРЕВАГИІТЕРАТИВНОЇРОЗРОБКИ
УПРАВЛІННЯРИЗИКАМИ
УПРАВЛІННЯРИЗИКАМИ
ЦІКАВИЙФАКТ
ПЕРЕВАГИІТЕРАТИВНОЇРОЗРОБКИ
- Управління ризиками
- Гнучкість і адаптивність планування
- Швидкий вихід на ринок
- Постійне покращення
ГНУЧКІСТЬ
ГНУЧКІСТЬ
ГНУЧКІСТЬ
ЦІКАВИЙФАКТ
ПЕРЕВАГИІТЕРАТИВНОЇРОЗРОБКИ
- Управління ризиками
- Гнучкість і адаптивність планування
- Швидкий вихід на ринок
- Постійне покращення
ШВИДКИЙВИХІДНАРИНОК
ШВИДКИЙВИХІДНАРИНОК:
MVP
ЦІКАВИЙФАКТ
- Управління ризиками
- Гнучкість і адаптивність планування
- Швидкий вихід на ринок
- Постійне покращення
ПЕРЕВАГИІТЕРАТИВНОЇРОЗРОБКИ
ПОСТІЙНЕПОКРАЩЕННЯ.
KAIZEN
ЦІКАВИЙФАКТ
ІТЕРАТИВНИЙПІДХІД:
ВИСНОВКИ
ПЕРЕВАГИ:
- Управління ризиками
- Гнучкість і адаптивність планування
- Швидкий вихід на ринок
- Постійне покращення
ІТЕРАТИВНИЙПІДХІД
МЕТОДОЛОГІЇ:
- Agile
- Scrum
- Kanban
- XP
"НЕМАЄНІЧОГОБІЛЬШБЕЗГЛУЗДОГО,ЯК
ЕФЕКТИВНОРОБИТИТЕ,ЩОВЗАГАЛІНЕ
ПОВИННОБУТИЗРОБЛЕНО."
ПІТЕР ДРУКЕР
ПЕРЕРВА
10 ХВИЛИН
БУДІВЕЛЬНІБЛОКИІТЕРАЦІЇВ
FRONTENDENGINEERING
ЯКІСТЬКОДУТА
ПІДТРИМУВАНІСТЬ
ЯКІСТЬКОДУТА
ПІДТРИМУВАНІСТЬ
ЯКІСТЬКОДУТА
ПІДТРИМУВАНІСТЬ
ЯКІСТЬКОДУТА
ПІДТРИМУВАНІСТЬ
ЯКІСТЬКОДУ:
МИСТЕЦТВОПИСЬМА
ЦІКАВИЙФАКТ
- Послідовність
- Модульність
- Документація
- Тестування
ПРАКТИКИДЛЯЯКОСТІКОДУ
ПІДТРИМУВАНІСТЬКОДУ
- Вільне зв’язування (Loose coupling)
- Використання патернів (проектування, дизайн, тощо)
- Правильна обробка помилок
- Контроль версій
- Перевірка коду
ПРАКТИКИДЛЯПІДТРИМУВАНОСТІКОДУ
ЯКІСТЬКОДУТАІТЕРАЦІЇ
КОМПОНЕНТНО-ОРІЄНТОВАНА
РОЗРОБКА
(COMPONENT-DRIVEN DEVELOPMENT)
ЦІКАВИЙФАКТ
ЩОТАКЕ
КОМПОНЕНТНО-ОРІЄНТОВАНА
РОЗРОБКА?
КОМПОНЕНТИУ
ФРОНТЕНДІЇ
- Швидший розвиток
- Спрощене тестування
- Поліпшена підтримка та супровід
- Сприяння співпраці
ПЕРЕВАГИКОМПОНЕНТНО-ОРІЄНТОВАНОЇРОЗРОБКИ
ЦІКАВИЙФАКТ
ПОПУЛЯРНІБІБЛІОТЕКИТА
ФРЕЙМВОРКИДЛЯCDD
- React
- Vue
- Angular
- Svelte
КОМПОНЕНТНО-ОРІЄНТОВАНІФРЕЙМВОРКІ
РЕКОМЕНДАЦІЇ:
- Єдність
- Модульність
- Тестування
- Документація
НАЙКРАЩІПРАКТИКИДЛЯКОМПОНЕНТІВ
ПРАКТИКИ:
- Чітке визначення обов'язків
- Коректна інкапсуляція стану та логіки
- Використання утиліт та міксінів
- Послідовність у найменуваннях
- Документація та коментарі
БІБЛІОТЕКИКОМПОНЕНТІВ
ТА
СИСТЕМИДИЗАЙНУ
БІБЛІОТЕКИКОМПОНЕНТІВ
ТА
СИСТЕМИДИЗАЙНУ
БІБЛІОТЕКИКОМПОНЕНТІВ
ТА
СИСТЕМИДИЗАЙНУ
БІБЛІОТЕКИКОМПОНЕНТІВ
ТА
СИСТЕМИДИЗАЙНУ
- @gitlab/ui
- MUI (раніше відома як Material-UI)
- Ant Design
- Bootstrap
- Tailwind
- інші
ПОПУЛЯРНІБІБЛІОТЕКИКОМПОНЕНТІВТАСИСТЕМИДИЗАЙНУ
БІБЛІОТЕКИКОМПОНЕНТІВТА
СИСТЕМИДИЗАЙНУ:НАВІЩО
РЕФАКТОРИНГ
- Зменшення технічного боргу
- Покращення зрозумілості
коду
- Покращення підтримуваності
- Збільшення розширюваності
ПЕРЕВАГИ
ІНКРЕМЕНТАЛЬНОГО
РЕФАКТОРИНГУ
- Правило хлопчика-скаута
- Червоний-Зелений-
Рефакторинг
- Розділити та панувати
СТРАТЕГІЇ
ІНКРЕМЕНТАЛЬНОГО
РЕФАКТОРИНГУ
- Зменшення технічного боргу
- Покращена зрозумілість коду
- Покращена підтримуваність
- Збільшена розширюваність
- Вища якість коду
- Співпраця та обмін знанням
- Спрощення перевірок коду та інтеграції
ПЕРЕВАГИІНКРЕМЕНТАЛЬНОГОРЕФАКТОРИНГУ
- JavaScript - Simplifying Complex Conditional
ПРИКЛАДРЕФАКТОРІНГУ
function canAccessContent(user) {
if (
user.isLoggedIn &&
user.subscription.isActive &&
user.subscription.level > 2 &&
user.age >= 18
) {
return true;
}
return false;
}
- JavaScript - Simplifying Complex Conditional
- Incrementally refactor this to make it more
readable
ПРИКЛАДИРЕФАКТОРІНГУ
function canAccessContent(user) {
if (
user.isLoggedIn &&
user.subscription.isActive &&
user.subscription.level > 2 &&
user.age >= 18
) {
return true;
}
return false;
}
function isSubscribed(user) {
return user.subscription.isActive
&& user.subscription.level > 2;
}
function isOfAge(user) {
return user.age >= 18;
}
function canAccessContent(user) {
return user.isLoggedIn &&
isSubscribed(user) && isOfAge(user);
}
TDD,
ЮНІТ-ТЕСТУВАННЯ
ПОДОРОЖУЧАСІ:
ІСТОРІЯТЕСТУВАННЯ
ПОДОРОЖУЧАСІ:
ІСТОРІЯТЕСТУВАННЯ
ПІОНЕРИ ТЕСТУВАННЯ
ПОДОРОЖУЧАСІ:
ІСТОРІЯТЕСТУВАННЯ
AGILE РЕВОЛЮЦІЯ
- Покращена якість коду
- Швидкий розвиток та легке
відлагодження
- Покращене співробітництво
ПЕРЕВАГИTDDТА
ЮНІТ-ТЕСТУВАННЯ
TDD:
ЧЕРВОНИЙ-ЗЕЛЕНИЙ-РЕФАКТОРИНГ
Пишемо тест який падає
TDD:ЧЕРВОНИЙ // user_list.spec.js
const { renderUserList } = require("./user-list");
test("renderUserList should return correct HTML", () => {
const users = [
{ name: "Alice", isOnline: true },
{ name: "Bob", isOnline: false },
];
const expectedHTML = `
<ul>
<li>Alice (online)</li>
<li>Bob (offline)</li>
</ul>`;
expect(renderUserList(users)).toBe(expectedHTML);
});
Пишемо МІНІМАЛЬНИЙ функціонал
щоб тест пройшов
TDD:ЗЕЛЕНИЙ // user-list.js
function renderUserList(users) {
let userListHTML = "<ul>";
users.forEach((user) => {
const status = user.isOnline ? "online" : "offline";
userListHTML += `<li>${user.name} (${status})</li>`;
});
userListHTML += "</ul>";
return userListHTML;
}
module.exports = { renderUserList };
Оптимізація, помилки,
додаткові перевірки, тощо
РЕФАКТОРИНГ
// user-list.js
function renderUserList(users) {
const userListItems = users.map((user) => {
const status = user.isOnline ? "online" : "offline";
return `<li>${user.name} (${status})</li>`;
});
return `<ul>${userListItems.join("")}</ul>`;
}
module.exports = { renderUserList };
// user-list.js
function renderUserList(users) {
let userListHTML = "<ul>";
users.forEach((user) => {
const status = user.isOnline ? "online" : "offline";
userListHTML += `<li>${user.name} (${status})</li>`;
});
userListHTML += "</ul>";
return userListHTML;
}
module.exports = { renderUserList };
- Використовуйте описові назви тестів
ПОРАДИДЛЯЮНІТ-ТЕСТУВАННЯ
Пишемо тест який падає
TDD:ЧЕРВОНИЙ // user_list.spec.js
const { renderUserList } = require("./user-list");
test("renderUserList should return correct HTML", () => {
const users = [
{ name: "Alice", isOnline: true },
{ name: "Bob", isOnline: false },
];
const expectedHTML = `
<ul>
<li>Alice (online)</li>
<li>Bob (offline)</li>
</ul>`;
expect(renderUserList(users)).toBe(expectedHTML);
});
- Використовуйте описові назви тестів
- Зберігайте тести простими та фокусованими
- Не забувайте про крайні випадки
ПОРАДИДЛЯЮНІТ-ТЕСТУВАННЯ
“УСПІХ—ЦЕТЕ,ЩОВІДБУВАЄТЬСЯ,КОЛИ
ПІДГОТОВКАЗУСТРІЧАЄТЬСЯЗ
МОЖЛИВІСТЮ”
СЕНЕКА
ПОСТІЙНАІНТЕГРАЦІЯ(CI)
ТА
ПОСТІЙНЕРОЗГОРТАННЯ(CD)
ІСТОРІЯCI/CD
ПОСТІЙНЕРОЗГОРТАННЯ(CD)
- Виявлення помилок на
ранніх етапах
- Швидкий зворотний зв'язок
- Стабільний користувацький
досвід
ЧОМУCI/CDВАЖЛИВІ
ДЛЯFRONTEND?
CI/CDТАПРОМИСЛОВАРЕВОЛЮЦІЯ
- Скоріший випуск змін коду
- Більша надійність
- Стабільний користувацький досвід
ПЕРЕВАГИCI/CDВРОЗРОБЦІПЗ
CI/CDALPHA
- GitLab CI/CD
- Jenkins
- CircleCI
- Travis CI
- Github Actions
ІНСТРУМЕНТИCI/CD
- Коллекція шаблонів CI/CD
конфігурацій
ПРИКЛАДИУGITLAB
https://tinyurl.com/yc3dx8d9
- Коллекція шаблонів CI/CD
конфігурацій
ПРИКЛАДИУGITLAB
https://tinyurl.com/yc3dx8d9
// test-add.spec.js
const add = require('./add');
test('add 1 + 2 to equal 3', () => {
expect(add(1, 2)).toBe(3);
});
# .gitlab-ci.yml
image: node:latest
stages:
- test
test:
stage: test
script:
- npm install
- npm run test
- Коллекція шаблонів CI/CD
конфігурацій
ПРИКЛАДИУGITLAB
https://tinyurl.com/yc3dx8d9
# .gitlab-ci.yml
stages:
- test
- deploy
test:
image: node:latest
stage: test
script:
- npm ci
- npm test
pages:
image: node:latest
stage: deploy
script:
- mkdir .public
- cp -r ./* .public
- rm -rf public
- mv .public public
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
CI/CD-СУПЕРГЕРОЇРОЗРОБКИПЗ
НАЙКРАЩІПРАКТИКИ
ІТЕРАЦІЇНАФРОНТЕНДІ
- Використання Git для контролю версій
- Єдині стандарти кодування та перевірка коду на помилки (Linting)
- Правильне документування та коментування коду
- Парне програмування
НАЙКРАЩІПРАКТИКИІТЕРАЦІЇНАФРОНТЕНДІ
ВИКОРИСТАННЯGITДЛЯ
КОНТРОЛЮВЕРСІЙ
- Коміти: Атомарні, Часті та
Інформативні
- Гілки: для контекстуальної ізоляції
та структуризації
- Merge vs. Rebase: стратегічний
вибір
- Merge / Pull Requests як
платформа для співпраці та
рецензування
- .gitignore як охоронець вашого
репозиторію
ВИКОРИСТАННЯGIT
ДЛЯКОНТРОЛЮВЕРСІЙ
- Використання Git для контролю версій
- Єдині стандарти кодування та перевірка коду на помилки (Linting)
- Правильне документування та коментування коду
- Парне програмування
НАЙКРАЩІПРАКТИКИІТЕРАЦІЇНАФРОНТЕНДІ
ЄДИНІСТАНДАРТИ
КОДУВАННЯТАLINTING
ЩОТАКЕСТАНДАРТИ
КОДУВАННЯ?
- Покращена читабельність
- Зменшення помилок
- Покращена підтримуваність
- Збільшена продуктивність
ПЕРЕВАГИСТАНДАРТІВ
КОДУВАННЯ
JAVASCRIPTSTYLE
GUIDEВІДAIRBNB
- https://airbnb.io/javascript/
ЩОТАКЕЛІНТІНГ?
- ESLint: https://eslint.org/
ІНСТРУМЕНТИДЛЯ
ОФОРМЛЕННЯКОДУ
- Prettier: https://eslint.org/
ЧОМУВАЖЛИВОДОТРИМУВАТИСЬ
СТАНДАРТІВКОДУВАННЯ?
- ESLint
- Prettier
- Lefthook
ІНСТРУМЕНТИУ
JAVASCRIPTПРОЕКТІ
# 1. Встановіть ESLint, Prettier та Lefthook
➜ ~ npm install eslint prettier lefthook --save-dev
# 2. У кореневій директорії проекту налаштуйте файл
# `.eslintrc.json` для ESLint з правилами, які ви хочете
# застосувати.
# 3. Налаштуйте файл `.prettierrc` для Prettier, в якому ви
# вказуєте свої уподобання щодо форматування коду.
# 4. Ініціалізуйте та налаштуйте Lefthook у вашому проекті:
➜ ~ npx lefthook install
# 5. Створіть файл конфігурації `lefthook.yml` в кореневій
# директорії проекту:
pre-commit:
parallel: true
commands:
eslint:
glob: "*.{js,jsx,ts,tsx}"
run: npx eslint {staged_files} --fix
prettier:
glob: "*.{js,jsx,ts,tsx,css,md,json,yml}"
run: npx prettier --write {staged_files}
ПОСЛІДОВНІСТЬ-КЛЮЧДО
УСПІХУ
- Використання Git для контролю версій
- Єдині стандарти кодування та перевірка коду на помилки (Linting)
- Правильне документування та коментування коду
- Парне програмування
НАЙКРАЩІПРАКТИКИІТЕРАЦІЇНАФРОНТЕНДІ
ДОКУМЕНТУВАННЯТА
КОМЕНТУВАННЯКОДУ
- Чіткість мети
ДОКУМЕНТУВАННЯТА
КОМЕНТУВАННЯКОДУ
- Чіткість мети
ДОКУМЕНТУВАННЯТА
КОМЕНТУВАННЯКОДУ
function addToCart(id, qty) {
// TODO: implement
}
- Чіткість мети
ДОКУМЕНТУВАННЯТА
КОМЕНТУВАННЯКОДУ
function addToCart(id, qty) {
// TODO: implement
}
/**
* Adds an item to the shopping cart.
*
* @param {string} id - The unique identifier of the product.
* @param {number} qty - The quantity of the product to add.
*/
function addToCart(id, qty) {
// TODO: implement
}
- Чіткість мети
- Послідовність
- JSDoc для JavaScript
- Sphinx для Python
- Doxygen для C++
- ESLint та Prettier
ДОКУМЕНТУВАННЯТА
КОМЕНТУВАННЯКОДУ
НЕОБХІДНІСТЬОНОВЛЕНОЇ
ДОКУМЕНТАЦІЇ
КОД
- Docusaurus
- MkDocs
- VuePress
- etc.
API
- Swagger
- Postman
АВТОМАТИЗАЦІЯДОКУМЕНТУВАННЯ
- Read the Docs
- Con
fl
uence
- GitLab Wiki
- GitHub Wiki
ІНСТРУМЕНТИДЛЯРОЗМІЩЕННЯДОКУМЕНТАЦІЇ
ВАЖЛИВІСТЬКОМЕНТАРІВВ
КОДІ
ВАЖЛИВІСТЬПРИКЛАДІВ
КОДУВДОКУМЕНТАЦІЇ
ВАЖЛИВІСТЬПРИКЛАДІВ
КОДУВДОКУМЕНТАЦІЇ /**
* Calculates the total price of the items in the cart.
*
* @param {Object[]} cart - An array of cart items. Each
item should have 'id', 'qty', and 'price'.
* @return {number} The total price.
*/
function calculateTotal(cart) {
// TODO: implement
}
ВАЖЛИВІСТЬПРИКЛАДІВ
КОДУВДОКУМЕНТАЦІЇ
/**
* Calculates the total price of the items in the cart.
*
* @param {Object[]} cart - An array of cart items. Each
item should have 'id', 'qty', and 'price'.
* @return {number} The total price.
*/
function calculateTotal(cart) {
// TODO: implement
}
/**
* Calculates the total price of the items in the cart.
*
* @param {Object[]} cart - An array of cart items. Each
item should have 'id', 'qty', and 'price'.
* @return {number} The total price.
*
* Example usage:
*
* const cart = [
* { id: '1', qty: 2, price: 50 },
* { id: '2', qty: 1, price: 100 },
* ];
* calculateTotal(cart);
*/
function calculateTotal(cart) {
// TODO: implement
}
- Використання Git для контролю версій
- Єдині стандарти кодування та перевірка коду на помилки (Linting)
- Правильне документування та коментування коду
- Парне програмування
НАЙКРАЩІПРАКТИКИІТЕРАЦІЇНАФРОНТЕНДІ
ПАРНЕПРОГРАМУВАННЯ
- Регулярна зміна ролей
- Ефективна комунікація
- Повага та терпіння
- Збалансований підбір пар
- Робіть перерви
НАЙКРАЩІПРАКТИКИПАРНОГО
ПРОГРАМУВАННЯ(LISTBELOW)
СИНЕРГІЯКОД-РЕВ'ЮТА
ПАРНОГОПРОГРАМУВАННЯ
HANSEI
ВПЛИВКУЛЬТУРИКОМАНДИНА
ЕФЕКТИВНІСТЬКОД-РЕВ'ЮТАПАРНОГО
ПРОГРАМУВАННЯ
ПРОЦЕС,НЕЛИШЕРЕЗУЛЬТАТ
ПЕРЕРВА
10 ХВИЛИН
HANDS-ONЗАВДАННЯ
ВИСНОВКИТАПІДСУМКИ

Mais conteúdo relacionado

Mais de Fwdays

Mais de Fwdays (20)

"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 
"Leadership, Soft Skills, and Personality Types for IT teams", Sergiy Tytenko
"Leadership, Soft Skills, and Personality Types for IT teams",  Sergiy Tytenko"Leadership, Soft Skills, and Personality Types for IT teams",  Sergiy Tytenko
"Leadership, Soft Skills, and Personality Types for IT teams", Sergiy Tytenko
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"Mastering cross-cultural communication", Anna Gandrabura
"Mastering cross-cultural communication", Anna Gandrabura"Mastering cross-cultural communication", Anna Gandrabura
"Mastering cross-cultural communication", Anna Gandrabura
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...
 
"AIRe - AI Reliability Engineering", Denys Vasyliev
"AIRe - AI Reliability Engineering", Denys Vasyliev"AIRe - AI Reliability Engineering", Denys Vasyliev
"AIRe - AI Reliability Engineering", Denys Vasyliev
 
"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura Rochniak"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura Rochniak
 
"How to mentor (future) devops engineers", Vsevolod Polyakov
"How to mentor (future) devops engineers",  Vsevolod Polyakov"How to mentor (future) devops engineers",  Vsevolod Polyakov
"How to mentor (future) devops engineers", Vsevolod Polyakov
 
"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
 

Workshop "Iteration as a Path to Perfection", Denys Mishunov