Как стать автором
Обновить

Компания QIWI временно не ведёт блог на Хабре

Сначала показывать

Чистый код. Часть 2

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

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

Передача булевых аргументов

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

Читать далее
Всего голосов 25: ↑22 и ↓3+19
Комментарии10

Чистый код, часть 1

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

Привет! В этом посте я хочу обсудить, что такое чистый код и почему я считаю его очень важной практикой. Если у вас всё руки не доходили до того, чтобы сесть и подробно почитать книги Дяди Боба, я подготовил небольшой конспект по его видеолекциям со своими примерами с самым главным.

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

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

Читать далее
Всего голосов 28: ↑24 и ↓4+20
Комментарии36

Не навреди. Деликатные советы для наставников, работающих с новичками

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

Всем привет! Меня зовут Ольга Болотова, и я Developer Advocate в QIWI. Сейчас я представляю интересы разработчиков, но до этого я была фронтенд-разработчицей, и пять лет работала с новичками, стажёрами и их наставниками. А потом на позиции руководительницы запустила программу стажировок во фронтенд-направлении в моей прошлой компании.

По себе знаю, что стажёры могут обернуться болью и потерянным временем, но могут и стать бриллиантами под руководством наставника. В своей работе я всегда стремилась огранять алмазы и не тратить на это весь рабочий день, оставаться профессионалом и не перегибать палку, выпускать мотивированных, закалённых и уверенных разработчиков. Без ложной скромности скажу так, если вы наставник, готовитесь им стать или просто часто взаимодействуете с новичками, эта статья c советами — мастхэв. 

Читать далее
Всего голосов 19: ↑14 и ↓5+9
Комментарии14

Как загадочный разработчик снизил затраты на AWS на 90%, а потом исчез

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

Недавно я завершил аудит своего SaaS-клиента. Его история достойна рассказа. Это история о жадности, лжи и красоте хакинга.

Это история о том, как благодаря мой клиент снизил свои ежемесячные траты на AWS на 90 тысяч долларов благодаря таинственному разработчику, который исчез, как только работа была сделана.

Когда спустя полгода затраты на AWS снова взлетели примерно до 120 тысяч в месяц, этот клиент попросил меня разобраться, что же произошло на самом деле.

И разгадка оказалась совершенно сумасшедшей!
Читать дальше →
Всего голосов 141: ↑134 и ↓7+127
Комментарии127

Менеджмент сертификатов – как застраховаться от просрочки

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

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

Эти сертификаты имеют срок годности, они выпускаются не на 100 лет (технически это возможно, но по понятным причинам вариант не пользуется популярностью), а обычно на год. И частенько они просрочиваются – срок сертификата подходит к концу, об этом забывают и пропускают его смену, что приводит к потере денег или времени. Боль, на самом деле, повсеместная, и немногие пытаются успешно с ней бороться. У нас это получилось, и мы хотим поведать вам о нашем пути, который еще не закончен.

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии16

Как устроены интернет-платежи: вопрос—ответ

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

Привет! В одном из недавних постов ребята из Додо разбирали устройство интернет‑платежей и в самом конце текста задались десятком вопросов по теме. Меня зовут Антон, я IT‑менеджер в продукте Эквайринга, и мне удалось собрать знающих ребят в QIWI, чтобы довольно подробно ответить на эти вопросы.

Предложение пообщаться

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

@aurokk

Что получилось — под катом.

Читать далее
Всего голосов 21: ↑20 и ↓1+19
Комментарии11

Своя альтернатива Google Maps: хостим сервер OpenStreetMap

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров13K

Зачем? Это странно...


Нет, не странно! Google Maps — это, наверно, самый потрясающий сервис, который мы получаем бесплатно [в обмен на свои персональные данные].

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

Но что, если бы нам вообще не нужен был Google?

