Зачем тогда нужен кодревью?
У нас в чате подняли справедливый вопрос «вот я хочу понять что сделал автор в своем реквесте. Оценить риски, понять как интегрироваться с системой. Где мне это делать?»
Точно не на этапе, когда код был написан и сдан на проверку.
Знакомство с фичей должно быть раньше. Задолго до того, когда код начнут писать. Должно быть знакомство с будущей технологией, ее интеграцией и процессом раскатки.
В авито это решается через TDR (tech design review). Именно там происходят все жаркие беседы и спор куда и зачем что пихнуть.
В мобилке они не так сильно развиты, но мне кажется, потому что пока мы не сильно знакомы с этим.
Подробнее о них можно почитать тут и тут
У нас в чате подняли справедливый вопрос «вот я хочу понять что сделал автор в своем реквесте. Оценить риски, понять как интегрироваться с системой. Где мне это делать?»
Точно не на этапе, когда код был написан и сдан на проверку.
Знакомство с фичей должно быть раньше. Задолго до того, когда код начнут писать. Должно быть знакомство с будущей технологией, ее интеграцией и процессом раскатки.
В авито это решается через TDR (tech design review). Именно там происходят все жаркие беседы и спор куда и зачем что пихнуть.
В мобилке они не так сильно развиты, но мне кажется, потому что пока мы не сильно знакомы с этим.
Подробнее о них можно почитать тут и тут
Telegram
Product Developer
Technical Design Review (TDR)
Зачем нужно кодревью — понятно. У каждой компании есть инструмент для кодревью. У многих команд есть договоренности и практики по кодревью. Например, «смотреть PR до стендапа», «критикуешь — предлагай» и тд.
Но у кодревью есть…
Зачем нужно кодревью — понятно. У каждой компании есть инструмент для кодревью. У многих команд есть договоренности и практики по кодревью. Например, «смотреть PR до стендапа», «критикуешь — предлагай» и тд.
Но у кодревью есть…
Forwarded from Product Developer (Nikita Khromushkin)
Культура код-ревью: приоритеты и скорость
Можно ли обойтись без ревью ради ускорения Time-to-Market? Теоретически да, но:
1. Можно пропустить косяки
2. Код станет труднее поддерживать
3. Уход единственного разработчика может остановить проект
Альтернативы есть: парное программирование или TDR. Но они подходят не всем.
Поэтому большинство проводит код-ревью. И у большинства есть боль — «зависание» задачи на ревью.
Порефлексировал, почему кодревью затягивается, и что мы делали, чтобы это порешать.
Спойлер: мысли почерпнул в Google’s Code Review Guidelines. Далее буду ссылаться на конкретные части.
👨💻 Удовлетворение на этапе открытия PR
Speed of Code Reviews
Разработчик отправляет код на ревью и с чувством выполненной работы берётся за новую задачу.
Очень легко говорить «никто не ревьювит мой PR». Но кто будет ревьюить, если все кодят?
Так происходит, если написание нового кода поощряется больше, чем ревью.
Команда отличается от рабочей группы наличием общей цели. Для команды должно быть важнее дотолкать цель до прода, чем написать как можно больше кода.
А чтобы доводить цель до прода — код-ревью должно быть быстрым.
Задача тимлида и самих разработчиков — создать культуру, поощряющую быстрое ревью.
«Начал день — сделай ревью, прежде чем сесть кодить. На дейли обсудите спорные моменты.»
🤌 Огромные PR
Why Write Small CLs
Ревьюить атомарные PR на несколько файлов и сотню строк гораздо проще и быстрее, чем 10k строк.
- Маленькие PR ревьювят быстрее и тщательнее.
- Меньше переделывать, быстрее правки по комментам.
- Проще мержить и разрешать конфликты.
- Проще раскатывать в прод и откатывать изменения
Фича кажется «неделимой»? Попробуйте Trunk-based development: слияние в мастер не всегда рабочего кода, закрытого фича-флагами. Начало разработки с абстракций, слияние, затем написание имплементаций.
🏓 Ревью-пинг-понг
Допустим, ревью происходит быстро, но идёт уже десятая итерация.
Почему так?
1️⃣ — Новые комменты к нетронутому коду
Если ревьюер оставляет новые комментарии к неизмененному коду — это проблема. Важно за одну итерацию ревью написать все комменты, обязательные к исправлению.
Так может происходить, если ревьювер цепляется то за одно, то за другое.
Хорошее правило: «PR не должен быть идеальным — он должен улучшать код проекта на одну ступеньку».
Могут помочь статьи What to look for in a code review и Navigating in ChangeList.
2️⃣ — Комменты к исправлениям
Если комменты появляются к тому, как автор переписал код с учетом прошлых комментов — скорее всего стоит улучшить комментарии.
- Стоит объяснять, почему просишь изменений.
- Стоит разделять обязательные к исправлению пункты и опциональные.
- Стоит в явном виде писать, как предлагаешь изменить. Можно даже с частями кода.
«Критикуешь — предлагай».
How to write Review Comments
===
Итог
Мы добавили в чат бота, который каждое утро скидывает список PR для ревью. Бот приходит в личку, если ревью висит больше дня.
Но всё это не работает до тех пор, пока культура ревью не выстроена.
Как только ревью стало такой же целевой работой, как и написание кода — стало быстрее.
Это не все причины, почему задачи могут зависать на ревью.
Поделитесь опытом в комментах — какие проблемы с ревью были у вас и как решали?
Можно ли обойтись без ревью ради ускорения Time-to-Market? Теоретически да, но:
1. Можно пропустить косяки
2. Код станет труднее поддерживать
3. Уход единственного разработчика может остановить проект
Альтернативы есть: парное программирование или TDR. Но они подходят не всем.
Поэтому большинство проводит код-ревью. И у большинства есть боль — «зависание» задачи на ревью.
Порефлексировал, почему кодревью затягивается, и что мы делали, чтобы это порешать.
Спойлер: мысли почерпнул в Google’s Code Review Guidelines. Далее буду ссылаться на конкретные части.
👨💻 Удовлетворение на этапе открытия PR
Speed of Code Reviews
Разработчик отправляет код на ревью и с чувством выполненной работы берётся за новую задачу.
Очень легко говорить «никто не ревьювит мой PR». Но кто будет ревьюить, если все кодят?
Так происходит, если написание нового кода поощряется больше, чем ревью.
Команда отличается от рабочей группы наличием общей цели. Для команды должно быть важнее дотолкать цель до прода, чем написать как можно больше кода.
А чтобы доводить цель до прода — код-ревью должно быть быстрым.
Задача тимлида и самих разработчиков — создать культуру, поощряющую быстрое ревью.
«Начал день — сделай ревью, прежде чем сесть кодить. На дейли обсудите спорные моменты.»
🤌 Огромные PR
Why Write Small CLs
Ревьюить атомарные PR на несколько файлов и сотню строк гораздо проще и быстрее, чем 10k строк.
- Маленькие PR ревьювят быстрее и тщательнее.
- Меньше переделывать, быстрее правки по комментам.
- Проще мержить и разрешать конфликты.
- Проще раскатывать в прод и откатывать изменения
Фича кажется «неделимой»? Попробуйте Trunk-based development: слияние в мастер не всегда рабочего кода, закрытого фича-флагами. Начало разработки с абстракций, слияние, затем написание имплементаций.
🏓 Ревью-пинг-понг
Допустим, ревью происходит быстро, но идёт уже десятая итерация.
Почему так?
1️⃣ — Новые комменты к нетронутому коду
Если ревьюер оставляет новые комментарии к неизмененному коду — это проблема. Важно за одну итерацию ревью написать все комменты, обязательные к исправлению.
Так может происходить, если ревьювер цепляется то за одно, то за другое.
Хорошее правило: «PR не должен быть идеальным — он должен улучшать код проекта на одну ступеньку».
Могут помочь статьи What to look for in a code review и Navigating in ChangeList.
2️⃣ — Комменты к исправлениям
Если комменты появляются к тому, как автор переписал код с учетом прошлых комментов — скорее всего стоит улучшить комментарии.
- Стоит объяснять, почему просишь изменений.
- Стоит разделять обязательные к исправлению пункты и опциональные.
- Стоит в явном виде писать, как предлагаешь изменить. Можно даже с частями кода.
«Критикуешь — предлагай».
How to write Review Comments
===
Итог
Мы добавили в чат бота, который каждое утро скидывает список PR для ревью. Бот приходит в личку, если ревью висит больше дня.
Но всё это не работает до тех пор, пока культура ревью не выстроена.
Как только ревью стало такой же целевой работой, как и написание кода — стало быстрее.
Это не все причины, почему задачи могут зависать на ревью.
Поделитесь опытом в комментах — какие проблемы с ревью были у вас и как решали?
Forwarded from Кодируем
Как написать чистый код?
⭐️ Угадываем, что хотел ввести юзер. Немного говорим про low coupling & high cohesion.
Лайкай не глядя! Сегодня разберем, какая все же последовательность действий и ход мышления должен быть, чтобы получалось писать чистый и читаемый код даже там, где есть алгоритмы. Какие есть способы? Как начать разрабатывать и писать код? Как приступить? Декомпозируем задачу на каждом уровне абстракции, спускаемся ниже и ниже и решаем проблемы по мере поступления.
🚀 Сделаем программу, которая угадывает, какую команду хотел вызвать пользователь, но ошибся при написании. Мы подскажем ему, какие похожие варианты есть в нашей системе.
🚀 Мы сделаем максимально легковесно без фреймворков и баз данных и полнотекстовых поисковых систем. Просто возьмем и добавим маленькую и полезную фичу.
🚀 Также сделаем так, чтобы наш код был максимально понятный и читаемый. Чтобы мы могли понять все структуру программы, прочитав пару первых функций на самом высоком уровне.
🚀 Нарисуем все основные части нашей программы.
Ньюансы (чтобы экономить время):
❗️ Я не стал покрывать все типами, но это обязательно нужно делать
❗️ Я не стал покрывать тестами, но это очень сильно помогает для понимания кода, его надежности и поддержки
❓ Соберем вместе фреймворк по чистому коду? Как использовать паттерны, принципы. В чем плюсы и минусы. Сложно или нет это делать? Какие принципы знаете уже или хотите услышать? Чтобы "берешь и используешь" его. Чтобы не спорить "А вот смотри наглядно - это не вкусовщина, а у тебя переплетается логика или потекли абстракции - это плохо и тд". Если будут мысли - пишите. Это было бы очень круто. И это совсем иное, нежели бестолковые часто style guides и code reviews
Video:
https://www.youtube.com/watch?v=GsGyrrSC8Rw
Links:
https://en.wikipedia.org/wiki/Levenshtein_distance
#Algorithms #Clean_Code
Лайкай не глядя! Сегодня разберем, какая все же последовательность действий и ход мышления должен быть, чтобы получалось писать чистый и читаемый код даже там, где есть алгоритмы. Какие есть способы? Как начать разрабатывать и писать код? Как приступить? Декомпозируем задачу на каждом уровне абстракции, спускаемся ниже и ниже и решаем проблемы по мере поступления.
Ньюансы (чтобы экономить время):
Video:
https://www.youtube.com/watch?v=GsGyrrSC8Rw
Links:
https://en.wikipedia.org/wiki/Levenshtein_distance
#Algorithms #Clean_Code
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Как написать чистый код? Угадываем что ввел юзер и дизайним с нуля(общий подход) Clean Code Approach
Telegram post: https://t.iss.one/koduryem/38
Как написать чистый код? Угадываем, что хотел ввести юзер. Немного говорим про low coupling & high cohesion.
Лайкай не глядя! Сегодня разберем, какая все же последовательность действий и ход мышления должен быть,…
Как написать чистый код? Угадываем, что хотел ввести юзер. Немного говорим про low coupling & high cohesion.
Лайкай не глядя! Сегодня разберем, какая все же последовательность действий и ход мышления должен быть,…
Я, хз. Но за Пашу болеешь как за своего кента которого участковый забрал по ошибке.
Французы те еще борцы за свободу. Абсурдность ситуации такая же, как если накрутчики опыта спорили с рекрутерами и обвиняли сторонние силы в своих проблемах.
Хотя, подождите…
Французы те еще борцы за свободу. Абсурдность ситуации такая же, как если накрутчики опыта спорили с рекрутерами и обвиняли сторонние силы в своих проблемах.
Хотя, подождите…
Советы по выгоранию для ит специалистов
Выгорание — серьезная вещь. Когда ты молодой и неопытный ты думаешь, что эта проблема касается только тех, кто ноет. Ее не существует и ее выдумали.
Иногда об этом любят говорить «эффективные менеджеры», которые бьют кнутом по спине. А потом все удивляются когда человек уходит из компании.
Мой отпуск заканчивается и я был рад, что почти не думал о работе. Уметь восстановить ресурсы очень важная вещь и наконец, мой отпуск принёс желание делать еще больше дел. Решать задачки 🙂
Я задумываюсь о ресурс менеджменте все чаще. Вот интересная статья для инженеров. Наша специфика работы и задачи могут не всегда дать понять, что нам нужен отпуск.
Мониторинг нашего здоровья и правильные привычки — залог успеха.
Выгорание — серьезная вещь. Когда ты молодой и неопытный ты думаешь, что эта проблема касается только тех, кто ноет. Ее не существует и ее выдумали.
Иногда об этом любят говорить «эффективные менеджеры», которые бьют кнутом по спине. А потом все удивляются когда человек уходит из компании.
Мой отпуск заканчивается и я был рад, что почти не думал о работе. Уметь восстановить ресурсы очень важная вещь и наконец, мой отпуск принёс желание делать еще больше дел. Решать задачки 🙂
Я задумываюсь о ресурс менеджменте все чаще. Вот интересная статья для инженеров. Наша специфика работы и задачи могут не всегда дать понять, что нам нужен отпуск.
Мониторинг нашего здоровья и правильные привычки — залог успеха.
Сталкивались ли вы с выгоранием на работе?
Anonymous Poll
30%
Да, часто
41%
Да, не часто
16%
Нет, но были симптомы
6%
Нет, никогда
6%
Не знаю
Forwarded from AppFiles - Mobile Development
This media is not supported in your browser
VIEW IN TELEGRAM
6 причин не использовать Server Driven UI
Мой главный посыл в этой статье - избегайте использования Server-Driven UI, насколько это возможно (если только команда разработчиков и руководство не разработают хороший конвейер для решения всех проблем). SDUI может сделать распределение кода и ответственности беспорядочным и трудноорганизуемым, даже если все находятся на одной волне. Это решение также может лишить вас гибкости в отношении новых решений в области дизайна и функциональности.
Статья: https://apptractor.ru/info/articles/server-driven-ui-6-prichin-ne-ispolzovat-ego.html
Платформа: архитектура
Мой главный посыл в этой статье - избегайте использования Server-Driven UI, насколько это возможно (если только команда разработчиков и руководство не разработают хороший конвейер для решения всех проблем). SDUI может сделать распределение кода и ответственности беспорядочным и трудноорганизуемым, даже если все находятся на одной волне. Это решение также может лишить вас гибкости в отношении новых решений в области дизайна и функциональности.
Статья: https://apptractor.ru/info/articles/server-driven-ui-6-prichin-ne-ispolzovat-ego.html
Платформа: архитектура
В одном канале я как-то видел очередной кликбейтный заголовок, что BDUI, или же SDUI, — будущее мобильной разработки.
Но чаще я встречаю больше минусов от него. Далеко не все разработчики в разных компаниях от него в восторге. Более того, его начинают недолюбливать не только разработчики, но и дизайнеры. Которым, впервую очередь, ломают творческую свободу
Да, он может хорошо ложиться на простые задачи, но в нем есть множество минусов.
Но чаще я встречаю больше минусов от него. Далеко не все разработчики в разных компаниях от него в восторге. Более того, его начинают недолюбливать не только разработчики, но и дизайнеры. Которым, впервую очередь, ломают творческую свободу
Да, он может хорошо ложиться на простые задачи, но в нем есть множество минусов.
Инфляция знаний, грейдов и навыков
Через год наши знания обесценятся.
Никакие гайды никому не помогут. Забавно, как мы это говорили пару лет, а сейчас это тоже самое повторяют цыгани. Их критиковали за продажу этих ложных обещаний, они сформировали стаи, а сейчас поджав хвост после удаления ютуба, резко переобулись в воздухе. Критиковали курсы и школы программирования, а сами стали тем же. Пользовались неопытностью и доверием желающих войти в ит.
После недавнего перфоманс ревью мы обсуждали с моим руководителем тему повышений. Как формируются требования, конкуренцию между бэком и фронтом, адаптацию рынка.
Никто не знает.
Главное правило, которое я сформировал — это никто не знает что будет завтра. Даже ваши руководители. 90% инженеров, кто получил повышение год назад, с таким бы результатом уже не получили бы в этом.
Система быстро меняется. Именно поэтому самые честные знания могут дать лишь практикующие специалисты. Тк они в авангарде.
Еще пол года назад я говорил один из первых о систем дизайне, а уже сейчас о нем пишет каждый и предлагает менторство, давно не работая или не имея практики. Инфобизнес.
Также и в нашем сообществе мы не стараемся давать гайды, мы даем наши наблюдения и делимся взглядами. Формировать окружение, кто изучает эту бесформенную науку.
Где каждый понимает, что может ошибаться. Где каждый не использует продающие подписку лозунги.
Мы не даем секретных знаний. Мы формируем культуру исследований и боремся с растущей неопределенностью. Ищем выходы и входы, которые с невероятной скоростью то закрываются, то открываются.
Через год наши знания обесценятся.
Никакие гайды никому не помогут. Забавно, как мы это говорили пару лет, а сейчас это тоже самое повторяют цыгани. Их критиковали за продажу этих ложных обещаний, они сформировали стаи, а сейчас поджав хвост после удаления ютуба, резко переобулись в воздухе. Критиковали курсы и школы программирования, а сами стали тем же. Пользовались неопытностью и доверием желающих войти в ит.
После недавнего перфоманс ревью мы обсуждали с моим руководителем тему повышений. Как формируются требования, конкуренцию между бэком и фронтом, адаптацию рынка.
Никто не знает.
Главное правило, которое я сформировал — это никто не знает что будет завтра. Даже ваши руководители. 90% инженеров, кто получил повышение год назад, с таким бы результатом уже не получили бы в этом.
Система быстро меняется. Именно поэтому самые честные знания могут дать лишь практикующие специалисты. Тк они в авангарде.
Еще пол года назад я говорил один из первых о систем дизайне, а уже сейчас о нем пишет каждый и предлагает менторство, давно не работая или не имея практики. Инфобизнес.
Также и в нашем сообществе мы не стараемся давать гайды, мы даем наши наблюдения и делимся взглядами. Формировать окружение, кто изучает эту бесформенную науку.
Где каждый понимает, что может ошибаться. Где каждый не использует продающие подписку лозунги.
Мы не даем секретных знаний. Мы формируем культуру исследований и боремся с растущей неопределенностью. Ищем выходы и входы, которые с невероятной скоростью то закрываются, то открываются.
Предлагаем альтернативы ноушену
Или есть возможность обойти отключение?
Или есть возможность обойти отключение?
This media is not supported in your browser
VIEW IN TELEGRAM
Ждем на наших рынках через 3, 2, 1
И курсы инфоцыган как подготовить правильно резюме 🙂
И курсы инфоцыган как подготовить правильно резюме 🙂
Советы из книги Mobile System Design: Сбор требований
Сейчас перечитываю книгу Mobile System Design и пропускаю сквозь свой накопленный опыт. Попытался адаптировать иногда очевидные советы в общую шпаргалку, но что-то лучше много раз проговорить.
В первой главе автор разбирает алгоритм проектирования и дает определения хорошего дизайна. Немного высмеивая тех, кто первым делом бежит обсуждать какой же паттерн стоит применить к этому проекту MVVM, VIPER и etc еще до того, как не написал даже строчку кода.
Мобильный разработчик является связующим звеном между бэком и дизайном. А значит его главная первостепенная задача — уточнить, верифицировать и завалидировать требования.
Ведь очень не очень, когда мобильный разработчик, не уточнив условия приступил к кодингу, а оказалось делать было нужно совсем не то, что нужно.
Собрал в список рекомендации автора, которые показались мне самые полезные:
Кстати, в базе знаний веду расширенные конспекты
Сейчас перечитываю книгу Mobile System Design и пропускаю сквозь свой накопленный опыт. Попытался адаптировать иногда очевидные советы в общую шпаргалку, но что-то лучше много раз проговорить.
В первой главе автор разбирает алгоритм проектирования и дает определения хорошего дизайна. Немного высмеивая тех, кто первым делом бежит обсуждать какой же паттерн стоит применить к этому проекту MVVM, VIPER и etc еще до того, как не написал даже строчку кода.
Мобильный разработчик является связующим звеном между бэком и дизайном. А значит его главная первостепенная задача — уточнить, верифицировать и завалидировать требования.
Ведь очень не очень, когда мобильный разработчик, не уточнив условия приступил к кодингу, а оказалось делать было нужно совсем не то, что нужно.
Собрал в список рекомендации автора, которые показались мне самые полезные:
🟣Первое правило разработки фичи — не торопись кодить, а попробуй сначала лучше понять проблему
🟣Это нормально, когда нет всех ответов в начале
🟣Обговори что обязательно, а что нет
🟣Если фича сделана на другой платформе, то поговори с разработчиками этой платформы и попроси показать их код
🟣Обговори ошибки, которые нужно обработать. Много условий могут не покрыть ни ответы бэка, ни макеты дизайнеров.
🟣Мобильные разработчики — это проводники между дизайном и бэком. Сохрани время всем находя ошибки, несогласованности и несоответствия
🟣Дизайн — это инструмент для обсуждений, а не финальное состояние продукта. Его можно менять и идти на компромиссы
🟣Пробуй найти скрытые условия и функции, которые упустили дизайнеры
🟣Определяй приоритеты с дизайнером и определи что необязательно делать
🟣Всегда будь вежлив критикуя дизайн
🟣Хорошо изучи согласованное АПИ. Бэкенд отдают верхнеуровневый мок, они могут не учитывать UX/UI
🟣Изучи ошибки, которые отдает бэкенд. Соответствуют ли они требованиям дизайна
🟣Изучи можно ли объединить множество запросов в один
Кстати, в базе знаний веду расширенные конспекты
Кто-то говорит, что качественный код — это субьективная вещь. Но я с этим не соглашусь.
Есть много рекомендаций и советов, которые помогают писать не просто рабочий код, но и чистый, легко читаемый и поддерживаемый.
Например, многим известные запахи кода можно эффективно использовать как для написания своего кода, так и для конструктивного кодревью. Без лишних споров и отсебятины находя компромиссы.
В этой подборке я собрал примеры:
Please open Telegram to view this post
VIEW IN TELEGRAM
2 4 1
В этом посте мы разберем что такое процесс принятия решений и как внедряют и выбирают технологии в зрелых командах.
Недавно мне написали в лс и попросили совет в проблеме, что очень сложно доказывать команде какие-то архитектурные проблемы и точки роста. Разработчик хотел показать команде, что очень сложно работать без паттернов проектирования и СОЛИД принципов в проекте, но не мог найти аргументы.
Только в маленьких командах можно занести какие-то иновации или внести изменения легко. Зависимостей немного, проект небольшой. В крупных же это становится в разы сложнее. Времени на синхронизацию и кодревью съедает больше, чем на написание кода. Если твоя работа затрагивает другие команды, то нужно собрать их апрувы еще до того как напишешь код. Ибо своим желанием причинить добро ты можешь сломать всем проект.
Не нравится вам архитектура проекта, вынеси свои предъявы и предложи решения. Пора переходить на SwiftUI? Также создай обсуждение и собери аргументы почему именно он сделает жизнь лучше.
Для того, чтобы эти обсуждения были конструктивными и эффективными, а ты не бегал по сообщениям и тредам, придумали специальные процессы. Процессы принятия решений.
Самый частый инструмент для сбора требований — это TDR.
Technical Design Review — это специальный процесс, который помогает эффективно проработать фичу, до того как ты начнешь ее кодить. Именно здесь и нужны все навыки системного дизайна.
Для многих кажется, что это можно сделать на кодревью. Но это крайне опасное заблуждение. Этап кодревью — это когда ты уже написал код, запланировал спринт и закомитился на сроки. И вот ты потратил кучу времени, сказал своему менеджеру что твоя фича будет к такому-то сроку, а на кодревью тебя завернули и дали под жопу, что ты сделал дичь и никого об этом не предупредил. Тебя либо завернули назад и ты подвинул сроки, либо со слезами умоляешь что в будущем все перепишешь. Спустя же время все забыли что там писали в комментах твоего реквеста и твой код остался вечным легаси, который никогда не перепишут.
Индустрия придумала как бороться с этим и ввела новый процесс, который помогает хорошо запроектировать фичу, прежде чем писать код. Ведь это самое главное качество программиста — сначала думать, а потом делать.
Теперь, прежде чем приступить к разработке, многие бигтехе очень много думают: учитывают зависимости других команд; последствия; сроки и трейдоффы. А главное, это все влияет на качество твоего решения, которое в итоге пойдет в прод.
Они собирают большой документ с описанной текущей проблемой, предлагаемыми решениями (чаще от 2 до 4), отмечают всех заинтересованных и получают зеленые или красные флаги для раскатки. Все в одном документе для сохранения истории и фокуса.
Только после этого можно приступать к реализациям.
Подробнее о tech design review можно почитать здесь:
- Tech Design Review в Авито
- Technical Design Review (TDR)
- Technical Design Reviews at Marfeel
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
playbook/tech_design_review.md at master · avito-tech/playbook
AvitoTech team playbook. Contribute to avito-tech/playbook development by creating an account on GitHub.
1 7
Декодирование JSON в Swift медленнее, чем в Python?
Еще один забавный факт. Если у вас большие json’ы, то Swift не такой уж и хороший вариант для их декодирования.
Переходим на Котлин?
Еще один забавный факт. Если у вас большие json’ы, то Swift не такой уж и хороший вариант для их декодирования.
Переходим на Котлин?
Reddit
From the swift community on Reddit
Explore this post and more from the swift community
1 6 2
Мы провели первый мок-собес. Добровольцем выступил кандидат из альфы. Задача — спроектировать главный экран инстаграма.
Мок-собес вышел крутым. Если вы хотите узнать как проходит такой формат или сталкивались с похожей задачей, то он точно будет вам полезен.
Что ожидать еще:
Тем самым в канале уже есть фулл хаус, где мы провели алгоритмы и задачи по iOS.
Ищу желающих провести или пройти собес доступ в канал бесплатный. Участие также бесплатное.
нужно иметь подписку от трех месяцев на мидл или быть подписаным на мидл+
Please open Telegram to view this post
VIEW IN TELEGRAM
1 6 3
Кодревью: запахи кода ч.2
Тема запахов кода мне понравилась и я решил сделать вторую часть.
Помню, как в первых проектах мне запрещали писать оператор switch/case. А использование SOLID было не всегда хорошим решением.
Здесь я решил разобрать такие вопросы как:
🟣 Почему наследование невсегда хорошо
🟣 Как важна согласованность нэйминга
🟣 Магические числа
💎 Сегодня последний день летней акции
Тема запахов кода мне понравилась и я решил сделать вторую часть.
Помню, как в первых проектах мне запрещали писать оператор switch/case. А использование SOLID было не всегда хорошим решением.
Здесь я решил разобрать такие вопросы как:
Please open Telegram to view this post
VIEW IN TELEGRAM
1 6 2
Пишите ли вы TDR?
Anonymous Poll
20%
Да, у нас похожий процесс
7%
Да, но у нас по-другому
6%
Нет, вводили, но не прижилось
34%
Нет, не вводили, но думаем
34%
Другое
Влияет ли стресс на результативность технического собеседования?
Часто читаю блог Тимура и нахожу много полезных статей. Например, эта дает понять, как сильно отличаются разные подготовки к собесам.
Одна из моих целей когда-нибудь пройти собес в FAANG. Поэтому я много уделяю подготовки не только для реальных задач, но и для собесов. Я долго отказывался верить, что собеседования отличается от реальной жизни. Винил себя, что недостаточно опытный или скилловый. Бесспорно, это так. Но я понял, что на собеседованиях также важны навыки, которые не натренируешь на рабочих задачах.
Я думал, что будет достаточно спокойно и без спешки решать задачи и всё будет окей. А если не прошел собес, то значит просто недостаточно много решал.
Но вот очередные исследования, где доказали как стресс и сжатые условия влияют на результат.
В этом эксперименте людей разделили на две группы и заставили решать задачу у доски:
🟣 В первой группе люди решали задачи в раслабленном темпе, но сильно выходили за временные рамки
🟣 Во второй же группе люди решали задачи перед интервьюерами, где укладывались в сроки
🟣 Первая группа находила более оптимальные решения.
🟣 Результаты тех, кто провалил задачи в первой группе равны 36.3%, а во второй аж 61.5%.
Охереть. Я догадывался, что стресс сильно дебафает, но не настолько.
🌋 О чем это говорит?
Как минимум, что навыки решения задач сильно падают при реальном собеседовании и что недостаточно просто соло решать литкод, закрывшись в четырех стенах. А решение тысяч задач на платформах не гарантирует успех.
Такие статьи корректируют планы развития. Обесценивает просто сборники задач как литкод, голые задачи и кол-во решение. Показывают, насколько же важно окружение и практика в боевых условиях. Необходимые условия и контексты.
Нужно работать над психологическим состоянием и уметь контролировать стресс. Эта же проблема была очень часто и в спорте, когда множество ребят отлично показывают себя на тренировках, но теряются на соревнованиях.
Возможно, именно поэтому мы и сделали мок-собесы, чтобы каждый желающий мог попробовать себя, натренироваться и поделиться опытом с другими.
Часто читаю блог Тимура и нахожу много полезных статей. Например, эта дает понять, как сильно отличаются разные подготовки к собесам.
Одна из моих целей когда-нибудь пройти собес в FAANG. Поэтому я много уделяю подготовки не только для реальных задач, но и для собесов. Я долго отказывался верить, что собеседования отличается от реальной жизни. Винил себя, что недостаточно опытный или скилловый. Бесспорно, это так. Но я понял, что на собеседованиях также важны навыки, которые не натренируешь на рабочих задачах.
Я думал, что будет достаточно спокойно и без спешки решать задачи и всё будет окей. А если не прошел собес, то значит просто недостаточно много решал.
Но вот очередные исследования, где доказали как стресс и сжатые условия влияют на результат.
В этом эксперименте людей разделили на две группы и заставили решать задачу у доски:
Охереть. Я догадывался, что стресс сильно дебафает, но не настолько.
Как минимум, что навыки решения задач сильно падают при реальном собеседовании и что недостаточно просто соло решать литкод, закрывшись в четырех стенах. А решение тысяч задач на платформах не гарантирует успех.
Такие статьи корректируют планы развития. Обесценивает просто сборники задач как литкод, голые задачи и кол-во решение. Показывают, насколько же важно окружение и практика в боевых условиях. Необходимые условия и контексты.
Нужно работать над психологическим состоянием и уметь контролировать стресс. Эта же проблема была очень часто и в спорте, когда множество ребят отлично показывают себя на тренировках, но теряются на соревнованиях.
Возможно, именно поэтому мы и сделали мок-собесы, чтобы каждый желающий мог попробовать себя, натренироваться и поделиться опытом с другими.
Please open Telegram to view this post
VIEW IN TELEGRAM
1 8 1