Як покращити Code Review? Як це робить Google?

  Рет қаралды 8,889

Віктор Турський про програмування

Віктор Турський про програмування

Жыл бұрын

Є різні підходи до Code Review. Ділюсь своїм досвідом Code Review в Google та інших компаніях
Станьте спонсором цього каналу: / @aboutprogramming
Допоможіть каналу розвиватися й отримуйте доступ до ексклюзивного контенту.
Зміст відео:
0:00 - Вступ
🏠 Мої соцмережі:
Жабаскрипт в телеграмі - t.me/jabascript
Я в Твітер - / viktorturskyi
Мій Linkedin - / turskyi
#programming #javascript #codereview #програмування #українською

Пікірлер: 71
@romanyukartem757
@romanyukartem757 8 ай бұрын
Надавно натрапив на ваш канал. Контент та подача - супер, дякую!
@cruc1anberg
@cruc1anberg 4 ай бұрын
Щастя здоровʼя тобі!!!!
@AdminAdmin-sl2qf
@AdminAdmin-sl2qf 2 ай бұрын
❤❤❤❤❤❤❤❤❤❤❤❤
@atsybulsky
@atsybulsky Жыл бұрын
Бест практіс великих компаній типа гугла - дуже цікаво =)
@olegv5793
@olegv5793 Жыл бұрын
Віктор, дякую за якісний контент! 👍 Було б цікаво дізнатись більше про те як працює зв‘язка PO і Tech Lead. А також про те як працює refinement задач у гуглі.
@McKleeM
@McKleeM Жыл бұрын
Не встиг і моргнути, дякую)))
@user-pt7nz6vc7s
@user-pt7nz6vc7s Жыл бұрын
Дякую за відео 😊
@-Oleg1
@-Oleg1 9 ай бұрын
Все по темі, без води, дякую
@alexanonymous5823
@alexanonymous5823 Жыл бұрын
цікаво, дуже дякую
@shchekavytsia
@shchekavytsia 8 ай бұрын
Прикольні відео! Підписався.
@artemtrush
@artemtrush Жыл бұрын
Мені подобається частота виходу відео ✨🐸 Як в гуглі з пріоритетністю рев'ю перед поточними задачами? Бо зазвичай рекомендують давати фідбек максимально швидко, щоб не блочити людину/фічі. І ще, десь бачив гарну фразу - Пишіть коментарі до коду, а не до людини, яка його написала. (politeness)
@AboutProgramming
@AboutProgramming Жыл бұрын
Звісно краще не блочити людину, але й той, хто створює реквест теж має розуміти, що людина може зараз бути зайнята іншими справами. Якщо рев'ю в рамках одного дня, то це добре. Відносно того, як правильно давати (й сприймати) фідбек, то це окрема тема)
@ivansepp7928
@ivansepp7928 Жыл бұрын
Супер.
@Vladyslav_Sliusar
@Vladyslav_Sliusar Жыл бұрын
О, про анемік модель цікаво послухати)
@AboutProgramming
@AboutProgramming Жыл бұрын
Обов'язково буде відео про це
@Vladyslav_Sliusar
@Vladyslav_Sliusar Жыл бұрын
@@AboutProgramming дяка
@Bohdan-Venhrenovych
@Bohdan-Venhrenovych Жыл бұрын
Топчик
@BelladonGameDeverUA
@BelladonGameDeverUA 8 ай бұрын
Толково розповів Добре, що на ДОУ показали розмову і так я знайшов цей канал
@user-lc7cz2ks6i
@user-lc7cz2ks6i 11 ай бұрын
👍👍👍👍
@vandriichuk
@vandriichuk 2 ай бұрын
Для Гугла може і норм такий складний ревью, але ж безліч проектів, де це овер. Тому думаю, что все від проектів залежить. Для стартапу швидкість імплементації фічі набагато важливіша технічного боргу
@average-user9
@average-user9 9 ай бұрын
Дякую, аж захотілося попрацювати в схожій компанії чи команді, зі схожими принципами... Було б цікаво почути ще, як відбувається процес постановки тасків/задач, від того як з'являється ідея, хто і як її розбиває на фічі і далі на таски
@invilso4051
@invilso4051 9 ай бұрын
Віктор у інтерв'ю на DOU відповідав на схоже питання, якщо коротко то фічі вигадують розробники, вони ж їх і рубають на менші частинки.
@artemkonyukhov6635
@artemkonyukhov6635 9 ай бұрын
Сподобалось, що є ревью архітектури і є ревьювери з редабиліті статусами. Дякую.
@eolit1o
@eolit1o Жыл бұрын
Дякую за відео. Більше контенту :) А як отримати статус readability?
@AboutProgramming
@AboutProgramming Жыл бұрын
Є якійсь процес, де ти маєш підтвердити знання гайдлайнів й правильних практик для певного технологічного стеку, але я поки ніяк не займусь цим)
@MS-fu3zf
@MS-fu3zf 11 ай бұрын
Дякую за поради і класний контент. Може порадите якісь книги чи ресурси по візуалізації архітектури, типу C4?
@AboutProgramming
@AboutProgramming 11 ай бұрын
Я зазвичай або С4 користую, або UML, або просто малюю вже своє щось. Відносно візуалізації, то тут скоріше головне питання в тому, схему чого ми візуалізуємо, а там вже можна підібрати інструмент/стандарт для візуалізаціх. С4 мені дуже подобається, найчастіше малюю container diagram. Якщо про UML, то найчастіше Use Case Diagram та Sequence Diagram. А під все інше все просто квадратики й стрілочки :)
@kbodka
@kbodka 9 ай бұрын
Якщо когось цікавить більше деталей про те як працюють процеси в гуглі, раджу прочитати software engineering at google. Дуже класна книжка, свого часу почерпнув для себе багато цікавих речей.
@AboutProgramming
@AboutProgramming 9 ай бұрын
Окрім того вона в безкоштовному доступі
@bogdannaumenko7571
@bogdannaumenko7571 9 ай бұрын
Дуже цікаво було б послухати про Check-list на прикладі UI... більш детальніше..
@AboutProgramming
@AboutProgramming 9 ай бұрын
Важливе питання, тому затягнув з відповіддю. Тільки відповів про чек-лісти в іншому коментарі. Але я тут подумав, можливо варто зробити якийсь спільний комʼюніті чекліст разом з підписниками каналу. Я би накидав базу, а потім зібрати ще фідбек від писників й зробити спільні документи.. Як ідея? :)
@vasylnahuliak
@vasylnahuliak Жыл бұрын
Як щодо розбиття merge/pull requests на менші? наприклад створюється окрема гілка в яку попадають такі маленькі МР а потім закидується сквошом в основну гілку
@AboutProgramming
@AboutProgramming Жыл бұрын
Будь-яка довгоживуча гілка створює проблеми, навіть якщо в неї регулярно тягнуться дані за мастера. Чим менші реквести й частіше, тим краще. В Google взагалі все живе тільки в основній гілчці й мерджитися можливо тільки в основну гілку. В WebbyLab ми використовуємо переважно "Git One Flow branching model" - такий собі варіант trunk based development
@const_g
@const_g 8 ай бұрын
Майже нічого нового. Але все одно дякую)) цікаво що за муз обладнання у вас там? Ви музикант ще? Може розкажете трохи про це теж?)
@AboutProgramming
@AboutProgramming 8 ай бұрын
Це chromakey)
@const_g
@const_g 8 ай бұрын
​@@AboutProgrammingлол)) а виглядає як справжнє)
@mikemakhovyk6941
@mikemakhovyk6941 9 ай бұрын
Привіт! Ти в інтерв’ю казав, що працюєш над фічами, які можуть розроблятися дуже довго. Як в гуглі відбувається цей процес, коли створюються МРи, де ще не весь функціонал реалізовано, десь work in progress, десь можливо якісь заглушки? Чи залишаються явні коменти/ToDo? Чи МР має бути максимально фіналізований, наскільки можливо?
@AboutProgramming
@AboutProgramming 9 ай бұрын
Все живе в одній гілці й фічі сховані за feature флагами
@eolit1o
@eolit1o Жыл бұрын
Є якісь обмеження у кількості строк коду на один pr?
@AboutProgramming
@AboutProgramming Жыл бұрын
Технічного обмеження немає, є просто рекомендація, що менше зазвичай краще
@maxbabych52
@maxbabych52 Жыл бұрын
На скільки ревьювер повинен бути поглинутий в таск щоб вирішувати чи ця задача вірно зроблена і чи взагалі повинен ревьювер поринати в задачу? Дякую
@AboutProgramming
@AboutProgramming Жыл бұрын
Для readability review це не обов'язково. А от для основного рев'ю дуже корисно розуміти контекст задачі. Й це має бути відповідальність інженера забезпечити рев'ювера контекстом - реквест має бути присвяченій одній зміні, детально описати ідею зміни в реквесті, додати скріншоти, додати посилання на опис задачі, обрати рев'ювера, який вже розуміє задачу чи згоден у неї зануритися
@maxbabych52
@maxbabych52 Жыл бұрын
@@AboutProgramming мені завжди чомусь здавалося що це моя відповідальність розібратися в ревью і виходило що я читаю таск , придумую рішення а потім ще розбираюся як воно реалізовано в пулі , а виходить що було достатньо щоб інженер правильно доніс свою реалізацію. Дуже дякую за слушну пораду і з Новим Роком)
@AboutProgramming
@AboutProgramming Жыл бұрын
@@maxbabych52 так, й якщо щось не зрозуміло, тоді рев'ювер буде задавати питання в коментах й просити пояснити ідею й це буде збільшувати час рев'ю й інженеру доведеться декілька разів повертатися до коду й проходити додаткові ітерації. Через пару таких рев'ю вже сам почне додавати більше контексту, якщо хоче якісне рев'ю
@logcom482
@logcom482 9 ай бұрын
В пітоні з стильом написання коду все простіше не зробив відступи і ніфіга не запуститься)))На С хоч пиши весь код в одному рядку)
@AboutProgramming
@AboutProgramming 9 ай бұрын
Ну там відступи, а там дужки фігурні)
@thankfulperson3309
@thankfulperson3309 Жыл бұрын
Як заохотити всю команду до процесу код рев'ю, коли тільки частина більш-менш активна в цьому питанні?
@AboutProgramming
@AboutProgramming Жыл бұрын
Команда має бачити цінність в код рев'ю. Й тут або вони не розуміють цінність й це треба донести (наприклад, що станеться, якщо всі на проекті відмовляться в код рев'ю), або цінності немає - наприклад, якість коду для керівництва не є важливою й тут можливо треба донести спочатку цінність до керівництва.
@v.ilchenko
@v.ilchenko Жыл бұрын
Ми недавно впровадили стайлгайди (до цього тільки лінтер був) і це прямо суттєво спростило рев‘ю. Більшість коментарів зараз - лінки на док. Тут є питання - чи варто в стайлгайд виносити речі, які покриває статичний аналіз? Умовно «використлвуй let/const замість var» Додав би що корисно на проекті налаштувати codeowners, щоб відповідні люди/команди автоматично асайнились. По архітектурному ревю - як це може виглядати в продукті? Коли у нас одна команда працює над одним проектом. Зараз є декілька senior людей, які можуть зарефакторити проект, але це працює поки для команди в ~50 розробників. Коли вас стає 500, по ідеї потрібна окрема команда під це? Гугл гайди рекомендують робити код рев‘ю протягом 1 дня. Як у вас цього дотримуються? Просто цікаво :)
@AboutProgramming
@AboutProgramming Жыл бұрын
Чим більше стайлгайдів вийде замінити статичним аналізом, тим краще. Тоді вже посилання на доки може давати сам лінтер й рев'юверу не треба витрачати час. Відносно codeowners, то це теж є, але чисто для регулювання прав доступу (тобто галочка від овнера теж завжди потрібна). Відносно архітектурного рев'ю в продукті, то можна роботи рев'ю й командою, яка працює над проектом. Тут головне, щоб це просто було й був менеджмент технічного боргу. Коли над продуктом працює 500 людей, тоді це буде 30-50 команд й тут вже питання як узгодити команди між собою. Різні компанії підходять по різному - хтось за повну автономію, хтось за більше централізацію. Я за децентралізацію, але максимальну стандартизацію й узгодження. Це можна зробити за рахунок: 1. Спільна інфраструктура. Вона зможе прогарантувати схожі процеси й підходи, один й той самий статичний аналіз, один механізм деплойменту й моніторінгу та інше. 2. Спільна документація - рекомендаці по процесам, спільні стайлгайди та інше. 3. Спільна дизайн система й набір компонентів/бібліотек 4. Обмін знаннями (презентації рішень від однієї команди іншим та інше) 5. Різні cross team (company wide) efforts. Часто визначаються, як цілі на рівні директорів й кожна команда забов'язана зарезервувати певний час на іх виконання. Відносно код рев'ю протягом одного дня, то тут просто - бачиш, що вісить на тобі реквест, то почав ранок з цього (або як прийшов з обіду). Якщо у рев'ювера немає часу подивитися, а тобі треба терміново, то можеш попросити напряму або ще додати інших людей для рев'ю у кого є час. Або написати в спільному чаті й спитати, хто може швидко глянути.
@v.ilchenko
@v.ilchenko Жыл бұрын
Дуже інформативно, дякую 🎉
@feelthefreedom
@feelthefreedom 9 ай бұрын
є можливість поділитись чек-лістом по фронтенду?
@AboutProgramming
@AboutProgramming 9 ай бұрын
По фронтенду нажаль чеклістами поділитися не можу, оскільки там частина вимог це приватні вимоги від клієнтів. Але концептуально, це просто документ, який описує стандартні кейси, які мають бути покриті під час розробки фронтенду типу * редірект, коли закінчилася сессія * помилка про проблему з інтернетом, коли пропав звʼязок * лінкі мають відкриватися через CTRL+click й так далі Тут головна ідея в тому, що такі проблеми повторються від проекту до проекту й має сенс десь це документувати, щоб не повторювати помилки. Часом це вирішується за рахунок спільної архітектури, часом процесно, а часом інфраструктурно
@hesher2301
@hesher2301 8 ай бұрын
У вас позаду така музична студія добре напакована) це просто бекграунд?
@AboutProgramming
@AboutProgramming 8 ай бұрын
Просто картинка)
@hesher2301
@hesher2301 8 ай бұрын
@@AboutProgramming жаль
@AboutProgramming
@AboutProgramming 8 ай бұрын
@@hesher2301 ех, сам би хотів
@eolit1o
@eolit1o Жыл бұрын
На який позиції ви працюєте в Google? І який у вас левел?
@AboutProgramming
@AboutProgramming Жыл бұрын
L5
@AboutProgramming
@AboutProgramming Жыл бұрын
й додав посилання на мій Linkedin в опис під відео
@SvoyakD
@SvoyakD 5 ай бұрын
Послухав це все і страшно уявити кінцеву вартість реалізуємих фіч в гуглі. Осообливо коли в аналіз коду повинні включатися розробники, які не працювали над поточною задачею. Бо для якісного ревью потрібне повне занурення, потрібно знати всю архітектуру проекта\модуля, інакше такий аналіз будет дуже поверхневий і неякісний.
@AboutProgramming
@AboutProgramming 5 ай бұрын
Сам жахаюся, бо дуже дуже дорого виходить. Але вартість помилки ще вища
@suhovN
@suhovN 8 ай бұрын
питання щодо review від людини яка має readability status. Хто ассайнить цю людину, автоматизація чи власник ПРу вручну? Чи є явний дозвіл або заборона на те щоб запросити review у декількох таких людей одночасно. Якщо вручну та така людина в іншій команді, як знати що ця людина взагалі доступна, можливо вона out of office у найближчий тиждень або у неї черга подивитись review на стільки велика що твій ПР подивиться тільки через тиждень?
@AboutProgramming
@AboutProgramming 8 ай бұрын
Може бути й вручну й автоматично. Якщо автоматично, то всі перевірки пройдуть автоматично. Якщо вручну, то перевірки можна зробити вручну (написати людині, глянути чи на роботі й тд). Про заборону в декілька людей не чув.
@LyubomyrSemkiv
@LyubomyrSemkiv 9 ай бұрын
З мого досвіду, 8 з 10 ревю які я роблю є неправильними. Воно ніби вирішує проблему, алк створює якісь інші проблеми різного хврактеру, або просто калічно - зайві дії. Глибоке коуд рев‘ю, де перевіряється валідність фікса, а не відповідність якимось сумнівним поактикам є найбільш цінним. Я не подивився все відео, але здається здатність робити такі ревю тут називається рідабіліті статус. Це дцже поавильно і розумно, лише я не розумію, чому у вас при тому дають дизайнити і овнити фічу з непідтвердженими навиками дизайну. Так само як більшість програмістів не вміють програмувати, так само вони не вміють дизайнити.
@AboutProgramming
@AboutProgramming 9 ай бұрын
Всі починають з того, що не вміють дизайнити й треба починати з чогось, щоб отримати цей скіл. Тому проектування корисно й для джунів, просто треба ім допомогати в цьому й задачі мають бути відповідного рівня. Відносно рідабіліті це в першу чергу на відповідність стандартним практикам конкретного стеку, проекту й тут не треба глибокого контексту по фічі, але це теж важливо. Тому рідабіліті апрув завжди має бути до стандартного ревʼю від когось з команди (але це може бути одна й та сами людина, яка й рідабіліті апрувить)
@LyubomyrSemkiv
@LyubomyrSemkiv 9 ай бұрын
​@@AboutProgrammingага, тоді це інше. Це не ability to read code а апрув що code is readable. А дизайнити вичтися краще працюючи "підймайстром" в того, хто вміє дизайнити. Це такий класичний ремеслярський підхід.
@vasylnahuliak
@vasylnahuliak Жыл бұрын
Цілий рік записував відео і на кінець вирішив залити? 😂
@AboutProgramming
@AboutProgramming Жыл бұрын
Аби) Завтра вранці планую зняти ще 2 з готеля))
@mrart5498
@mrart5498 Жыл бұрын
Гарний початок! З нетерпінням чекаємо!
3 речі, які роблять програміста кращим
20:12
Віктор Турський про програмування
Рет қаралды 17 М.
Навіщо потрібні індекси в базі даних? Розберемо на прикладі
19:22
Віктор Турський про програмування
Рет қаралды 9 М.
ШЕЛБИЛАР | bayGUYS
24:45
bayGUYS
Рет қаралды 688 М.
it takes two to tango 💃🏻🕺🏻
00:18
Zach King
Рет қаралды 22 МЛН
Як працює Інтернет? Основні питання про DNS
22:58
Віктор Турський про програмування
Рет қаралды 45 М.
Чому алгоритми важливі? Розберемо на прикладі
23:44
Віктор Турський про програмування
Рет қаралды 14 М.
Як працює Base64 й навіщо він потрібен?
20:00
Віктор Турський про програмування
Рет қаралды 11 М.
Що не так з Інтернетом в кафе? Розбираємо DHCP
21:26
Віктор Турський про програмування
Рет қаралды 73 М.
Головна проблема мікросервісів, яку часто недооцінюють
8:55
Віктор Турський про програмування
Рет қаралды 10 М.
ШЕЛБИЛАР | bayGUYS
24:45
bayGUYS
Рет қаралды 688 М.