Как стать автором
Обновить
11
0
Владимир Номхоев @nomhoi

Программист

Отправить сообщение

Взломщики «черного ящика»: чем занимаются системные аналитики в Lamoda

Время на прочтение9 мин
Количество просмотров9.3K

Всем привет! Меня зовут Александра Камзеева, я руководитель направления системного анализа в IT PMO в Lamoda. За полтора года мы выросли с 3 до 22 человек.

Такой стремительный рост и подтолкнул нас на вопрос: «Кто такой системный аналитик и какую роль он выполняет именно в Lamoda?» Мы поняли, что четкий ответ позволил бы нам эффективнее расширять команду, проводить собеседования и онбординг. Благодаря объяснению, кто мы такие, наши коллеги из разработки, QA, бизнеса лучше понимают, с какими вопросами и задачами стоит или не стоит к нам приходить. 

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

Читать далее

Асинхронность в С++20. Доклад в Яндексе

Время на прочтение14 мин
Количество просмотров26K
Привет, это Григорий Демченко из WhatsApp. Мой доклад посвящён использованию сопрограмм в C++20. Я не стал говорить про низкоуровневые примитивы и то, как компилятор поддерживает сопрограммы и преобразовывает соответствующий код. Вместо этого акцент сделан на практическом применении сопрограмм для решения конкретных задач высокопроизводительных масштабируемых систем. Это именно то, ради чего создавались сопрограммы в новом стандарте, и то, с чем разработчик будет иметь дело в процессе проектирования и программирования. Я постарался рассмотреть конкретные примеры и проблемы, с которыми можно столкнуться при использовании полностью асинхронного подхода.

— О чём я сегодня расскажу? Первое — введение в асинхронность. Далее мы рассмотрим примитивы, которые можно использовать в новом стандарте, и интеграцию с планировщиками. Также немаловажным аспектом будет являться работа со старым кодом, если мы пишем новый код с использованием нового подхода. Затем я покажу бонус, достаточно интересный и необычный. И подведём итоги того, что у нас получилось.
Читать дальше →

В чём разница между Debian и Ubuntu? Что лучше выбрать?

Время на прочтение7 мин
Количество просмотров195K
Поговорим о Debian и Ubuntu. И там, и там можно использовать команды apt-get для управления приложениями. Оба дистрибутива поддерживают установку DEB-пакетов. Часто, читая статьи про Linux, можно видеть, что для Debian и Ubuntu подходят одни и те же инструкции по установке каких-то программ.

Чем же, при такой близости друг к другу, различаются эти дистрибутивы?


Для начала надо сказать, что Debian и Ubuntu принадлежат одном и тому же семейству Linux-дистрибутивов. А именно — Debian — это исходный дистрибутив, созданный в 1993 году Иэном Мёрдоком. А дистрибутив Ubuntu, основанный на Debian, создал в 2004 году Марк Шаттлворт.
Читать дальше →

PlantUML — инструмент продуктового разработчика

Время на прочтение10 мин
Количество просмотров42K

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

С одной стороны, решение работающее. С другой, буквально через неделю-две я уже начинал сомневаться, достаточно точно ли я «перевел» с кода на русский язык? И тогда вспомнил про UML-диаграммы. И вместо того, чтобы записывать текст, стал визуализировать его и исписал неимоверное количество тетрадей. 

Но в какой-то момент подумал, что хорошо бы перевести все это в электронный вид, чтобы какой-то инкремент оставался. Не фоткать же, например, для документации, свою тетрадь с каракулями. Так я нашел инструмент PlantUML — opensource-решение, которое использует графическую библиотеку graphviz, превращающее код в наглядные схемы.

Давайте вспомним, что такое Unified Modeling Language. Чаще всего в университете UML используется для описания диаграммы классов.

Читать далее

Умный аналитик – глупый разработчик vs. глупый аналитик – умный разработчик

Время на прочтение10 мин
Количество просмотров26K

Или как понять, когда остановиться

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

— Скажи, а зачем нам вообще нужны аналитики?

— И действительно, зачем? – подумал тогда я и написал заявление

Вопрос этот, как бы крамольно он ни звучал, очень правильный. Системный анализ, как фаза разработки приложения, присутствует всегда (даже если это системы класса «Hello, world»), а вот системный аналитик, как выделенная роль – нет. Выделение отдельной специальной роли работает точно так же, как и разделение труда в обычном производстве: для маленьких задач не целесообразно, для больших задач – оправданно. При таком разделении  системный аналитик забирает на себя часть задач и функций некоего «универсального» исполнителя задачи. Однако, подобное разделение труда имеет свою цену: это потеря знаний при коммуникации, более сложное управление процессом и др. В этой статье я хочу поделиться своим опытом: описать минусы крайностей и дать рекомендации по распределению обязанностей между системными аналитиками и разработчиками.

Итак, нам нужен системный аналитик, который формирует требования и разработчик, который эти требования реализует в коде.

Если спросить у любого разработчика, каким главным свойством должны обладать системные требования, он, скорее всего, скажет: «чтобы было понятно, что делать». И это проблема. 

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

Читать далее

Как научиться разработке на Python: новый видеокурс Яндекса

Время на прочтение6 мин
Количество просмотров253K
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать дальше →

Запросы в PostgreSQL: 3. Последовательное сканирование

Время на прочтение16 мин
Количество просмотров17K

В предыдущих статьях я рассказал об этапах выполнения запросов и о статистике.

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

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

Читать далее
Каждый супергерой до поры не знает о своём предназначении. Илья Муромец пролежал на печи 33 года, думая, что он немощен, а доктор Брюс Беннер оказался в эпицентре взрыва гамма-бомбы и, спасая жизнь подростку, узнал, что он Халк. Ты сидишь на диване и, лениво листая Хабр, ждёшь знака свыше? Это он. Мы открываем набор в отряд героев финтеха. Тебе будут заданы вопросы из самых разных областей банковских IT, ответы на которые мы ищем в нашей повседневной работе. Докажи, что ты способен выйти за рамки узкой специализации, что ты универсальный гений и человек Ренессанса, готовый в одиночку держать IT-отдел финтех-компании на плаву.
Поехали!

Что видят в ваших резюме Python-рекрутеры, или Как получить работу мечты

Время на прочтение21 мин
Количество просмотров35K

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

Сегодня посмотрим на 5 резюме с точки зрения рекрутеров, которые ищут Python-разработчиков. На круглом столе конференции Python Week 2020 рекрутеры рассказали, что они ожидают от резюме по умолчанию, а что — им хотелось бы видеть еще. Два резюме будут от джунов, одно — от крепкого миддла, и еще пара — от кандидатов, которые решили поменять направление своей карьеры.

Читать далее

Библиотека СleanAPI: cоздаем микросервис на Python за 30 секунд

Время на прочтение4 мин
Количество просмотров21K

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

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

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

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

Читать далее

А что у них? Обзор американской бухгалтерии QBD

Время на прочтение7 мин
Количество просмотров16K

В статье вы найдете обзор системы, а также немного аналитической информации.

Читать далее

Использование потоков WebAssembly из C, C++ и Rust

Время на прочтение12 мин
Количество просмотров9.7K


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

В этой статье вы узнаете, как использовать потоки WebAssembly для переноса многопоточных приложений, написанных на языках C, C++ и Rust, в веб-среду.
Читать дальше →

Пишем первый плейбук Ansible

Время на прочтение10 мин
Количество просмотров77K

Статья подготовлена на основе уроков из открытой темы "Установка LEMP стека с помощью Ansible" курса по Ansible от Слёрм. Автор – Всеволод Севостьянов, Lead Engineer в Vene.io (Affiliate marketing solution). Первые две темы курса доступны на Youtube.

Материал этого урока будет интересен тем, кто разобрался с установкой Ansible и готов написать свой первый плейбук. Результатом будет плейбук, устанавливающий nginx на удалённой машине.

Читать далее

Стратегия тестирования REST API: что именно вам нужно тестировать?

Время на прочтение8 мин
Количество просмотров226K

Слой API любого приложения - один из важнейших программных компонентов системы. Это канал, который соединяет клиента с сервером (или один микросервис с другим), управляет бизнес-процессами и представляет сервисы, которые  приносят пользу пользователям. 

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

Становится понятно, что важность тестирования API очевидна. Некоторые методологии и ресурсы помогают нам узнать КАК тестировать API - вы можете использовать ручное тестирование, автоматическое тестирование, тестовые среды, инструменты, библиотеки и фреймворки. Однако, независимо от того, чем вы будете пользоваться - Postman, supertest, pytest, JMeter, mocha, Jasmine, RestAssured или любыми другими инструментами - прежде чем открывать любой инструмент тестирования, вам необходимо определить, что тестировать...

Читать далее

Пишем на Питоне сразу хорошо

Время на прочтение8 мин
Количество просмотров46K

Привет Хабр!

Сегодня я сниму костюм аниматора и вместо развлечений расскажу вам немного за питон.

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

Читать далее

Искусство написания циклов на Python

Время на прочтение4 мин
Количество просмотров92K


Цикл for — самый базовый инструмент потока управления большинства языков программирования. Например, простой цикл for на C выглядит так:

int i;
for (i=0;i<N;i++)
{
  //do something
}

Не существует более изящного способа написания цикла for на C. В сложных случаях обычно приходится писать уродливые вложенные циклы или задавать множество вспомогательных переменных (например, как i в показанном выше коде).

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

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

Автоматизация тестирования на Python. Шесть способов тестировать эффективно

Время на прочтение7 мин
Количество просмотров63K

Мы уже говорили об автоматизации тестирования, теперь пришло время познакомиться с шестью лучшими инструментами автоматизации тестирования на Python.

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

Вы можете настроить нужную степень и уровень автоматизации тестирования на Python, и создавать тесты в соответствии с растущей базой кода. 

Итак, начнем.

Читать далее

Опыт использования BDD

Время на прочтение10 мин
Количество просмотров36K


Около семи лет назад Dan North в своей статье описал практическое применение BDD подхода, который позволяет сделать процесс разработки более понятным и управляемым путем налаживания внутренних коммуникаций. Индустрия с каждым днем проявляет всё больший интерес к этой методологии, нацеленной на продуктивное взаимодействие стандартных команд типа «аналитика-разработка-тестирование».


Однако, сейчас лишь малая часть компаний решается на использование BDD. Почему?

Читать дальше →

Адаптивная балансировка нагрузки или как повысить надёжность микросервиса

Время на прочтение14 мин
Количество просмотров13K

Привет, меня зовут Геннадий, я работаю в Ozon, занимаюсь разработкой backend-сервисов.

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

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

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

Читать далее

Gentoo/Arch/LFS как путь в мир Linux

Время на прочтение9 мин
Количество просмотров21K

Долго держался, не публиковал этот материал. Последний каплей стало вот это: Как Unix-way убивает десктопный Linux


Попалось мне обсуждение на habr Q&A habr Q&A
Очень понравился вот этот ответ от пользователя xolst9.


Стал вспоминать свой опыт и решил развернуто выразить свой взгляд на проблему.
В основном буду писать о Gentoo-linux, но во многом это верно и для Arch linux. С ним у меня опыт по-меньше, но этот дистриб я также считаю отличной учебной партой.

Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность