kamyshev.code
1.94K subscribers
40 photos
565 links
Архитектура, код, софт-скиллы и всё остальное. Вопросы, пожелания, комментарии — @igorkamyshev

https://kamyshev.me
Download Telegram
Хей-хоу! Я писал, что в начале августа сменил работу и теперь работаю в Самокате. Мы делаем быструю доставку продуктов (15-30 минут) без минимальной суммы заказа.

Я занимаюсь внутренними продуктами компании. Работы много (очень), и мы ищем двух матерых фротендеров (офис, Питер).

От вас:
- не бояться (задач, клиентов, кода);
- делать надежные интерфейсы;
- шарить в JavaScript, понимать React, любить TypeScript;
- уметь общаться дизайнерами и продуктологами.

От нас:
- сложные проекты, важное дело;
- крутая команда, умные коллеги.

Пишите за подробностями — @igorkamyshev.
​​Немножко не успеваю вовремя доставлять статьи, но буду стараться. 🤓

+ Четыре правила интуитивного UX — базовые правила создания интерфейсов, программистов это тоже касается
+ История одного монолита, часть 1, часть 2 — история постепенного разбиения монолита 2ГИС на многие серивисы
+ TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development — краткий обзор нескольких методологий разработки

#дайджест
​​Rust

Я привык писать на выскоуровневых языках, только однажды писал на C — в 10 классе на олимпиаде по программированию.

Недавно товарищ показал мне туториал по созданию рогалика на Rust. Я попробовал этот язык и оказалось, что это совсем другой опыт. Нужно писать много кода, он невыразительный, сложный. Зато очень быстрый.

С такими языками мы можем эффективнее использовать компьютеры. Не платить цену за лишние абстракции. Уметь писать такой код важно в любой области, а Rust — отличный кандидат, чтобы научиться.

#языки
Не бойтесь документации

Многие разработчики, когда им нужно разобраться с какой-то технологией, начинают со статей, онлайн-курсов и книг. Я думаю, эта стратегия валидна только для новичков в программировании.

Если у вас есть даже небольшой опыт разработки, и вам нужно познакомиться с новым языком, фреймворком или платформой — начните с чтения документации. Просто от начала и до конца. Обычно, это достаточно небольшой объём текста, который, скорее всего, охватывает все важные аспекты и написан специалистами в выбранной области.

Уже после можно перейти к чтению статей, книг, просмотру докладов. Вероятно, часть статей плоха. И после прочтения документации вы будете в состоянии это заметить. Это относится и к книгам, и к докладам.

#общие_знания
Обратите внимание, у канала изменился пермалинк. Теперь @kamyshev_code.

tlinks.run/kamyshev_code
Связанность

При создании приложения очень важно сохранить гибкость. То есть с течением времени сложность внесения изменений не должна увеличиваться. Это достигается, в первую очередь, низкая связанность.

Крутейшний доклад Сергея Протько  «Связать и развязать».

#проектирование #архитектура
Год назад я начал вести этот блог в его современном виде 🎉

Хочется делать это лучше. Напишите мне, пожалуйста, что вы думаете о контенте, какие темы вам инетересны, а какие совсем нет. Что из постов радует, что раздражает. Мне очень важно это знать.

@igorkamyshev
Красивый код не рюшечки

Этой зимой я спорил с коллегой о красивом коде. Он был убежден, что чистый код это приятное дополнение к продукту, я — что это необходимое условие для работающей системы.

За этот год я ещё больше укрепился в этом мнении. Штука в том, что чем лучше написан код, тем дольше можно поддерживать скорость доставки новых фич. И это важно — невозможно объяснить бизнесу, почему месяц назад фичи делали быстро, а сейчас медленно, и почему дальше будет только хуже.

То есть, плохой код имеет смысл только для очень коротких проектов, которые будут выброшены или полностью переписаны. Для любого долгоживующего проекта нужно тратить время на написание качественного, чистого кода, проработку архитектуры.

