Хей-хоу! Я писал, что в начале августа сменил работу и теперь работаю в Самокате. Мы делаем быструю доставку продуктов (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. Над проектом работает трое. В команде от трёх человек невозможно делить знания о всех костылях, значит нужно их избегать. Конечно, есть и тут ценз по длительности. Если проект занимает больше недели — это длинный проект.
Наша работа — не допускать длинных проектов с плохим кодом. Работать с ними не только сложно для инженеров, но и опасно для бизнеса.
#проектирование #архитектура
Фронтенд
JS-разработчиков мало. Найти хорошего фротнендера — жуткая боль. Потребность в специалистах растет быстро, количество программистов — медленно.
Нужно эту ситуацию как-то исправлять. SkillFactory очень вовремя запускает специализацию «Frontend-разработчик». Учат с самых основ — CSS/HTML, потом расскажут про JavaScript, принципы работы веб-приложений.
Я сейчас приемущество занимаюсь фротнендом и уверен, что это одна из самых стабильных и кайфовых областей для работы. Во-первых, фротнендерам легко найти работу с хорошей зарплатой. Во-вторых, именно фронтенд-инженеры могут легко влиять на продукт и находятся максимально близко к клиентам. Приходите во фронтенд делать веб лучше!
#фронтенд #партнерский_материал
JS-разработчиков мало. Найти хорошего фротнендера — жуткая боль. Потребность в специалистах растет быстро, количество программистов — медленно.
Нужно эту ситуацию как-то исправлять. SkillFactory очень вовремя запускает специализацию «Frontend-разработчик». Учат с самых основ — CSS/HTML, потом расскажут про JavaScript, принципы работы веб-приложений.
Я сейчас приемущество занимаюсь фротнендом и уверен, что это одна из самых стабильных и кайфовых областей для работы. Во-первых, фротнендерам легко найти работу с хорошей зарплатой. Во-вторых, именно фронтенд-инженеры могут легко влиять на продукт и находятся максимально близко к клиентам. Приходите во фронтенд делать веб лучше!
#фронтенд #партнерский_материал
Амплифер — сервис для публикации постов в разные соцсети. Команда разработки этого сервиса очень трепетно относиться к продукту, с них стоит брать пример.
Недавно они опубликовали документ с основными принципами, на которых основана работа — Принципы разработки Амплифера
#softskills
Недавно они опубликовали документ с основными принципами, на которых основана работа — Принципы разработки Амплифера
#softskills
Реакт-нейтив
Я не трогал реакт-нейтив с 2017 года. И тогда с ним было все очень плохо. В начале августа временно присоеденился к команде мобильной разработки и вернулся с этому прекрасному фреймворку. На первый взгляд, за эти два года ничего не изменилось.
Во-первых, сохранились главная (для меня) проблема — сложности с подключением нативных модулей. Нужно поставить пакет через
Во-вторых, качество библиотек так и не выросло. Они все еще стремные, полные багов, без номральной поддержки. Найти качественное решение сложно, приходиться читать тонны исходного кода, чтобы найти решение проблемы.
В-третьих, приложение не получается одинаково хорошо работающим на iOS и на Android. Эти системы устроены по разному и там где на одном устройстве прдполагается свайп влево, на другом нужно нажать кнопку "Назад". Это дополнительно нагружает и дизайнеров и разработчиков. Из-за ограниченности ресурсов, часто одна из платформ становится доминирующей.
Но! В целом разработка на реакт-нейтве не вызывала у меня такой оторопи, как в 2017. Есть полноценные инструменты разработчика, даже дебаггер почти работает. Появились удобные абстракции над родной стилизацией. Поддерживается современная версия реакта.
Реакт-нейтив — отличный инструмент для команды веб-разработки, которой срочно нужно сделать мобильное приложение. Но если проект начинается с нуля, нужно крепо подумать, стоит ли использовать такую неоднозначную технологию.
#фронтенд
Я не трогал реакт-нейтив с 2017 года. И тогда с ним было все очень плохо. В начале августа временно присоеденился к команде мобильной разработки и вернулся с этому прекрасному фреймворку. На первый взгляд, за эти два года ничего не изменилось.
Во-первых, сохранились главная (для меня) проблема — сложности с подключением нативных модулей. Нужно поставить пакет через
npm
, потом через react-native-cli
пролинковать его, исправить какие-то gradle
-файлы, pod
-файлы. Это никогда не работает нормально сразу на двух платформах. Если завелось на iOS, значит будут проблемы на Android. Отвратительно.Во-вторых, качество библиотек так и не выросло. Они все еще стремные, полные багов, без номральной поддержки. Найти качественное решение сложно, приходиться читать тонны исходного кода, чтобы найти решение проблемы.
В-третьих, приложение не получается одинаково хорошо работающим на iOS и на Android. Эти системы устроены по разному и там где на одном устройстве прдполагается свайп влево, на другом нужно нажать кнопку "Назад". Это дополнительно нагружает и дизайнеров и разработчиков. Из-за ограниченности ресурсов, часто одна из платформ становится доминирующей.
Но! В целом разработка на реакт-нейтве не вызывала у меня такой оторопи, как в 2017. Есть полноценные инструменты разработчика, даже дебаггер почти работает. Появились удобные абстракции над родной стилизацией. Поддерживается современная версия реакта.
Реакт-нейтив — отличный инструмент для команды веб-разработки, которой срочно нужно сделать мобильное приложение. Но если проект начинается с нуля, нужно крепо подумать, стоит ли использовать такую неоднозначную технологию.
#фронтенд
Экспертиза умерла
Недавно прочел в твиттере мысль, что сейчас при найме многие не проверяют кандидата на экспертизу, а просто смотрят на его известность. Ну то есть, если у чувака много подписчиков, то это автоматически повышает его шансы быть нанятым.
С одной стороны, это больной подход. Хороший специалист не обязан вести блог, не обязан выступать на конференциях.
А с другой стороны — умение объяснять свои решения, выступать перед публикой и в целом не быть мудаком, это супер-важные качества для любого работника. И они неплохо коррелируют с известностью.
Научить хард-скиллам легко. Научить софт-скиллам — сложно. Качайте софт-скилы, чтобы оставаться актуальным на рынке.
Правда, я не знаю как это делать. 😢
#softskills
Недавно прочел в твиттере мысль, что сейчас при найме многие не проверяют кандидата на экспертизу, а просто смотрят на его известность. Ну то есть, если у чувака много подписчиков, то это автоматически повышает его шансы быть нанятым.
С одной стороны, это больной подход. Хороший специалист не обязан вести блог, не обязан выступать на конференциях.
А с другой стороны — умение объяснять свои решения, выступать перед публикой и в целом не быть мудаком, это супер-важные качества для любого работника. И они неплохо коррелируют с известностью.
Научить хард-скиллам легко. Научить софт-скиллам — сложно. Качайте софт-скилы, чтобы оставаться актуальным на рынке.
Правда, я не знаю как это делать. 😢
#softskills
Solid
ООП — это сложно. Но именно с помощью объектно-ориентированного дизайна приложение можно сделать надежным, расширяемым и поддерживаемым.
Способ писать хорошой объектно-ориентированный код описан в принципах SOLID, котроые сформулировал и описал в "Чистой архитектуре" Дядя Боб. Это прекрасная книга, которую должен прочесть каждый программист. Но она достаточно теоретическая, в ней мочти нет примеров хорошего кода.
Саша Беспоясов и Артем Самофалов сделали интерактивный курс про принципы SOLID, с примерами на TypeScript, тестами и автоматическими проверками. Если вы не чувствуете себя уверенно при проектировании приложений — пройдите этот курс.
https://ota-solid.now.sh/
#проектирование #архитектура
ООП — это сложно. Но именно с помощью объектно-ориентированного дизайна приложение можно сделать надежным, расширяемым и поддерживаемым.
Способ писать хорошой объектно-ориентированный код описан в принципах SOLID, котроые сформулировал и описал в "Чистой архитектуре" Дядя Боб. Это прекрасная книга, которую должен прочесть каждый программист. Но она достаточно теоретическая, в ней мочти нет примеров хорошего кода.
Саша Беспоясов и Артем Самофалов сделали интерактивный курс про принципы SOLID, с примерами на TypeScript, тестами и автоматическими проверками. Если вы не чувствуете себя уверенно при проектировании приложений — пройдите этот курс.
https://ota-solid.now.sh/
#проектирование #архитектура
Солидбук. Книга о принципах объектно-ориентированного дизайна
Солидбук
Книга о принципах объектно-ориентированного дизайна
Последние два месяца я занимаюсь исключительно фротнендом. Когда планировал менять работу, немного преживал — я очень люблю писать на Node.js. Но, как оказалось, это позволяет сконцентрироваться, решать фронтовые задачи быстрее и качественнее.
Я все еще убежден, что фулстеки бывают, что мы должны иметь максимально широкий кругозор и уметь много. Но иногда приятно погрузиться в какую-нибудь узкую область и сделать в ней что-то крутое.
Чтобы прокачаться во фротненде нужно идти на специализацию Frontend-разработчик от SkillFactory. Подойдет и новчикам и программистам из других сфер. Внутри бодрая программа, все необходимое для начала работы и много практики.
#фронтенд #партнерский_материал
Я все еще убежден, что фулстеки бывают, что мы должны иметь максимально широкий кругозор и уметь много. Но иногда приятно погрузиться в какую-нибудь узкую область и сделать в ней что-то крутое.
Чтобы прокачаться во фротненде нужно идти на специализацию Frontend-разработчик от SkillFactory. Подойдет и новчикам и программистам из других сфер. Внутри бодрая программа, все необходимое для начала работы и много практики.
#фронтенд #партнерский_материал
Процессы
Работа программиста — решить задачи бизнеса быстро и дешево. Чтобы этого добавиться, нужно управлять задачами. Контролировать входящие задачи, приоретизировать их, отклонять нерелеватные.
Крутой доклад Александра Феоктистова — Направляем снежный ком задач в нужное русло.
#процесс #softskills
Работа программиста — решить задачи бизнеса быстро и дешево. Чтобы этого добавиться, нужно управлять задачами. Контролировать входящие задачи, приоретизировать их, отклонять нерелеватные.
Крутой доклад Александра Феоктистова — Направляем снежный ком задач в нужное русло.
#процесс #softskills
YouTube
Направляем снежный ком задач в нужное русло, Александр Феоктистов, Одноклассники
Занимаюсь разработкой внутренних и инфраструктурных инструментов в Одноклассниках, слежу за порядком в группе из 4-х фронтендеров.
При росте и развитии компании вопрос удобных и полезных внутренних инструментов встаёт всё острее. В докладе будет рассказано…
При росте и развитии компании вопрос удобных и полезных внутренних инструментов встаёт всё острее. В докладе будет рассказано…
Алгоритмы
В современной разработке не так много областей, где программисту нужно уметь строить сложные алгоритмы. Поэтому, многие специалисты обходят эту область стороной.
Это плохо по двум причинам:
+ знания алгоритмов могут потребоваться внезапно, будет глупо просить бизнес ждать;
+ многие задачи неявно требуют знания классических алгоритмов, а решения построенные без него будут сложными и непроизводительными.
OTUS запускает курс «Алгоритмы для разработчиков». Научат использовать готовые алгоритмы и проектировать решения на основе базовых подходов , расскажут про оценку сложности и структуры данных. Обратите внимание, для участия в курсе нужно знать Java, C++ или Python.
#общие_знания #алгоритмы #партнерский_материал
В современной разработке не так много областей, где программисту нужно уметь строить сложные алгоритмы. Поэтому, многие специалисты обходят эту область стороной.
Это плохо по двум причинам:
+ знания алгоритмов могут потребоваться внезапно, будет глупо просить бизнес ждать;
+ многие задачи неявно требуют знания классических алгоритмов, а решения построенные без него будут сложными и непроизводительными.
OTUS запускает курс «Алгоритмы для разработчиков». Научат использовать готовые алгоритмы и проектировать решения на основе базовых подходов , расскажут про оценку сложности и структуры данных. Обратите внимание, для участия в курсе нужно знать Java, C++ или Python.
#общие_знания #алгоритмы #партнерский_материал
Есть несколько технологий, используя которые я получаю удовольствие.
Flutter — одна из них. Завтра весь день буду на DartUp 2019 в Питере. Пишите (@igorkamyshev), встретимся.
Справка. Flutter — фреймворк для разработки мобильных приложений на Dart.
Flutter — одна из них. Завтра весь день буду на DartUp 2019 в Питере. Пишите (@igorkamyshev), встретимся.
Справка. Flutter — фреймворк для разработки мобильных приложений на Dart.
Послушал очень хороший доклад про #ddd от Маджита Хаджиана.
Strategic Domain-Driven Design for Improving Flutter architecture
Доклад почти не привязан к Flutter, но отлично раскрывает практику применения DDD к клиентским приложениям. Уверен, что каждому разработчику интерфейсов стоит посмотреть запись.
Strategic Domain-Driven Design for Improving Flutter architecture
Доклад почти не привязан к Flutter, но отлично раскрывает практику применения DDD к клиентским приложениям. Уверен, что каждому разработчику интерфейсов стоит посмотреть запись.
Сборка проекта — это непросто. Фронтендеры даже в резюме части пишут: «умею настирывать сборку», будто это какой-то особенный скилл за который их должны сразу взять на работу.
Во-первых, иногда проект состоит из систем на разных языках. Бекенд на Java и фронтенд на TypeScript. Придется делать две разные команды, запускать их последовательно и держать в памяти как это все нужно делать. Не очень хорошая идея.
Во-вторых, кроме сборки у вас может быть еще много разных задач. Нужно запустить набор разных тестов (юниты, интеграционные, из-конца-в-конец). В JS-мире эту задачу обычно решают npm-скрипты. Это не самый удобный инструмент. В других экосистемах тоже есть свои решениях разной степени удобства.
Для решения этих проблем есть прекрасная штука — Make. Это инструмент, который позволяет создать библиотеку команд и хранить ее рядом с кодом. Почитайте моднейшее современное руководство по Make, возможно оно упростит каждодневные задачи при работе с кодом.
Во-первых, иногда проект состоит из систем на разных языках. Бекенд на Java и фронтенд на TypeScript. Придется делать две разные команды, запускать их последовательно и держать в памяти как это все нужно делать. Не очень хорошая идея.
Во-вторых, кроме сборки у вас может быть еще много разных задач. Нужно запустить набор разных тестов (юниты, интеграционные, из-конца-в-конец). В JS-мире эту задачу обычно решают npm-скрипты. Это не самый удобный инструмент. В других экосистемах тоже есть свои решениях разной степени удобства.
Для решения этих проблем есть прекрасная штука — Make. Это инструмент, который позволяет создать библиотеку команд и хранить ее рядом с кодом. Почитайте моднейшее современное руководство по Make, возможно оно упростит каждодневные задачи при работе с кодом.
Make: современное руководство
Руководство по современному использованию Make и Makefile