Search
Write a publication
Pull to refresh
1
0

User

Send message

Эксклюзив: детализация уровней сотрудников Shopify. Часть 1

Level of difficultyEasy
Reading time14 min
Views5.8K

Shopify — это один из крупнейших конкурентов Amazon в сфере онлайн‑ритейла. В компании работает около 10 000 человек. Shopify, в отличие от Amazon — централизованной торговой площадки, предлагает коммерческим структурам платформу для создания их собственных онлайн‑магазинов и веб‑сайтов. Shopify — это одна из крупнейших технологических организаций, в которой применяется полностью удалённый режим работы. Она перешла к такой модели в начале 2020 года. Это — одна из последних компаний такого размера, которая не переводит сотрудников обратно в офисы. По крайней мере — пока не переводит.

Shopify находится в самом разгаре внесения серьёзных изменений в свои процессы разработки ПО и в свою систему распределения сотрудников по уровням. Новая система основана на концепции «мастерства». В её рамках существующие уровни делятся на более мелкие части. Компания планировала ввести в строй эти новые «уровни мастерства» в мае, но она немного отстаёт от графика. Правда, даже учитывая это, изменения в уровнях сотрудников уже начались.

Я поговорил с несколькими инженерами‑программистами и менеджерами, которые сейчас работают в Shopify. Мне было интересно узнать от них о том, как в компании работает система уровней сотрудников, что вкладывается в понятие «мастерство», почему компания решила сделать то, что сделала. В этом материале мы исследуем следующие вопросы:

Читать далее

Задача коммивояжёра — ещё немного больше, ещё немного быстрее

Level of difficultyMedium
Reading time16 min
Views9.1K

И снова здравствуйте, уважаемые читатели Хабра. Мы продолжаем наше путешествие в мир алгоритмов поиска оптимального пути.

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

Читать далее

Свифт умирает или как получать валютные платежи в 2023 году

Reading time14 min
Views33K

Привет! Меня зовут Саша и я обычный программист, который пишет код, документацию иногда пишет статьи или посты, но уж точно и не любит и не касается всех этих банковских дел. В этом я придерживаюсь принципа “Настроил один раз — работает и не трогай”, но в 2022 все пошло не по плану.

Читать далее

Карательная стоматология или «Нижегородская резня»

Reading time6 min
Views53K
image

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

Poetry: from zero to hero

Level of difficultyEasy
Reading time13 min
Views61K

Привет, Хабр! Меня зовут Тимур, я тружусь ML-инженером в одной сибирской IT-компании.

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

В качестве бонусов - готовая GitLab CI джоба для сборки и публикации пакетов, а также шаблон Dockerfile для multi-stage сборки образов в проектах с использованием Poetry.

Добро пожаловать под кат!

Читать далее

Как устроено распределение памяти

Level of difficultyMedium
Reading time11 min
Views28K

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

В этом посте я познакомлю вас с основами распределения памяти (memory allocation). Распределители памяти существуют, потому что иметь доступную память недостаточно, необходимо ещё и эффективно её использовать. Мы наглядно изучим, как работают простые распределители. Мы рассмотрим некоторые из задач, которые им необходимо решать, а также некоторые из методик, которыми они их решают. Прочитав этот пост, вы узнаете всё, что необходимо для написания собственного распределителя.
Читать дальше →

Как коммитить в open source. Пошаговый гайд

Level of difficultyEasy
Reading time2 min
Views9.3K

Инструкция написана для сервиса github. Вам нужно войти в свой аккаунт или зарегистрироваться.

Все команды вводятся в терминале.

Шаг 1

Делаем fork (копию) нужного проекта. Переходим в свой аккаунт и заходим в только что созданный fork.

Читать далее

Стартап виза в Испанию

Level of difficultyEasy
Reading time10 min
Views11K

Недавно я получила одобрение своего бизнес плана от испанской компании Enisa (которая выдает официальное резюме вашему проекту) и вместе с ним ВНЖ Испании на 3 года.

Бизнес‑план и все документы я писала и подавала самостоятельно, по инструкции от ребят из чата «Стартап‑виза в Испании», и решила написать эту статью, собрав ее из рассказов и рекомендаций, которые почти каждый день пишу друзьям и знакомым, обращающихся с просьбой описать подробности.

История закона о стартапах

Этот закон существует с 2013 года, и много наших соотечественников получали по нему ВНЖ, но 21 декабря 2022 года в него внесли некоторые изменения.

Во‑первых функцию ревью и оценки бизнес‑плана передали в Enisa, во‑вторых увеличили срок выдаваемого ВНЖ(с 1 года до 3 лет). До апреля у Enisa не было новых регламентов, а когда они появились, началась некоторая чехарда (и продолжается до сих пор), но мой стартап был одобрен как раз во время этой пересменки.

С новым регламентом добавились еще изменения — теперь нужно показывать на счету фаундера совсем другие суммы (суммы выросли, но зато появилась возможность демонстрировать другие активы, не только деньги на счетах), сократятся сроки приема (через полгода после принятия регламентов, сейчас сроки еще плавают), и бизнес‑план теперь загружается не в свободной форме, а по форме Enisa, у них на сайте.

Читать далее

Внутреннее устройство DRBD: алгоритмы работы отказоустойчивого хранилища

Level of difficultyHard
Reading time13 min
Views9.7K

DRBD


