How To Be A Great Programmer • Dave Farley • GOTO 2023
Это короткое видео Дэйва Фарли посвящено тому, как быть крутым разработчиком. Интересно, что сам Дейв - тертый калач, который в давние времена написал книгу Continuous Delivery (я про нее рассказывал), а недавно - "Modern Software Engineering: Doing What Works to Build Better Software Faster", которая стоит у меня на полке и ждет своего часа. В этом видео Дейв выделил шесть вещей, которые он считает важными для крутых инженеров
- Code as communication - тут Дейв говорит о том, что код - это средство для коммуникации людей между собой, а не просто для общения с компьютером. Удобочитаемость кода важная для экономии времени и денег, если мы не пишем одноразовый скрипт. Так совокупная стоимость владения на протяжении работы с кодом меньше, так как большую часть времени мы читаем и дорабатываем код, а не раз и навсегда высекаем его в камне:) Интересно, что у Google есть отдельный процесс насчет поддержания readability в их огромной кодовой базе, про который я рассказывал в прошлом посте "Measuring Engineering Productivity". У ребят из Google как раз был вопрос насколько этот процесс окупается и стоит ли его отменить в силу появления линтеров и статических анализаторов. В итоге, ребята поняли, что он приносит пользу и решили его оставить
- Be coutious of framework - здесь Дейв говорит о пользе фреймворков, которая сопряжена с риском. Фишка в том, что фреймворки определяют структуру вашего кода (через концепцию inversion of control) и это влияет на развитие и поддержание проекта. Дейв предлагает прибегать к изоляции стороннего кода за собственной абстракцией. В терминальной стадии риск подсаживания на фреймворки выглядит как разработчик на Spring Boot или Angular/React, которые под свой фреймворк ... и все:)
- Code is design - код и проектирование неразделимы. Автор говорит о том, что зачастую люди под проектированием понимают выбор конкретных технологий навроде K8s, что заменяет решение изначальной проблемы. Другая проблема - это выделение отдельной должности архитектора, к которому отъезжают вопросы проектирования и архитектуры. Кстати, на эту тему был выпуск подкаста "Code of Leadership", где мы с Лешей Тарасовым, техдиром социальных платформ в Тинькофф, обсуждали staff+ трек для индивидуальных контрибьюторов и почему архитектор - это роль высокоуровневых инженеров, а не выделенная должность. В итоге, Дейв заканчивает тезисами хороший код - это выбор организационных принципов для решения проблем. Дизайн - это выбор, который мы делаем каждый день, когда пишем код.
- Quality over features - великие программисты гордятся своей работой и стремятся сохранить и поддерживать свою способность вносить изменения в течение длительного времени. Это имеет смысл, если вы делаете не одноразовые скрипты. Так совокупная стоимость владения на протяжении работы с кодом меньше, так как большую часть времени мы читаем и дорабатываем код. Качество кода проще поддерживать, если у вас есть настроенный CI/CD и вы работаете в продуктовом, а не проектном подходе
- Software development is a social activity - автор говорит о том, что разработка софта - это социальная активность и для того, чтобы быть крутым инженером надо уметь хорошо общаться, уметь активно слушать окружающих, а также внятно доносить свои мысли.
- Avoid code ownership - великие разработчики открыты для критики и готовы учиться новому. В профессиональной среде важно разделять ответственность за код и избегать единоличной ответственности.
P.S. Раньше я уже рассказывал про другое видео Дейва "The Most Powerful Software Development Process Is The Easiest", которое может быть интересно посмотреть в продолжение этого видео.
#Management #Software #Engineering #SoftwareDevelopment #Processes #Devops #SRE #SelfDevelopment