OpenStreetMap бесплатно предоставляет всему миру данные карт, собранные при помощи краудсорсинга. Но я не имею в виду, что можно просто воспользоваться OSM. Эта организация предоставляет данные, однако политика использования стимулирует пользователей не полагаться на её серверы при личном пользовании, а брать на себя ответственность за хостинг. И глядя на этот проект, я понимаю, почему. Его аппаратные требования не для слабонервных.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии23

Как работать с качеством в командах, где нет тестировщиков?

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

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

Проблематика прошлого

Когда‑то у QIWI была довольно популярная структура. У нас были отделы разработки, аналитики, тестирования и прочее. Ребята из этих отделов объединялись в проектные команды и занимались проектом.

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

И в рамках этой цели у нас в фокусе всегда было две вещи:

Читать далее
Всего голосов 28: ↑23 и ↓5+18
Комментарии20

RPG в разработке — как создать команду с учётом особенностей ролей

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

Привет! Меня зовут Тимофей, я IT lead в QIWI. Но так было не всегда — например, год назад я в рамках того же продукта, что и сейчас, был продуктовым разработчиком в части бэкенда. Передо мной (так я был старожилом) поставили занятную задачку — собрать новую команду. В этом посте я хочу рассказать про ролевую модель Белбина, почему она (на мой взгляд) очень полезна для работы и для построения команд. А ещё о том, какие проблемы могут возникать в вашей компании, если в ней нет определенных ролей.

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

Я понял, что у меня как у программиста понимание этой модели (почему некоторые команды складываются, а некоторые — вообще никак) почти никакого нет. Когда я был больше программистом, большинство моих вопросов мог решить Stack Overflow. Однако с вопросом «Как мне собрать идеальную команду, чтобы она здорово перформила?» даже он не смог мне помочь.

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

Читать далее
Всего голосов 24: ↑23 и ↓1+22
Комментарии10

Как я засунул Stable Diffusion в IPhone

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

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

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

В последний раз такое происходило с глубокими нейронными сетями, а до этого — с 3D-графикой. Наверно, сейчас настал третий раз. На самом деле, я настолько в этом уверен, что создал приложение, чтобы подтвердить свою точку зрения.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии11

Как выбрать NewSQL-СУБД для вашей компании

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

Привет! Меня зовут Пётр, я менеджер по отказоустойчивости в QIWI. В этом посте мы поговорим про выбор новых классов продуктов. Как-то раз мы с одним разработчиком из другой компании стали обсуждать, почему бы не выбрать для работы какую-то распределенную СУБД, поддерживающую SQL? Из этой дискуссии родился мой доклад для нашей QIWI Server Party. Представляю вам его текстовую версию.

Читать далее
Всего голосов 35: ↑33 и ↓2+31
Комментарии10

Ускоряем тестирование: быстро, модно, без рутины

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

Привет! Меня зовут Александр Пронин, я занимаюсь тестированием более пяти лет, последние полгода из которых — в QIWI, проект ContactPay. Мы делаем платежную систему для международного рынка, она состоит из микросервисов, которые написаны на Python и живут в Google Cloud. Проект существует на рынке более двух лет, на данный момент среди наших клиентов уже есть компании-единороги. 

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

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

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии12

Заставим производителей раскрыть дату смерти электроники

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

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

Если у вас есть наушники Apple AirPods, то они умрут, и, наверно, раньше, чем вы могли бы предположить.

В моих аккумуляторы продержались чуть дольше двух лет. А когда они перестали держать заряд, я вынужден был выбросить их и купить новые AirPods, потому что мёртвые аккумуляторы приклеены внутрь.

Разве технологии обязательно должны так работать? Нет, просто так технологические компании могут заработать на вас больше денег.
Читать дальше →
Всего голосов 95: ↑91 и ↓4+87
Комментарии559

Держим форму — как T-shape поможет вашей команде

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

