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

https://kamyshev.me
Download Telegram
Теги нужны?
anonymous poll

да – 156
👍👍👍👍👍👍👍 92%

нет – 13
👍 8%

👥 169 people voted so far. Poll closed.
Несколько месяцев назад я пришел в Самокат делать внутренние продукты. У таких приложений есть несколько специфичных требований. Первое и самое серьезное — они должны быть блейзинг фаст. Поэтому, при планировании нового приложения я сразу заложил время на работу с перфомансом. Самое очевидное решение — уменьшить время загрузки приложения. Так я заменил React на Preact (фреймворк с совместимым API, но меньшего размера). Не все прошло гладко, но результат отличный.

Многие разработчики бояться брать непопулярный, но подходящий им инструмент. И этот страх, безусловно, оправдан. Непопулярная технология требует времени на ознакомление от новых членов команды, есть опасность потратить много денег/времени на разработку экосистемы. Поэтому, важно найти компромисс. Любая технология, которую вы используете в боевых проектах должна:

- подходить продукту;
- быть простой в освоении или популярной;
- быть поддерживаемой.

Для того, чтобы находить такие технологии, важно смотреть на мир вокруг. Изучать индустрию и смотреть на соседние области.

#softskills #общие_знания
В хорошей команде должно быть много коммуникации. Смотрите:

— Когда нужно закончить?
— Хм... 25 ноября.
— Ок, делаем.

Или:
— Когда нужно закончить?
— Хм... 25 ноября.
— Стой, 25 мы должны закончить разработку или выпустить релиз?
— Да, конечно релиз.

Недавно я оказался чуваком из первого диалога. Услышав дату окончания проекта принял ее за дату завершения разработки. Мне повезло — через неделю в разговоре с QA ошибка вскрылась.

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

#процесс #softskills
Сейчас занимаюсь разработкой UI-кита для набора разных веб-приложений. Большая часть интерфейсов этих приложений написана на React, но есть одно очень важное на Angular.

Делать клон библиотеки слишком дорого. Значит, нужно использовать React‑компоненты в Angular-приложении с минимальными затратами. Написал небольшую заметку на Хабр — Angulareact / Хабр.

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

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

Часто слышу вопрос: «Где лучше работать: в аутсорсе или в продукте?». У меня нет однозначного ответа, но теперь я понимаю — это работа для разных специалистов.

- В аутсорсе большой поток проектов и сложно концентрироваться на конкретных технических решениях, фокус смещается на «законченность». Это спринт.
- В продуктовой компании отдельные проекты живут дольше и редко их можно «закончить». Это марафон.

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

В JavaScript очень интересно устроен сборщик мусора. Посмотрите доклад об этом — garbage.collect().

#фронтенд #языки
Джуность

Самое сложное в изучении программирования — знать, что изучать. Ребята из Anmedio. запустили клевый проект — Джуность. Это простая таблица, которая показывает какие знания они ожидают увидеть у специалиста того или иного уровня. Не нужно воспринимать эти пункты как непогрешимую истину, но обратить на них внимания при составлении индивидуального плана обучения определенно стоит.

#рост
Напиши-дважды-дривен-девелопмент

В разработке есть культ правила «не повторяй себя». Считаю это одним из самых вредных советов.

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

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

#проектирование
Проект «Феникс»

Кажется, я ни разу не советовал тут художественной книги.

Осенью прочитал "Проект «Феникс»". Это книга о том, как DevOps меняет бизнес к лучшему. На примере интересной истории Ким Джин и Бер Кевин показывают, насколько важна интеграция разработки и эксплуатации. Рассказывают, в чем настоящая ценность программного обеспечения и учат, как эту ценность извлекать.

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

#автоматизация
Изучение разных языков программирования очень полезно. Это позволяет перенимать интересные концепции и лучшие практики разных экосистем и писать лучший код.

Отличный подкаст «Мысли и методы» про разные подходы к исполнению программ — интерпретацию и компиляцию, про системы типов.

#языки
Близится стабильный релиз Deno.

Тематическая статья — Deno: время Node.JS уходит?

Node.js — это очень хорошо. Это простая, производительная и удобная платформа для написания широкого класса приложений. В ней есть некоторые проблемы, но мы можем их решить.

Deno пытается стать лучшей версией Node, но не может. Он не решает текущие проблемы Node.js, но приносит кучу новых. Он похож на редакс — идея может и красивая, но в жизни все будет совсем не так.

Если кто-нибудь верит в Deno, напишите, пожалуйста, почему — @igorkamyshev

#языки #спор
На скорость работы программиста сильно влияет переключение контекста. То есть примерно так. Если выполнить две задачи последовательно — это займёт 2 дня. А если попытаться делать их параллельно — 3.

Старайтесь работать в один момент времени только над одним проектом и убежать менеджеров, которые требуют обратного.

#процесс #softskills
​​Очень давно не публиковал дайджестов 🤓

- Вопросы будущему работодателю — о важных вещах, которые лучше уточнить на собеседовании

- Будущее программирование — Никита Тонский рассуждает о будущем и ворчит на настоящее

- Разработчик, который не думает, а просто делает — не нужен? — о ценности разработчика для бизнеса и его задачах

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

- Десять вещей, которые можно делать с GraalVM — разбор областей применения и причин использования GraalVM (возможно, на этой штуке скоро будут работать все модные бекенды)

#дайджест
Under JS

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

Недавно начал слушать UnderJS Podcast. И он совсем другой. В нем разбирают более глубокие темы, обсуждают разное и интересное. Недавно были выпуски про Haskell, про Dart, рассуждение на тему стейт-менеджеров. Если вам близок JS-мир, послушайте этот подкаст.

#языки #фронтенд
​​Как правильно ездить в отпуск

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

1. Чаще всего коллеги достаточно компетентны (если нет, надо с этим что-то делать) и они не сломают все за эти две-три-четыре недели. Нужно принять это и довериться им.
2. Перед отпуском важно довести все свои задачи до логического завершения или подробно рассказать кому-нибудь как их довести. Нельзя оставлять зависшие проблемы.
3. Не планировать по возвращении из отпуска сразу что-то выпустить — скорее всего не получиться, а стресс будет. Стоит признать, что первые два дня после отпуска будут потрачены на возвращение в рабочий ритм и разгребание накопившегося долга.

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

#softskills
Индивеб — это подход к поведению в интернете, при котором человек остается владельцем контента, который он производит. Например, можно выкладывать посты на личный сайт, а не в телеграм канал. Эта философия интересна не только с точки зрения независимости и безопасности, но и с технической стороны.

Весь декабрь Тим Маринин рассказывал о том как делать инди-сайты. Вчера вышел последний пост и теперь можно прочитать все скопом: 24 дня индивеба — адвент-календарь постов про Индивеб.

#общие_знания
Решения для себя

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

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

#общие_знания
​​Астрологи объявили неделю асинхронной коммуникации

- Работай асинхронно — простые правила эффективной (не)блокирующей работы

- Асинхронное общение — руководство по асинхронной коммуникации внутри команды, преимущества и недостатки (по версии автора, их нет)

- Взгляд со стороны EcmaScript на общую теорию ООП — отличный разбор объектно-ориентированного программирования в JavaScript, его отличий от других языков

- Сообщение об ошибке, от которого не горит — очередное размышление на тему хороших сообщений об ошибках

- Как организовать работу над библиотекой общих компонентов — опыт разработки UI-кита от Тинькофф

#дайджест
Сейчас читаю и конспектирую «Создание микросервисов». Вот вам конспект первой главы.