#архитектура #проектирование
Красивый код не рюшечки

Окей, для длинных проектов важна чистота кода. Как определить, что проект длинный?

Все просто. Есть два признака.

1. Проект длится больше месяца. Обычно известно заранее, сколько есть времени на проект. Если проект должен занять больше, чем 4 недели — он длинный.

2. Над проектом работает трое. В команде от трёх человек невозможно делить знания о всех костылях, значит нужно их избегать. Конечно, есть и тут ценз по длительности. Если проект занимает больше недели — это длинный проект.

Наша работа — не допускать длинных проектов с плохим кодом. Работать с ними не только сложно для инженеров, но и опасно для бизнеса.

#проектирование #архитектура
Фронтенд

JS-разработчиков мало. Найти хорошего фротнендера — жуткая боль. Потребность в специалистах растет быстро, количество программистов — медленно.

Нужно эту ситуацию как-то исправлять. SkillFactory очень вовремя запускает специализацию «Frontend-разработчик». Учат с самых основ — CSS/HTML, потом расскажут про JavaScript, принципы работы веб-приложений.

Я сейчас приемущество занимаюсь фротнендом и уверен, что это одна из самых стабильных и кайфовых областей для работы. Во-первых, фротнендерам легко найти работу с хорошей зарплатой. Во-вторых, именно фронтенд-инженеры могут легко влиять на продукт и находятся максимально близко к клиентам. Приходите во фронтенд делать веб лучше!

#фронтенд #партнерский_материал
Амплифер — сервис для публикации постов в разные соцсети. Команда разработки этого сервиса очень трепетно относиться к продукту, с них стоит брать пример.

Недавно они опубликовали документ с основными принципами, на которых основана работа — Принципы разработки Амплифера

#softskills
Реакт-нейтив

Я не трогал реакт-нейтив с 2017 года. И тогда с ним было все очень плохо. В начале августа временно присоеденился к команде мобильной разработки и вернулся с этому прекрасному фреймворку. На первый взгляд, за эти два года ничего не изменилось.

Во-первых, сохранились главная (для меня) проблема — сложности с подключением нативных модулей. Нужно поставить пакет через npm, потом через react-native-cli пролинковать его, исправить какие-то gradle-файлы, pod-файлы. Это никогда не работает нормально сразу на двух платформах. Если завелось на iOS, значит будут проблемы на Android. Отвратительно.

Во-вторых, качество библиотек так и не выросло. Они все еще стремные, полные багов, без номральной поддержки. Найти качественное решение сложно, приходиться читать тонны исходного кода, чтобы найти решение проблемы.

В-третьих, приложение не получается одинаково хорошо работающим на iOS и на Android. Эти системы устроены по разному и там где на одном устройстве прдполагается свайп влево, на другом нужно нажать кнопку "Назад". Это дополнительно нагружает и дизайнеров и разработчиков. Из-за ограниченности ресурсов, часто одна из платформ становится доминирующей.

Но! В целом разработка на реакт-нейтве не вызывала у меня такой оторопи, как в 2017. Есть полноценные инструменты разработчика, даже дебаггер почти работает. Появились удобные абстракции над родной стилизацией. Поддерживается современная версия реакта.

Реакт-нейтив — отличный инструмент для команды веб-разработки, которой срочно нужно сделать мобильное приложение. Но если проект начинается с нуля, нужно крепо подумать, стоит ли использовать такую неоднозначную технологию.

#фронтенд
Экспертиза умерла

Недавно прочел в твиттере мысль, что сейчас при найме многие не проверяют кандидата на экспертизу, а просто смотрят на его известность. Ну то есть, если у чувака много подписчиков, то это автоматически повышает его шансы быть нанятым.

С одной стороны, это больной подход. Хороший специалист не обязан вести блог, не обязан выступать на конференциях.

А с другой стороны — умение объяснять свои решения, выступать перед публикой и в целом не быть мудаком, это супер-важные качества для любого работника. И они неплохо коррелируют с известностью.

Научить хард-скиллам легко. Научить софт-скиллам — сложно. Качайте софт-скилы, чтобы оставаться актуальным на рынке.

Правда, я не знаю как это делать. 😢

#softskills
Solid

ООП — это сложно. Но именно с помощью объектно-ориентированного дизайна приложение можно сделать надежным, расширяемым и поддерживаемым.

Способ писать хорошой объектно-ориентированный код описан в принципах SOLID, котроые сформулировал и описал в "Чистой архитектуре" Дядя Боб. Это прекрасная книга, которую должен прочесть каждый программист. Но она достаточно теоретическая, в ней мочти нет примеров хорошего кода.

Саша Беспоясов и Артем Самофалов сделали интерактивный курс про принципы SOLID, с примерами на TypeScript, тестами и автоматическими проверками. Если вы не чувствуете себя уверенно при проектировании приложений — пройдите этот курс.

https://ota-solid.now.sh/

#проектирование #архитектура
Последние два месяца я занимаюсь исключительно фротнендом. Когда планировал менять работу, немного преживал — я очень люблю писать на Node.js. Но, как оказалось, это позволяет сконцентрироваться, решать фронтовые задачи быстрее и качественнее.

Я все еще убежден, что фулстеки бывают, что мы должны иметь максимально широкий кругозор и уметь много. Но иногда приятно погрузиться в какую-нибудь узкую область и сделать в ней что-то крутое.

Чтобы прокачаться во фротненде нужно идти на специализацию Frontend-разработчик от SkillFactory. Подойдет и новчикам и программистам из других сфер. Внутри бодрая программа, все необходимое для начала работы и много практики.

#фронтенд #партнерский_материал
​​Алгоритмы

В современной разработке не так много областей, где программисту нужно уметь строить сложные алгоритмы. Поэтому, многие специалисты обходят эту область стороной.

Это плохо по двум причинам:
+ знания алгоритмов могут потребоваться внезапно, будет глупо просить бизнес ждать;
+ многие задачи неявно требуют знания классических алгоритмов, а решения построенные без него будут сложными и непроизводительными.

OTUS запускает курс «Алгоритмы для разработчиков». Научат использовать готовые алгоритмы и проектировать решения на основе базовых подходов , расскажут про оценку сложности и структуры данных. Обратите внимание, для участия в курсе нужно знать Java, C++ или Python.


#общие_знания #алгоритмы #партнерский_материал
Есть несколько технологий, используя которые я получаю удовольствие.

Flutter — одна из них. Завтра весь день буду на DartUp 2019 в Питере. Пишите (@igorkamyshev), встретимся.

Справка. Flutter — фреймворк для разработки мобильных приложений на Dart.
Послушал очень хороший доклад про #ddd от Маджита Хаджиана.

Strategic Domain-Driven Design for Improving Flutter architecture

Доклад почти не привязан к Flutter, но отлично раскрывает практику применения DDD к клиентским приложениям. Уверен, что каждому разработчику интерфейсов стоит посмотреть запись.
Сборка проекта — это непросто. Фронтендеры даже в резюме части пишут: «умею настирывать сборку», будто это какой-то особенный скилл за который их должны сразу взять на работу.

Во-первых, иногда проект состоит из систем на разных языках. Бекенд на Java и фронтенд на TypeScript. Придется делать две разные команды, запускать их последовательно и держать в памяти как это все нужно делать. Не очень хорошая идея.

Во-вторых, кроме сборки у вас может быть еще много разных задач. Нужно запустить набор разных тестов (юниты, интеграционные, из-конца-в-конец). В JS-мире эту задачу обычно решают npm-скрипты. Это не самый удобный инструмент. В других экосистемах тоже есть свои решениях разной степени удобства.

Для решения этих проблем есть прекрасная штука — Make. Это инструмент, который позволяет создать библиотеку команд и хранить ее рядом с кодом. Почитайте моднейшее современное руководство по Make, возможно оно упростит каждодневные задачи при работе с кодом.