Глубокое понимание внутреннего устройства DRBD позволяет более тонко настраивать работу системы и правильно планировать ресурсы. К счастью, у команды DRBD уже есть отличная документация, которая довольно подробно разбирает эту тему. Мы опирались на нее в своей работе, и решили перевести и выложить в открытом доступе 17-ю главу — как удобную шпаргалку по внутреннему устройству DRBD. Так что это не обычная статья, а перевод части официальной документации (исходная нумерация разделов сохранена).


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

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

Чему я научился после проведения тысячи собеседований: часть первая

Level of difficultyEasy
Reading time8 min
Views75K
Найм сотрудников – одна из самых важных задач, которую приходится выполнять менеджеру или предпринимателю. Ее исход решает, будет ли успешным ваш стартап, команда или проект.

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

Как мне удалось дойти до рубежа в тысячу собеседований? Сначала я был техническим руководителем в стартапе, и на мои плечи ложилось комплектование технических команд, а затем, когда стартап выкупили, мне пришлось формировать весьма объемный штат программистов для офиса в Европе. В среднем для заполнения одной должности нужно было проводить по шесть-семь собеседований, а нанял я суммарно более ста пятидесяти человек разного уровня, с разными знаниями, навыками и функциями.
Читать дальше →

Пишем на Python, как будто это Rust

Reading time19 min
Views11K

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

Читать далее

[Разбор резюме] Бэкендер на Go: почему «ключевые навыки» никому не нужны и как уместить весь опыт на одной страничке

Level of difficultyEasy
Reading time4 min
Views22K

Привет, Хабр! Мы много разговариваем про найм, и решили запустить новую рубрику — разбор резюме. В ней наши профессиональные HR, которые регулярно просматривают сотни резюме, будут смотреть на присланные CV специалистов и советовать, что в них можно улучшить. Делать мы это будем именно с точки зрения HR-специалистов: они расскажут, что именно их бы оттолкнуло, а что — привлекло. Начнем с резюме бэкендера и дальше пойдем по другим профессиям.

Читать далее

Архитектура и реактивное программирование

Level of difficultyMedium
Reading time9 min
Views33K
reactivity as a pattern for low models coupling

Что такое реактивное программирование? Не Rx. И даже не Excel. Это архитектурный паттерн, позволяющий абсолютно иначе писать код. В статье мы устаканим фундаментальные знания, утвердимся в том, что React.js всё же является реактивным, и подумаем о том, как и когда нужно, а когда не нужно применять паттерны реактивного программирования.
Читать дальше →

Propan — Python фреймворк для написания микросервисов с использованием брокеров сообщений

Level of difficultyEasy
Reading time4 min
Views12K

Так исторически сложилось, что последние 5 лет своей продуктовой разработки я работаю с микросервисами вокруг брокеров сообщений (преимущественно RabbitMQ и Kafka).

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

Приходя из мира HTTP фреймворков ты чувствуешь себя как будто на костылях - ни тебе hotreload'а, который есть практически в любом wsgi-asgi сервере, хочешь тестировать - поднимай контейнеры окружения или мокай зависимости (особенно удобно в CI, ага), не забудь о реконнектах, логировании, трассировке и тд и тп.

И вот, таская от сервиса к сервису ворох всех этих проблем (и код который эти проблемы решает), до меня дошла гениальная идея: оформить весь однотипный код, общий для всех сервисов в единый пакет!

Так появился на свет фреймворк Propan.

Читать далее

Асинхронный ETL-процесс на Python

Level of difficultyMedium
Reading time5 min
Views7K

Продолжаю цикл статей по разработке ETL-процессов на Python. На этот раз мы преобразуем синхронный etl-процесс из статьи Пишем ETL-процесс на Python в асинхронный.

Читать

Когда типизация делает тебе больно: как у нас появился статический анализатор

Reading time10 min
Views8.6K

Удобство процесса разработки напрямую влияет на скорость работы и на количество ошибок при написании кода. Что делать, если среда разработки почему-то отказывается использовать автодополнение во всю силу? Правильно, искать обходные пути и изобретать велосипеды.

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

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

Тебе не нужно классическое ООП в твоём бэкенд микросервисе

Reading time24 min
Views20K

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

Читать далее

Как «эффективный менеджмент» создаёт катастрофы: изучаем причины техногенных аварий. Часть 2

Level of difficultyEasy
Reading time26 min
Views28K

У «Эффективного Менеджмента» всего 2 всадника Апокалипсиса: жадность и глупость. Остальных просто оптимизировали за ненадобностью, достаточно и этих. К сожалению, достаточно для того, чтобы время от времени в разных концах света происходили техногенные катастрофы. Аварии, крушения, взрывы и прочие происшествия, которые можно было бы избежать, если бы руководство компаний уделяло внимание борьбе критическим рискам. Или хотя бы не способствовало их скорейшему приближению.

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

Продолжить погружение в бездну катастроф

Поднимаем Kubernetes с нуля

Level of difficultyMedium
Reading time10 min
Views69K

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

Читать далее

Kubernetes the hard way

Reading time36 min
Views34K

Всем привет. Меня зовут Добрый Кот Telegram.

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

Вошли и вышли, приключение на 20 минут)

От коллектива FR-Solutions и при поддержке @irbgeo Telegram : Продолжаем серию статей о K8S.

Начать приключение

Information

Rating
Does not participate
Registered
Activity