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

https://kamyshev.me
Download Telegram
​​Я уже писал о том, что любая система должна вести себя предсказуемо. Теперь о способах этого добиться.

Абстракция

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

sendNotificationToUser — где-то на верхних слоях, а sendSms — много ниже, callSmsGateway — совсем внизу.

Правильный путь — выдерживать в одной программной единице (функции, классе, модуле) один уровень абстракции.

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

Такой подход позволяет читать код с меньшей нагрузкой на голову. Он становится предсказуемым.

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

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

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

SkillFactory запустили Курс по Python для веб-разработки полного цикла, там полно живого опыта — три полноценных проекта под присмотром людей из индустрии. Хорошая возможность освоить язык быстро и без боли.

#языки #партнерский_материал
​​Простота

Продолжим разговор о предсказуемости системы. Важным критерием качества кода является его простота.

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

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

#проектирование
История: когда нужно пожертвовать скоростью ради простоты

Я написал систему, довольно простую по сути. У пользователя есть задачки, он может двигать их по разным статусам. Кроме этого, в системе было предусмотрено много дополнительной функциональности — синхронизация задачек с Трелло, уведомления о смене статуса через электронные писема и СМС, etc.

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

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

В итоге, я просто переписал этот кусок кода, и теперь пользователь ждет пока выполнятся все дополнительные штуки. Ответ занимает 1 секунду.

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

#кейс #проектирование
Публиковать еще истории из рабочего опыта?
anonymous poll

Да – 269
👍👍👍👍👍👍👍 98%

Нет – 6
▫️ 2%

👥 275 people voted so far. Poll closed.
Конфигурация приложений — один из самых важных аспектов разработки. Это место, где постоянно происходят утечки секретных данных, тормозится процесс внедрения непрерывной доставки, случаются сложно отлавливаемые рантайм‑ошибки. Забота об этом — необходимость при разработке любого приложения.

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

Конфигурация Node.js приложений

К Node.js относится только предпоследний абзац, так что читать можно и людям из других технологий.

#удобство_разработки #js
Другое программирование

Современный мир пропитан данными — это самая большая ценность. И круто уметь с ними работать. Даже если нет желания полностью посвятить себя этому, важно иметь хотя бы общее представление.

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

В SkillFactory запускается очередной поток специализации Data Science. Это год плотного обучения, куча практики и отличные преподаватели. Я убежден, что осваивать новое нужно под присмотром опытных специалистов, и этот онлайн курс — отличная возможность.

#партнерский_материал