Всем привет! Есть такое понятие, как I-shaped специалист — человек, который является экспертом в какой-то области и развивает свои знания в ее рамках. А еще есть понятие дженералист — этот человек уже разбирается во многих областях, но при этом не является ни в одной из них экспертом. В восьмидесятых-девяностых годах появилось понятие “T-shaped специалист”, тот, кто является экспертом в какой-то одной области и имеет поверхностные знания в одной или нескольких других. Сразу оговорюсь, что мы в продукте Кошелька под областями понимаем платформы разработки — бэкенд, QA, IOS, Web и так далее. 

Читать далее
Всего голосов 21: ↑18 и ↓3+15
Комментарии3

Наедине с микросервисом — как забороть тревожность

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

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

Поэтому я люблю метрики — они помогают убедиться в том, что все идет хорошо. О метриках отношений микросервисов и будет этот пост. Меня зовут Алексей Лашнев, я продуктовый разработчик в QIWI.

Читать далее
Всего голосов 22: ↑22 и ↓0+22
Комментарии15

Изучаем изображения, использованные для обучения модели Stable Diffusion

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

Больше всего расстраивает в ИИ-моделях генерации изображений по текстовым описаниям то, что они походят на «чёрный ящик». Мы знаем, что их обучали на скачанных из веба изображениях, но каких именно? Любому художнику или фотографу интересно, использовались ли его работы для обучения ИИ-модели, но на этот вопрос неожиданно трудно ответить.

Иногда данные полностью недоступны: OpenAI сообщает, что обучила DALL-E 2 на сотнях миллионов изображений с подписями, но не опубликовала проприетарные данные. Команда разработчиков Stable Diffusion, напротив, очень прозрачно говорит о том, как обучалась её модель. Так как недавно её опубликовали для общего доступа, Stable Diffusion испытала взрывную популярность, в основном благодаря своей свободной и мягкой лицензионной политике. Модель уже встроена в новую бету Midjourney, NightCafe и собственное приложение Stability AI под названием DreamStudio, а также доступна для работы на собственном компьютере.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии1

29 сентября — QIWI Server Party HARD EDITION

Время на прочтение2 мин
Количество просмотров795

Привет!

Вчера прошёл наш QIWI Server Party SOFT EDITION (кстати, вот тут запись трансляции). А 29 сентября мы проведём вторую часть митапа, которая будет уже про техническую сторону. 

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

Итак, вот что вас ждёт на HARD EDITION:

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

QIWI Server Party 8 — два митапа для разработчиков

Время на прочтение1 мин
Количество просмотров670

Привет!

Мы открываем восьмой сезон QIWI Server Party, митапов для бэкенд-разработчиков и не только. В этот раз мы поделили митап на два самостоятельных дня, посвятив первый день софтовой части, а второй — хардам и желающим заглянуть под капот (его анонс будет чуть позже).

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Чего вам не говорили про сокеты

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

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

Если у вас есть опыт написания приложения с использованием сокетов, то вся эта информация должна быть для вас очевидной. Она неочевидна для меня как абсолютного новичка, поэтому я попытаюсь как можно подробнее объяснить это, чтобы ускорить процесс освоения сокетов для других новичков.
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии18

Как мы платежный шлюз тестируем

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

Всем привет! Сегодня мы поговорим об интеграционном тестировании платежного шлюза, но перед этим расскажу немного про нашу команду и наш проект. Мы (ContactPay) — самостоятельный финтех-стартап внутри QIWI, строим высокопроизводительный отказоустойчивый платежный шлюз и соответствуем стандартам безопасности PCI DSS. 

Как платежный шлюз мы интегрированы со множеством внешних API, это могут быть и платежные системы, и сторонние сервисы мониторинга, антифрода, KYC (know your customer) и так далее. 

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

Мы стараемся писать корректный код с наименьшим количеством  багов. Код должен быть читаемым, самодокументируемым и поддерживаемым. Кроме того, он должен быть безопасным, так как мы  финтех и у нас PCI DSS, это накладывает определенные требования к безопасности. А ещё код должен быть тестируемым. 

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

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

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии0