Я Игорь, ведущий фронтенд разработчик в Самокате. Люблю чистый код и работающие продукты. Программирую на TypeScript, иногда на Dart или Scala.
В канале пишу о:
— коде: как проектировать приложения, избавляться от говнокода, писать код чистым и красивым;
— софт-скиллах: как решать задачи бизнеса, доводить задачу до конца, не выгорать и не грустить;
— публикациях: ссылки на разные штуки, которые мне вкатили, статьи, доклады, инструменты, онлайн-курсы.
В канале пишу о:
— коде: как проектировать приложения, избавляться от говнокода, писать код чистым и красивым;
— софт-скиллах: как решать задачи бизнеса, доводить задачу до конца, не выгорать и не грустить;
— публикациях: ссылки на разные штуки, которые мне вкатили, статьи, доклады, инструменты, онлайн-курсы.
kamyshev.code pinned «Я Игорь, ведущий фронтенд разработчик в Самокате. Люблю чистый код и работающие продукты. Программирую на TypeScript, иногда на Dart или Scala. В канале пишу о: — коде: как проектировать приложения, избавляться от говнокода, писать код чистым и красивым;…»
Я люблю JavaScript, люблю Node.js. Но иногда возникают трудности связанные с органичениями платформы.
Недавно делал прототип приложения для изучения английского языка. Внутри нужно было обрабатывать натуральный язык: разбивать текст на слова, приводить их к нормальной форме, исправлять опечатки. В npm есть прекрасная библиотека для этой задачи — compromise.
Кейс: воркер-треды
#js
Недавно делал прототип приложения для изучения английского языка. Внутри нужно было обрабатывать натуральный язык: разбивать текст на слова, приводить их к нормальной форме, исправлять опечатки. В npm есть прекрасная библиотека для этой задачи — compromise.
Кейс: воркер-треды
#js
Medium
Кейс: воркер-треды
Node.js работает в одном потоке. Чаще всего это не создаёт проблем, потому что почти все операции в наших приложениях неблокирующие…
Python снова огонь
Всю неделю наблюдаю за коллегами, маcтерами Python. Очередной раз убедился, что в умелых руках этот язык прекрасен. В нем подкупает выразительность, простота концепций и опциональная статическая типизация. Эти три характеристики позволяют писать приложения быстро, надежно и поддерживаемо. И, на мой взгляд, именно этими словами характеризуются хорошие программы.
Самое крутое, что Python абсолютно универсален. Хочется бекенд веб-сервиса? Пожалуйста. Нужен скрипт для сложной автоматизации? Без проблем. Возникла необходимость написать маленький искуственный интеллект и захватить мир? Отличная идея!
16 агуста SkillFactory запускают новый набор курса Full-stack веб-разработчик на Python. Внутри не только основы Python, но и клевые прикладные темы: работа с Linux, Docker-контейнерами, модуль о софт-скиллах.
#языки #партнерский_материал
Всю неделю наблюдаю за коллегами, маcтерами Python. Очередной раз убедился, что в умелых руках этот язык прекрасен. В нем подкупает выразительность, простота концепций и опциональная статическая типизация. Эти три характеристики позволяют писать приложения быстро, надежно и поддерживаемо. И, на мой взгляд, именно этими словами характеризуются хорошие программы.
Самое крутое, что Python абсолютно универсален. Хочется бекенд веб-сервиса? Пожалуйста. Нужен скрипт для сложной автоматизации? Без проблем. Возникла необходимость написать маленький искуственный интеллект и захватить мир? Отличная идея!
16 агуста SkillFactory запускают новый набор курса Full-stack веб-разработчик на Python. Внутри не только основы Python, но и клевые прикладные темы: работа с Linux, Docker-контейнерами, модуль о софт-скиллах.
#языки #партнерский_материал
Свежий дайжест статей!
+ Опыт перевода большого проекта с Flow на TypeScript — Flow мертв, всем пора задуматься о переводе проекта на TS
+ Хотите завершить свой личный проект – забудьте о лучших подходах — о важности создания пет-проектов и техниках доведения их до конца
+ Как я не занял первое место в конкурсе для JavaScript-разработчиков от Telegram — история создания сверх-производительной библиотеки для отрисовки графиков
+ Структурирование React-приложений — о вечной проблеме раскладывания компонентов по папкам
+ Практические рекомендации по разработке крупномасштабных React-приложений, часть 1, часть 2 — внутри рассуждения об архитектуре и библиотеках
#дайджест
+ Опыт перевода большого проекта с Flow на TypeScript — Flow мертв, всем пора задуматься о переводе проекта на TS
+ Хотите завершить свой личный проект – забудьте о лучших подходах — о важности создания пет-проектов и техниках доведения их до конца
+ Как я не занял первое место в конкурсе для JavaScript-разработчиков от Telegram — история создания сверх-производительной библиотеки для отрисовки графиков
+ Структурирование React-приложений — о вечной проблеме раскладывания компонентов по папкам
+ Практические рекомендации по разработке крупномасштабных React-приложений, часть 1, часть 2 — внутри рассуждения об архитектуре и библиотеках
#дайджест
Бэкап GitHub
Все знают, что нужно делать бэкапы, но немногие их делают. Особенно бэкапы «надёжных» облачных сервисов.
Последнее время в работе GitHub все чаще наблюдаются сбои. За май зафиксировано три эпизода частичной доступности, за июнь — два. Я не готов доверять свой код сервису, который так относится к надежности работы, но и терять в удобстве использования, переезжая на альтернативные решения не хочется.
Потратив 10 минут времени и совсем немного денег можно обеспечить себе спокойную жизнь, удобство и комфорт работы.
Инструкция: бэкап GitHub
#удобство_разработки #автоматизаци
Все знают, что нужно делать бэкапы, но немногие их делают. Особенно бэкапы «надёжных» облачных сервисов.
Последнее время в работе GitHub все чаще наблюдаются сбои. За май зафиксировано три эпизода частичной доступности, за июнь — два. Я не готов доверять свой код сервису, который так относится к надежности работы, но и терять в удобстве использования, переезжая на альтернативные решения не хочется.
Потратив 10 минут времени и совсем немного денег можно обеспечить себе спокойную жизнь, удобство и комфорт работы.
Инструкция: бэкап GitHub
#удобство_разработки #автоматизаци
Medium
Инструкция: бэкап GitHub
Наш код стоит очень много денег. Мы тратим на его создание сотни тысяч долларов, но совершенно не заботимся о сохранности — храним на…
Недостаточно красивой идеи
Redux — супер красивая концепция. Он прост, логичен и детерминирован. Но есть проблема — в реальном мире это не работает. И появляется куча шаблонного кода.
Mobx — не очень красив. Это утилитарная штука. Он не отрицает реального мира, а помогает с ним работать.
Раньше мне казалось, что качество программы (библиотеки, приложения) определяется только красотой её архитектуры. Но это не так. Качество программы определяется удобством её использования, надёжностью и простотой поддержки.
Если для достижения этих характеристик нужно пожертвовать красивой идей — нужно пожертвовать.
#softskills #сделывание #архитектура
Redux — супер красивая концепция. Он прост, логичен и детерминирован. Но есть проблема — в реальном мире это не работает. И появляется куча шаблонного кода.
Mobx — не очень красив. Это утилитарная штука. Он не отрицает реального мира, а помогает с ним работать.
Раньше мне казалось, что качество программы (библиотеки, приложения) определяется только красотой её архитектуры. Но это не так. Качество программы определяется удобством её использования, надёжностью и простотой поддержки.
Если для достижения этих характеристик нужно пожертвовать красивой идей — нужно пожертвовать.
#softskills #сделывание #архитектура
Большая часть моих приложений написана на TypeScript. Мне тяжело держать в голове структуры данных и сигнатуры функций, поэтому я поручаю эту работу компилятору.
Отличный доклад про развитие TypeScript, его проблемы и возможные решения — Эволюция TypeScript: всё чудесатее м чудесатее.
#языки
Отличный доклад про развитие TypeScript, его проблемы и возможные решения — Эволюция TypeScript: всё чудесатее м чудесатее.
#языки
YouTube
Андрей Старовойт — Эволюция TypeScript: всё чудесатее и чудесатее
Ближайшая конференция: HolyJS 2023 Spring, 15–16 мая (Online), 21-22 мая (Offline)
Подробности и билеты: https://bit.ly/3A5ruLp
— —
. . Продолжаем вместе с JetBrains погружаться в тонкости TypeScript. Взгляд со стороны разработчика IDE.
В докладе мы обсудим…
Подробности и билеты: https://bit.ly/3A5ruLp
— —
. . Продолжаем вместе с JetBrains погружаться в тонкости TypeScript. Взгляд со стороны разработчика IDE.
В докладе мы обсудим…
Код протухает. С каждой новой фичей приложение становится сложнее, жестче. С этим процессом нужно бороться.
Хороший доклад об общих принципах и подходах в рефакторинге.
Рефакторинг — Где? Куда? Когда? Откуда? Почему? Зачем и Как?
#проектирование
Хороший доклад об общих принципах и подходах в рефакторинге.
Рефакторинг — Где? Куда? Когда? Откуда? Почему? Зачем и Как?
#проектирование
YouTube
Рефакторинг - Где? Куда? Когда? Откуда? Почему? Зачем и Как? / Алексей Охрименко (IPONWEB)
РИТ++2018, FrontendConf
Тезисы:
http://frontendconf.ru/moscow-rit/2018/abstracts/3355
Первая мысль, приходящая на ум каждому программисту, который видит новый код: "Пора все переписывать". В этом докладе я расскажу, как бороться с такими мыслями, чем…
Тезисы:
http://frontendconf.ru/moscow-rit/2018/abstracts/3355
Первая мысль, приходящая на ум каждому программисту, который видит новый код: "Пора все переписывать". В этом докладе я расскажу, как бороться с такими мыслями, чем…
Куда приложить Python
Я много хвалю Python. Это язык который подходит для огромного числа сфер (это редкость для языков общего назначения). На нем можно писать бэкенды, скрипты автоматизации, обрабатывать данные. И это круто.
Особенно, возможность быстро и удобно добывать информацию из данных. Данные — это самое ценное, что есть в программе. Многие компании сейчас зарабатывают только тем, что продают какие-то знания, извлеченные из пользовательских данных. И эта сфера только растет.
Как и во всем IT, там кадровый голод. Таким стоит пользоваться. SkillFactory запускает очередной набор на специализацию Data Science. Там научат всем основным областям знания — языку, необходимой математике, и специфичным темам для обработки данных.
#партнерский_материал #данные
Я много хвалю Python. Это язык который подходит для огромного числа сфер (это редкость для языков общего назначения). На нем можно писать бэкенды, скрипты автоматизации, обрабатывать данные. И это круто.
Особенно, возможность быстро и удобно добывать информацию из данных. Данные — это самое ценное, что есть в программе. Многие компании сейчас зарабатывают только тем, что продают какие-то знания, извлеченные из пользовательских данных. И эта сфера только растет.
Как и во всем IT, там кадровый голод. Таким стоит пользоваться. SkillFactory запускает очередной набор на специализацию Data Science. Там научат всем основным областям знания — языку, необходимой математике, и специфичным темам для обработки данных.
#партнерский_материал #данные
В эти выходные в Питере проходит TechTrain.
Буду писать интересные штуки сразу в твиттер — @kamyshev_code.
Я на конференции оба дня, подходите знакомиться.
Буду писать интересные штуки сразу в твиттер — @kamyshev_code.
Я на конференции оба дня, подходите знакомиться.
Деградация
Компьютеры становяться быстрее — программы становяться медленнее. С каждым годом мы создаем софт всё хуже.
Из-за мощности современных компьютеров, ширины каналов и объемов памяти мы совсем перестали заботиться о скорости работы программ, их размере и потребляемых ресурсах. Пора задуматься об этом и начать создавать быстрые приложения.
Статья Никиты Прокопова — Моё разочарование в софте
#производительность
Компьютеры становяться быстрее — программы становяться медленнее. С каждым годом мы создаем софт всё хуже.
Из-за мощности современных компьютеров, ширины каналов и объемов памяти мы совсем перестали заботиться о скорости работы программ, их размере и потребляемых ресурсах. Пора задуматься об этом и начать создавать быстрые приложения.
Статья Никиты Прокопова — Моё разочарование в софте
#производительность
Хей-хоу! Я писал, что в начале августа сменил работу и теперь работаю в Самокате. Мы делаем быструю доставку продуктов (15-30 минут) без минимальной суммы заказа.
Я занимаюсь внутренними продуктами компании. Работы много (очень), и мы ищем двух матерых фротендеров (офис, Питер).
От вас:
- не бояться (задач, клиентов, кода);
- делать надежные интерфейсы;
- шарить в JavaScript, понимать React, любить TypeScript;
- уметь общаться дизайнерами и продуктологами.
От нас:
- сложные проекты, важное дело;
- крутая команда, умные коллеги.
Пишите за подробностями — @igorkamyshev.
Я занимаюсь внутренними продуктами компании. Работы много (очень), и мы ищем двух матерых фротендеров (офис, Питер).
От вас:
- не бояться (задач, клиентов, кода);
- делать надежные интерфейсы;
- шарить в JavaScript, понимать React, любить TypeScript;
- уметь общаться дизайнерами и продуктологами.
От нас:
- сложные проекты, важное дело;
- крутая команда, умные коллеги.
Пишите за подробностями — @igorkamyshev.
Немножко не успеваю вовремя доставлять статьи, но буду стараться. 🤓
+ Четыре правила интуитивного UX — базовые правила создания интерфейсов, программистов это тоже касается
+ История одного монолита, часть 1, часть 2 — история постепенного разбиения монолита 2ГИС на многие серивисы
+ TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development — краткий обзор нескольких методологий разработки
#дайджест
+ Четыре правила интуитивного UX — базовые правила создания интерфейсов, программистов это тоже касается
+ История одного монолита, часть 1, часть 2 — история постепенного разбиения монолита 2ГИС на многие серивисы
+ TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development — краткий обзор нескольких методологий разработки
#дайджест
Rust
Я привык писать на выскоуровневых языках, только однажды писал на C — в 10 классе на олимпиаде по программированию.
Недавно товарищ показал мне туториал по созданию рогалика на Rust. Я попробовал этот язык и оказалось, что это совсем другой опыт. Нужно писать много кода, он невыразительный, сложный. Зато очень быстрый.
С такими языками мы можем эффективнее использовать компьютеры. Не платить цену за лишние абстракции. Уметь писать такой код важно в любой области, а Rust — отличный кандидат, чтобы научиться.
#языки
Я привык писать на выскоуровневых языках, только однажды писал на C — в 10 классе на олимпиаде по программированию.
Недавно товарищ показал мне туториал по созданию рогалика на Rust. Я попробовал этот язык и оказалось, что это совсем другой опыт. Нужно писать много кода, он невыразительный, сложный. Зато очень быстрый.
С такими языками мы можем эффективнее использовать компьютеры. Не платить цену за лишние абстракции. Уметь писать такой код важно в любой области, а Rust — отличный кандидат, чтобы научиться.
#языки
Не бойтесь документации
Многие разработчики, когда им нужно разобраться с какой-то технологией, начинают со статей, онлайн-курсов и книг. Я думаю, эта стратегия валидна только для новичков в программировании.
Если у вас есть даже небольшой опыт разработки, и вам нужно познакомиться с новым языком, фреймворком или платформой — начните с чтения документации. Просто от начала и до конца. Обычно, это достаточно небольшой объём текста, который, скорее всего, охватывает все важные аспекты и написан специалистами в выбранной области.
Уже после можно перейти к чтению статей, книг, просмотру докладов. Вероятно, часть статей плоха. И после прочтения документации вы будете в состоянии это заметить. Это относится и к книгам, и к докладам.
#общие_знания
Многие разработчики, когда им нужно разобраться с какой-то технологией, начинают со статей, онлайн-курсов и книг. Я думаю, эта стратегия валидна только для новичков в программировании.
Если у вас есть даже небольшой опыт разработки, и вам нужно познакомиться с новым языком, фреймворком или платформой — начните с чтения документации. Просто от начала и до конца. Обычно, это достаточно небольшой объём текста, который, скорее всего, охватывает все важные аспекты и написан специалистами в выбранной области.
Уже после можно перейти к чтению статей, книг, просмотру докладов. Вероятно, часть статей плоха. И после прочтения документации вы будете в состоянии это заметить. Это относится и к книгам, и к докладам.
#общие_знания
Связанность
При создании приложения очень важно сохранить гибкость. То есть с течением времени сложность внесения изменений не должна увеличиваться. Это достигается, в первую очередь, низкая связанность.
Крутейшний доклад Сергея Протько «Связать и развязать».
#проектирование #архитектура
При создании приложения очень важно сохранить гибкость. То есть с течением времени сложность внесения изменений не должна увеличиваться. Это достигается, в первую очередь, низкая связанность.
Крутейшний доклад Сергея Протько «Связать и развязать».
#проектирование #архитектура
YouTube
Сергей Протько "Связать и развязать"
Конференция PHP Frameworks Day прошла в Киеве 3 сентября 2016 года.
Презентация доклада: https://fwdays.com/en/event/php-frameworks-day-2016/review/cohesion-and-coupling
Facebook: https://www.facebook.com/fwdays/
Twitter: https://twitter.com/fwdays
Презентация доклада: https://fwdays.com/en/event/php-frameworks-day-2016/review/cohesion-and-coupling
Facebook: https://www.facebook.com/fwdays/
Twitter: https://twitter.com/fwdays
Год назад я начал вести этот блог в его современном виде 🎉
Хочется делать это лучше. Напишите мне, пожалуйста, что вы думаете о контенте, какие темы вам инетересны, а какие совсем нет. Что из постов радует, что раздражает. Мне очень важно это знать.
@igorkamyshev
Хочется делать это лучше. Напишите мне, пожалуйста, что вы думаете о контенте, какие темы вам инетересны, а какие совсем нет. Что из постов радует, что раздражает. Мне очень важно это знать.
@igorkamyshev
Красивый код — не рюшечки
Этой зимой я спорил с коллегой о красивом коде. Он был убежден, что чистый код это приятное дополнение к продукту, я — что это необходимое условие для работающей системы.
За этот год я ещё больше укрепился в этом мнении. Штука в том, что чем лучше написан код, тем дольше можно поддерживать скорость доставки новых фич. И это важно — невозможно объяснить бизнесу, почему месяц назад фичи делали быстро, а сейчас медленно, и почему дальше будет только хуже.
То есть, плохой код имеет смысл только для очень коротких проектов, которые будут выброшены или полностью переписаны. Для любого долгоживующего проекта нужно тратить время на написание качественного, чистого кода, проработку архитектуры.
#архитектура #проектирование
Этой зимой я спорил с коллегой о красивом коде. Он был убежден, что чистый код это приятное дополнение к продукту, я — что это необходимое условие для работающей системы.
За этот год я ещё больше укрепился в этом мнении. Штука в том, что чем лучше написан код, тем дольше можно поддерживать скорость доставки новых фич. И это важно — невозможно объяснить бизнесу, почему месяц назад фичи делали быстро, а сейчас медленно, и почему дальше будет только хуже.
То есть, плохой код имеет смысл только для очень коротких проектов, которые будут выброшены или полностью переписаны. Для любого долгоживующего проекта нужно тратить время на написание качественного, чистого кода, проработку архитектуры.
#архитектура #проектирование
Красивый код — не рюшечки
Окей, для длинных проектов важна чистота кода. Как определить, что проект длинный?
Все просто. Есть два признака.
1. Проект длится больше месяца. Обычно известно заранее, сколько есть времени на проект. Если проект должен занять больше, чем 4 недели — он длинный.
2. Над проектом работает трое. В команде от трёх человек невозможно делить знания о всех костылях, значит нужно их избегать. Конечно, есть и тут ценз по длительности. Если проект занимает больше недели — это длинный проект.
Наша работа — не допускать длинных проектов с плохим кодом. Работать с ними не только сложно для инженеров, но и опасно для бизнеса.
#проектирование #архитектура
Окей, для длинных проектов важна чистота кода. Как определить, что проект длинный?
Все просто. Есть два признака.
1. Проект длится больше месяца. Обычно известно заранее, сколько есть времени на проект. Если проект должен занять больше, чем 4 недели — он длинный.
2. Над проектом работает трое. В команде от трёх человек невозможно делить знания о всех костылях, значит нужно их избегать. Конечно, есть и тут ценз по длительности. Если проект занимает больше недели — это длинный проект.
Наша работа — не допускать длинных проектов с плохим кодом. Работать с ними не только сложно для инженеров, но и опасно для бизнеса.
#проектирование #архитектура