DRY — не повторяй себя. Этот принцип часто понимается неверно.
Напиши это дважды
Часто сложность кода возрастает из-за преждевременного вынесения "общего" кода в отдельное место. Выделять нечто в самостоятельную сущность следует только после того как были набраны юзкейсы. Когда становится понятно, как такой код должен использоваться — его можно выносить.
Не повторяй логику
Бизнес-логику повторять нельзя. Если в приложении вычисляется скидка — она должна вычисляться только в одном месте. Важно разделять одинаковую логику и похожую. Похожая логика может сильно разойтись через время, тогда придется снова разделять их обратно.
Тематическая статья — Ошибочное понимание принципа DRY
#проектирование
Напиши это дважды
Часто сложность кода возрастает из-за преждевременного вынесения "общего" кода в отдельное место. Выделять нечто в самостоятельную сущность следует только после того как были набраны юзкейсы. Когда становится понятно, как такой код должен использоваться — его можно выносить.
Не повторяй логику
Бизнес-логику повторять нельзя. Если в приложении вычисляется скидка — она должна вычисляться только в одном месте. Важно разделять одинаковую логику и похожую. Похожая логика может сильно разойтись через время, тогда придется снова разделять их обратно.
Тематическая статья — Ошибочное понимание принципа DRY
#проектирование
Я слушаю очень много подкастов. Некоторые из них связаны с программированием.
+ ДевШахта — много про софт-скиллы, много про Node.js.
+ Мысли и методы — о непривычном в программировании. Вопросы вычислимости, связи информатики и вселенной.
+ Новости 512 — еженедельные экстра-короткие новостные выпуски.
+ Пятиминутка React — не только React, а скорее фортенд в целом. К сожалению, не выходит с декабря прошлого года.
И еще парочка, они классные, но я перестал их слушать.
+ Frontend Weekend — интервью с разработчиками, чаще фротендерами, но не всегда.
+ Радио-Т — длинные выпуски, обсуждаются новости и статьи.
На случай если кто-нибудь не знает что такое подкасты и не умеет их слушать. Подкаст — это аудио-шоу. Люди говорят что-нибудь в микрофон, вы слушаете это. Удобство формата в его нетребовательности. Можно слушать подкасты в метро, во время уборки дома, прогулки с собакой. Как слушать подкасты.
#рекомендации
+ ДевШахта — много про софт-скиллы, много про Node.js.
+ Мысли и методы — о непривычном в программировании. Вопросы вычислимости, связи информатики и вселенной.
+ Новости 512 — еженедельные экстра-короткие новостные выпуски.
+ Пятиминутка React — не только React, а скорее фортенд в целом. К сожалению, не выходит с декабря прошлого года.
И еще парочка, они классные, но я перестал их слушать.
+ Frontend Weekend — интервью с разработчиками, чаще фротендерами, но не всегда.
+ Радио-Т — длинные выпуски, обсуждаются новости и статьи.
На случай если кто-нибудь не знает что такое подкасты и не умеет их слушать. Подкаст — это аудио-шоу. Люди говорят что-нибудь в микрофон, вы слушаете это. Удобство формата в его нетребовательности. Можно слушать подкасты в метро, во время уборки дома, прогулки с собакой. Как слушать подкасты.
#рекомендации
Самое ценное
Самое ценное, что есть в наших программах — это данные. Данные важно правильно хранить, обеспечивать их доступность, не терять и еще куча всего. И немногие разработчики умеют все это делать хорошо. Но самые страшные факапы связаны именно с утратой или порчей данных.
При этом работать с данными должен уметь любой член команды — разработчик, админ, девопс (многие считают что это отдельная должность).
Если данных много — все эти задачи усложняются. Я абсолютно не представляю как работать с базой данных даже в 100 гигабайт.
Как раз для таких людей OTUS запускает онлайн-курс "Data Engineer". Он о том как работать с большими данными, мониторить и тестировать такие базы, обращаться с распределенными хранилищами.
20 мая (завтра) в 20.00 МСК пройдет вебинар "Lean Data Engineering: большие данные при небольшом бюджете", который предваряет этот курс. Чтобы попасть на него, нужно пройти тестирование.
#данные #партнерский_материал
Самое ценное, что есть в наших программах — это данные. Данные важно правильно хранить, обеспечивать их доступность, не терять и еще куча всего. И немногие разработчики умеют все это делать хорошо. Но самые страшные факапы связаны именно с утратой или порчей данных.
При этом работать с данными должен уметь любой член команды — разработчик, админ, девопс (многие считают что это отдельная должность).
Если данных много — все эти задачи усложняются. Я абсолютно не представляю как работать с базой данных даже в 100 гигабайт.
Как раз для таких людей OTUS запускает онлайн-курс "Data Engineer". Он о том как работать с большими данными, мониторить и тестировать такие базы, обращаться с распределенными хранилищами.
20 мая (завтра) в 20.00 МСК пройдет вебинар "Lean Data Engineering: большие данные при небольшом бюджете", который предваряет этот курс. Чтобы попасть на него, нужно пройти тестирование.
#данные #партнерский_материал
Самое ценное
Продолжим разговор о данных. Я не умею управлять базами данных достаточно хорошо. Как развернуть кластер с кучей нод, бэкапами и мониторингом — для меня загадка. Когда мне нужно написать хоть сколько-нибудь сложный SQL запрос — я гуглю.
Чтобы компенсировать такие пробелы в знаниях, можно отдать задачу управления базой данных кому-то другому. Почти все провайдеры облачных серверов предоставляют управляемые ими базы данных.
+ DO Managed Databases
+ AWS RDS
В чем суть
Провайдер предоставляет базу данных. Поднять ее можно из удобного интерфейса. Никакого обслуживания она не требует, сама бэкапится. Если потребуется масштабировать — все произойдет само, дополнительных усилий не требуется. Провайдер же обеспечивает безопасть базы.
На мой взгляд, это как раз тот случай когда можно отдать сколько-нибудь денег за свое время и спокойствие. Во всех домашних проектах использую DO Managed Databases (просто потому что AWS слишком сложный для меня).
#данные
Продолжим разговор о данных. Я не умею управлять базами данных достаточно хорошо. Как развернуть кластер с кучей нод, бэкапами и мониторингом — для меня загадка. Когда мне нужно написать хоть сколько-нибудь сложный SQL запрос — я гуглю.
Чтобы компенсировать такие пробелы в знаниях, можно отдать задачу управления базой данных кому-то другому. Почти все провайдеры облачных серверов предоставляют управляемые ими базы данных.
+ DO Managed Databases
+ AWS RDS
В чем суть
Провайдер предоставляет базу данных. Поднять ее можно из удобного интерфейса. Никакого обслуживания она не требует, сама бэкапится. Если потребуется масштабировать — все произойдет само, дополнительных усилий не требуется. Провайдер же обеспечивает безопасть базы.
На мой взгляд, это как раз тот случай когда можно отдать сколько-нибудь денег за свое время и спокойствие. Во всех домашних проектах использую DO Managed Databases (просто потому что AWS слишком сложный для меня).
#данные
История: удаленная база и две минуты страха
В 2017 году я работал над генератором интернет-магазинов. И тогда я еще хуже представлял себе как правильно обращаься с данными.
При очередном релизе нужно было обновить схему базы, я просто удалил старую базу и накатил схему новой. Когда я понял, что произошло — я очень напугался и навсегда запомнил, изменять схему базы нужно посредствам миграций/эволюций.
Тематическая статья — Версионная миграция структуры базы данных: основные подходы
Кончилось все хорошо, база в этом приложении была всего лишь зеркалом другого источника данных и мы ее быстро восстановили.
#кейс #данные
В 2017 году я работал над генератором интернет-магазинов. И тогда я еще хуже представлял себе как правильно обращаься с данными.
При очередном релизе нужно было обновить схему базы, я просто удалил старую базу и накатил схему новой. Когда я понял, что произошло — я очень напугался и навсегда запомнил, изменять схему базы нужно посредствам миграций/эволюций.
Тематическая статья — Версионная миграция структуры базы данных: основные подходы
Кончилось все хорошо, база в этом приложении была всего лишь зеркалом другого источника данных и мы ее быстро восстановили.
#кейс #данные
Хорошая практика
В прошлом году гремела статья от инженеров из Хероку о приложениях 12 факторов.
Это отличные советы по построению приложений, прочтите их и жизнь станет проще.
The Twelve-Factor App
#проектирование #общие_знания
В прошлом году гремела статья от инженеров из Хероку о приложениях 12 факторов.
Это отличные советы по построению приложений, прочтите их и жизнь станет проще.
The Twelve-Factor App
#проектирование #общие_знания
12factor.net
The Twelve-Factor App (Русский перевод)
A methodology for building modern, scalable, maintainable software-as-a-service apps.
Golang
Я люблю изучать новые языки программирования. Осенью читал "7 языков за 7 недель", а совсем недавно внимательно смотрел на ReasonML и Dart.
Я уверен, что изучение новых языков — большое благо. Так можно перенять какие-то крутые идеи из параллельных миров и использовать их в своей практике.
Последний год я пристально следил за развитием Go. Это максимально непривычный для меня язык — по большей части из-за особенного Go-way. В нем совсем другие лучшие практики. У них там нет исключений! И это осознанный выбор авторов. При этом язык сверх-популярен. Веб, CLI, все можно писать на Go.
OTUS запускает курс "Разработчик Golang", а 23 мая (завтра) в 20.00 МСК пройдет день открытых дверей на этом курсе. Как обычно, доступно предварительное тестирование.
Пишите впечатления от мероприятия, да и в целом мнения о Golang, будет интересно почитать о вашем опыте.
#языки #партнерский_материал
Я люблю изучать новые языки программирования. Осенью читал "7 языков за 7 недель", а совсем недавно внимательно смотрел на ReasonML и Dart.
Я уверен, что изучение новых языков — большое благо. Так можно перенять какие-то крутые идеи из параллельных миров и использовать их в своей практике.
Последний год я пристально следил за развитием Go. Это максимально непривычный для меня язык — по большей части из-за особенного Go-way. В нем совсем другие лучшие практики. У них там нет исключений! И это осознанный выбор авторов. При этом язык сверх-популярен. Веб, CLI, все можно писать на Go.
OTUS запускает курс "Разработчик Golang", а 23 мая (завтра) в 20.00 МСК пройдет день открытых дверей на этом курсе. Как обычно, доступно предварительное тестирование.
Пишите впечатления от мероприятия, да и в целом мнения о Golang, будет интересно почитать о вашем опыте.
#языки #партнерский_материал
24-25 мая а Питере будет HolyJS.
Буду писать интересные штуки сразу в твиттер — @kamyshev_code.
Я на конференции оба дня, подходите знакомиться.
Буду писать интересные штуки сразу в твиттер — @kamyshev_code.
Я на конференции оба дня, подходите знакомиться.
На выходных сходил на HolyJS. Отличная конференция. Когда выложат доклады — рекомендую посмотреть эти:
Deno, a new way to JavaScript
Райан Даль (автор Node.js) рассказал о своем новом проекте.
Очень странное тестирование
Шокирующий подход к unit-тестированию через свойства.
Подход к типобезопасной разработке на TypeScript
Хороший вводный доклад по TypeScipt.
Modern web testing and automation with Puppeteer
Прекрансный доклад с реальными примерами e2e тестирования с помощью Puppeteer, очень хороший доклад.
Обработка озера данных на Node.js в serverless-архитектуре
Почти ничего не понял, но звучит как невероятно крутой подход. Полезно для расширения кругозора.
Node.js: так же быстро, выше, сильнее с GraalVM
Магия — возможность запускать внутри Node.js кода кусочки на R, Python, Java, Ruby. Впечталяющуая технология, определенно стоит попробовать.
О тестировании на основе свойств и Deno скоро расскажу подробнее.
Deno, a new way to JavaScript
Райан Даль (автор Node.js) рассказал о своем новом проекте.
Очень странное тестирование
Шокирующий подход к unit-тестированию через свойства.
Подход к типобезопасной разработке на TypeScript
Хороший вводный доклад по TypeScipt.
Modern web testing and automation with Puppeteer
Прекрансный доклад с реальными примерами e2e тестирования с помощью Puppeteer, очень хороший доклад.
Обработка озера данных на Node.js в serverless-архитектуре
Почти ничего не понял, но звучит как невероятно крутой подход. Полезно для расширения кругозора.
Node.js: так же быстро, выше, сильнее с GraalVM
Магия — возможность запускать внутри Node.js кода кусочки на R, Python, Java, Ruby. Впечталяющуая технология, определенно стоит попробовать.
О тестировании на основе свойств и Deno скоро расскажу подробнее.
Научиться обращаться с данными
Последнее время я много писал о базах данных, о том, как сложно правильно обращаться с данными. Сейчас многие приложения работают с SQL-хранилищами и важно научиться ими пользоваться.
Завтра в OTUS стартует курс "Реляционные СУБД" и там всему этому научат. Проектирование базы данных, специфика разных SQL-баз, оптимизация запросов.
Как обычно, доступно вступительное тестирование.
#данные #партнерский_материал
Последнее время я много писал о базах данных, о том, как сложно правильно обращаться с данными. Сейчас многие приложения работают с SQL-хранилищами и важно научиться ими пользоваться.
Завтра в OTUS стартует курс "Реляционные СУБД" и там всему этому научат. Проектирование базы данных, специфика разных SQL-баз, оптимизация запросов.
Как обычно, доступно вступительное тестирование.
#данные #партнерский_материал
Индустрия умирает
Сейчас популярно мнение, что хороший разработчик должен быть популярным — вести твиттер, писать статьи и делать опенсорс. Это не здорово, часто крутые специалисты просто не хотят быть медийными.
Тематическая статья — Теперь хороших разрабов меряют по просмотрам и подписчикам — и это плохо
Похожая ситуация и с технологиями. Мы выбираем библиотеки, фреймворки по звездочкам на гитхабе и заметности в твиттере.
Слайды тематического доклада — Front-end innovation is over
Проникся этими идеями и буду стараться в рабочих проектах выбирать лучшие технологии, а не самые популярные, смотреть на скилл разработчика и думать.
Сейчас популярно мнение, что хороший разработчик должен быть популярным — вести твиттер, писать статьи и делать опенсорс. Это не здорово, часто крутые специалисты просто не хотят быть медийными.
Тематическая статья — Теперь хороших разрабов меряют по просмотрам и подписчикам — и это плохо
Похожая ситуация и с технологиями. Мы выбираем библиотеки, фреймворки по звездочкам на гитхабе и заметности в твиттере.
Слайды тематического доклада — Front-end innovation is over
Проникся этими идеями и буду стараться в рабочих проектах выбирать лучшие технологии, а не самые популярные, смотреть на скилл разработчика и думать.
Очень давно я рассказывал о важности инверсии зависимостей внутри приложения.
3 июня в 20.00 МСК OTUS проводит вебинар Dagger 2 для Android-разработчиков.
Казалось бы — где связь? Dagger 2 — это один из самых популярных DI-контейнеров для Android-разработки. На вебинаре будут побробно рассмотрены правильные способы работать с ним.
#проектирование #партнерский_материал
3 июня в 20.00 МСК OTUS проводит вебинар Dagger 2 для Android-разработчиков.
Казалось бы — где связь? Dagger 2 — это один из самых популярных DI-контейнеров для Android-разработки. На вебинаре будут побробно рассмотрены правильные способы работать с ним.
#проектирование #партнерский_материал
Нужная книга
Coders at Work — cборник интервью 15 крутейших программистов, которые стоят у истоков индустрии.
Самые известные из них:
+ Дуглас Крокфорд, один из создателей JavaScript
+ Кен Томпсон, создатель UNIX
+ Дональд Кнут, ну вы знаете
+ Брэд Фицпатрик, создатель Живого Журнала
+ Берни Козелл, участник первой реализации сети ARPANET
Невероятно интересно читать как складывалась профессиональная жизнь этих людей.
#softskills
Coders at Work — cборник интервью 15 крутейших программистов, которые стоят у истоков индустрии.
Самые известные из них:
+ Дуглас Крокфорд, один из создателей JavaScript
+ Кен Томпсон, создатель UNIX
+ Дональд Кнут, ну вы знаете
+ Брэд Фицпатрик, создатель Живого Журнала
+ Берни Козелл, участник первой реализации сети ARPANET
Невероятно интересно читать как складывалась профессиональная жизнь этих людей.
#softskills
Svelte
Последнее время меня все больше занимает скорость работы сайтов. Я переписал свой сайт, чтобы он стал быстрым. И внимательно смотрю на альтернативные решения в мире фронтенд-фреймворков.
Пару недель назад познакомился со Svelte. Это простой фреймворк для построения реактивных интерфейсов, который имеет очень маленький (иногда даже нулевой) рантайм. И это поразительно. Кроме этого, Svelte работает быстро. Я не сравнивал его с другими фреймворками, но он быстр достаточно, чтобы этого не замечать.
В Svelte я встретил две проблемы, которые мне сильно мешают:
+ Отсутствие поддержки TypeScript. Я люблю статическую типизацию, без нее мне тяжело писать код.
+ Тулинг. Редакторы кода сейчас не слишком хорошо умеют общаться с Svelte, да и привычные инструменты (Prettier, ESLint) не слишком приветливы в этому фреймворку.
Авторы обещают в следующей версии добавить нормальную поддержку TS, а тулинг подтянется с популярностью. Попробуйте этот фреймворк на маленьком пет-проекте, он классный,
#фронтенд #производительность
Последнее время меня все больше занимает скорость работы сайтов. Я переписал свой сайт, чтобы он стал быстрым. И внимательно смотрю на альтернативные решения в мире фронтенд-фреймворков.
Пару недель назад познакомился со Svelte. Это простой фреймворк для построения реактивных интерфейсов, который имеет очень маленький (иногда даже нулевой) рантайм. И это поразительно. Кроме этого, Svelte работает быстро. Я не сравнивал его с другими фреймворками, но он быстр достаточно, чтобы этого не замечать.
В Svelte я встретил две проблемы, которые мне сильно мешают:
+ Отсутствие поддержки TypeScript. Я люблю статическую типизацию, без нее мне тяжело писать код.
+ Тулинг. Редакторы кода сейчас не слишком хорошо умеют общаться с Svelte, да и привычные инструменты (Prettier, ESLint) не слишком приветливы в этому фреймворку.
Авторы обещают в следующей версии добавить нормальную поддержку TS, а тулинг подтянется с популярностью. Попробуйте этот фреймворк на маленьком пет-проекте, он классный,
#фронтенд #производительность
Инструментируй это
Да этого доклада я никогда не слышал термина "инструментирование кода". Оказалось, что это супер важная концепция, которая позволяет работать всему нашему тулингу.
Роман Дворнов рассказал, как он написал свое решение для инструментирования кода и упрощения работы с компонентными фреймворками в браузере.
Запись доклада
#удобство_разработки
Да этого доклада я никогда не слышал термина "инструментирование кода". Оказалось, что это супер важная концепция, которая позволяет работать всему нашему тулингу.
Роман Дворнов рассказал, как он написал свое решение для инструментирования кода и упрощения работы с компонентными фреймворками в браузере.
Запись доклада
#удобство_разработки
YouTube
Роман Дворнов, Avito | Инструментируй это | FrontTalks 2015
Все уже привыкли к автоматизации: сборщиками и другими консольными инструментами никого не удивишь. А вот автоматизации самого процесса разработки того, с чем мы имеем дело в браузере, уделяется меньше внимания. Хотя тут многое можно улучшить. Если взглянуть…