Pull to refresh
150
-6.5
Александр Савин @aimfirst

Руководитель проекта + ведущий аналитик

Send message

Десять основных упражнений для предотвращения болей в спине у программистов

Reading time 5 min
Views 7.7K
Привет всем коллегам-программистам! Давайте углубимся в тему, которая имеет не меньшую важность, чем дебаггинг того дурацкого фрагмента кода, с которым вы столько воюете – тему вашего здоровья, а если конкретнее – предотвращения болей в спине. Речь не о затекающих время от времени мышцах, а о глубокой, настойчивой, ноющей боли, которая является последствием написания кода в режиме марафона. Под катом вы найдете десять упражнений, которые станут для вас палочкой-выручалочкой и сделают вашу спину такой же крепкой, как ваш код.
Читать дальше →
Total votes 26: ↑22.5 and ↓3.5 +19
Comments 12

Обзор платежных агрегаторов для приема платежей

Reading time 24 min
Views 336K
image Если вы владелец интернет-магазина и хотите, чтобы покупатель мог оплатить товары удобным ему способом, у вас есть два пути: подключать и настраивать оплату для каждой платежной системы отдельно — мучиться с интеграцией, подписанием договоров… либо сделать все быстро и без лишней волокиты — воспользоваться услугами компании, которая является платежным агрегатором. При выборе последнего варианта вам понадобится подписать всего один договор, а ваш покупатель сможет выбрать удобный ему способ оплаты из десятков доступных. Это и оффлайн способы, и электронные кошельки и, конечно же, оплата банковской картой. Платежных агрегаторов множество.

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

Чем же платежные агрегаторы отличаются друг от друга, и на что стоит обратить внимание?


Каждую компанию было решено рассмотреть по десяти параметрам. Ниже приведено детальное описание параметра и почему на это стоит обратить внимание.
Читать дальше →
Total votes 42: ↑38 and ↓4 +34
Comments 50

Делаем код-ревью правильно

Level of difficulty Medium
Reading time 12 min
Views 19K

В начале своей карьеры я как-то работал над одним заказом, создавая платформу сентимент-анализа для социальных сетей. В то время Twitter ещё был Twitter’ом. Наша команда состояла из семи человек, среди которых я был джуниором. Мы были молоды и полны энтузиазма. Наш девиз можно было описать как: «Мы гибкие, быстрые и всё ломаем!». Да, мы действительно гордились своей скоростью. Код-ревью? Я вас умоляю. Мы считали эту практику бюрократическим пережитком корпоративного мира.

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

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

Итак, в двух словах: если вы не проводите код-ревью, или делаете их «для галочки», то обрекаете себя на боль, пусть не сразу, но в конечном итоге однозначно. Это можно сравнить с возведением дома на фундаменте из песка. Какое-то время он, может, и простоит, но явно недолго. А в мире стартапов второго шанса у вас может уже не быть.
Читать дальше →
Total votes 73: ↑71 and ↓2 +69
Comments 25

Современные команды и фичи Git, которыми стоит пользоваться

Level of difficulty Easy
Reading time 5 min
Views 28K

Мы, разработчики ПО, пользуемся git каждый день, однако большинство из нас применяет только самые основные команды, например, addcommitpush и pull, как будто на дворе по-прежнему 2005 год.

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

Читать далее
Total votes 75: ↑73 and ↓2 +71
Comments 29

Всё, везде и сразу про управление командами

Level of difficulty Easy
Reading time 15 min
Views 5.1K

Я тимлид в IT команде и я люблю читать. 5 лет назад я прочитал Фредерика Лалу «Открывая организации будущего». Потом Патти МакКорд «Сильнейшие. Бизнес по правилам Netflix». Потом еще 5 книг около менеджмента. И каждая книга меняла меня. Но с каждой новой я все более критично относился к предыдущим. Я всегда делал заметки с главными идеями книг и пробовал их в своих командах. В итоге в голове смешались мысли из всех источников. Горе от ума, если можно так сказать. Ничего не знать или знать много, но не структурировано - это практически одно и то же для меня.

Месяц назад я выписал подходы из всех источников себе на whiteboard. И пропустил их все через призму своего восприятия. Выделил общее, разное и тут готов вам рассказать про своё приключение. Считай, мета-анализ главных посылов из книг про управление командами.

Читать далее
Total votes 15: ↑12 and ↓3 +9
Comments 1

Четыре метрики, изменившие мой проект

Reading time 9 min
Views 17K

Привет, Хабр! Я Федор Щудло, team lead и fullstack-разработчик. Всего я в разработке 15 лет, из них 11 в роли team lead.

Три года назад я сменил работу и занялся проектом, состояние которого можно описать кратко: ему 25 лет.

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

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

Как результат, разработка шла с большими накладными расходами (все делали долго), и с высокими рисками (выкатили и разломали прод). А команда при этом работала на износ.

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

Читать далее
Total votes 46: ↑43 and ↓3 +40
Comments 14

Makefile для самых маленьких

Reading time 4 min
Views 728K
Не очень строгий перевод материала mrbook.org/tutorials/make Мне в свое время очень не хватило подобной методички для понимания базовых вещей о make. Думаю, будет хоть кому-нибудь интересно. Хотя эта технология и отмирает, но все равно используется в очень многих проектах. Кармы на хаб «Переводы» не хватило, как только появится возможность — добавлю и туда. Добавил в Переводы. Если есть ошибки в оформлении, то прошу указать на них. Буду исправлять.

Статья будет интересная прежде всего изучающим программирование на C/C++ в UNIX-подобных системах от самых корней, без использования IDE.

Компилировать проект ручками — занятие весьма утомительное, особенно когда исходных файлов становится больше одного, и для каждого из них надо каждый раз набивать команды компиляции и линковки. Но не все так плохо. Сейчас мы будем учиться создавать и использовать Мейкфайлы. Makefile — это набор инструкций для программы make, которая помогает собирать программный проект буквально в одно касание.
Читать дальше →
Total votes 89: ↑77 and ↓12 +65
Comments 33

Следует ли проверять указатель на NULL перед вызовом функции free?

Level of difficulty Medium
Reading time 8 min
Views 12K

Проверка указателя перед вызовом функции free


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

Читать дальше →
Total votes 86: ↑85 and ↓1 +84
Comments 35

Нейропластичность: как развивать свой мозг после 25 лет

Level of difficulty Easy
Reading time 8 min
Views 29K

Многие верят, что с возрастом мы перестаем развиваться, потому что наш мозг заканчивает прогрессировать примерно в 25 лет. Этот миф в обществе существует уже очень долго. Однако в современном мире всё меняется стремительно: профессии устаревают и, чтобы оставаться востребованными, нам нужно постоянно обучаться.

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

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

Читать далее
Total votes 107: ↑101 and ↓6 +95
Comments 23

Все оценки сроков разработки ПО — ложь

Level of difficulty Easy
Reading time 15 min
Views 26K

▍ Разработка ПО — это исследование


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

В разработке ПО мы не тратим время на задачи, решения которых знаем. Если решения уже существуют, мы добавляем в качестве зависимости пакет или библиотеку с этим решением, или копируем старый код, или делаем что-то ещё, на что требуются секунды, а затем можем переходить к следующей задаче. Почти всё время разработки тратится на новые задачи, ответов на которые мы не знаем. Часто они новы ужасно скучным образом, например, «как нам сохранять эту модель данных с этими конкретными полями в эту конкретную базу данных?» Но именно из-за них эта ситуация отличается от всех остальных (или, по крайней мере, от тех, которые мы смогли найти) и именно это занимает всё наше время.
Читать дальше →
Total votes 80: ↑75 and ↓5 +70
Comments 67

Как систематизировать работу с входящими документами в компании с помощью OCR-инструментов. Часть 1

Level of difficulty Medium
Reading time 10 min
Views 3.5K

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

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

Читать далее
Total votes 22: ↑22 and ↓0 +22
Comments 5

Мои советы после 20 лет в программировании

Level of difficulty Easy
Reading time 44 min
Views 125K

Сегодня ровно 20 лет, как я начал программировать профессионально. За эти годы я:

Получил одобрение на петицию по грин‑карте за выдающиеся способности в науке.
Стал Google Developer Expert.
Стал IEEE Senior Member.
Был операционным директором в компании со 100 сотрудниками.
Написал код, который скачали 135 миллионов раз.
Выступал перед аудиторией в 2000 человек, дважды.
Стал самым честным человеком в России по версии НТВ.

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

Читать далее
Total votes 290: ↑180 and ↓110 +70
Comments 277

Как мы реализовали автоматизацию «как в Jira» в российском продукте

Level of difficulty Medium
Reading time 7 min
Views 4K

Всем привет, меня зовут Алексей - я руководитель отдела интеграции EvaTeam. Это статья о том, как реализована настройка автоматизаций в EvaProject - российском аналоге Jira. В ней рассказывается о том, с чем пришлось столкнуться при переезде с Jira, и как мы реализовали функционал в нашей системе.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 9

Bash-скрипты, часть 4: ввод и вывод

Reading time 9 min
Views 378K
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

В прошлый раз, в третьей части этой серии материалов по bash-скриптам, мы говорили о параметрах командной строки и ключах. Наша сегодняшняя тема — ввод, вывод, и всё, что с этим связано.

image
Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Comments 16

Построение приложений командной строки (CLI)

Reading time 30 min
Views 88K
Данная статья написана под влиянием книги Дэвида Коупленда «Build Awesome Command-Line Application in Ruby» (купить, скачать и изучить дополнительные материалы). Большая её часть будет посвящена проектированию дизайна CLI-приложений вне зависимости от используемого языка. По ходу будут обсуждаться и вещи специфичные для ruby, но не страшно, если вы его не знаете, кода будет не слишком много. Можно считать эту статью довольно подробным обзором вышеупомянутой книги с вкраплениями собственного опыта. Книжку рекомендую!

Для начала я задам вопрос. Если посмотреть на сообщества IT-шников, можно заметить, что несмотря на обилие программ с красивым графическим интерфейсом, приложения командной строки остаются весьма популярны. Почему?
Ответов несколько. Во-первых, это красиво удобно — если вы можете описать задачу командой в командной строке, то её гораздо проще автоматизировать, чем если вам приходится анализировать передвижения мыши и клики на разные пункты меню. Во-вторых, это даёт возможность комбинировать программы невероятным числом способов, чего сложно добиться с помощью графических интерфейсов.
В значительной степени философия Unix базируется на том принципе, что множество маленьких утилит, каждая из которых умеет делать свою конкретную задачу — это лучше, чем одна многофункциональная программа-универсал. И это одна из причин успеха Unix-систем в мире IT-шников.
Наверное, каждый понимает, что обычного пользователя вряд ли удастся сманить от GUI к CLI, давайте сосредоточимся на нас, «компьютерщиках» и конкретизируем наши пожелания к CLI-приложениям.
Читать дальше →
Total votes 78: ↑72 and ↓6 +66
Comments 31

«Школа 21» в 2022 году: результаты работы и планы на будущее

Reading time 12 min
Views 13K

Привет, Хабр! Сегодня продолжаем рассказывать о нашем образовательном проекте, который называется «Школа 21». Ему в 2023 году исполняется уже пять лет. Школа позволяет кандидатам старше 18 лет, которые успешно прошли отборочные этапы, бесплатно получить развитие навыков, востребованных в сфере IT. О том, что такое «Школа 21» и в чём особенность её методологии, мы уже рассказывали. А сейчас поговорим о том, каких результатов удалось достичь и что ждёт нашу школу программирования в будущем.

Расскажите больше, пожалуйста!
Total votes 12: ↑7 and ↓5 +2
Comments 1

Будущее программирования: языки, зарплата и перспективы в 2024 году

Level of difficulty Easy
Reading time 15 min
Views 66K

Почему программисты не боятся искусственного интеллекта? Потому что им достаточно сказать заказчику: «Объясните компьютеру, что именно вы хотите». Так шутили еще недавно, но теперь такие шутки становятся не такими веселыми, как раньше. Искусственный интеллект, воплощенный в ChatGPT, продолжает совершенствоваться, в то время как IT-сообщество делится на скептиков и энтузиастов. Одни верят, что программистам не нужно меняться, другие думают, что новые языки и подходы в разработке окончательно похоронят ручной кодинг. На недавней дискуссии Artezio мы собрали влиятельных разработчиков и попросили предсказать, как будет меняться программирование в будущем, какие языки обещают быть на волне успеха и как оставаться в тренде. 

Читать далее
Total votes 94: ↑86 and ↓8 +78
Comments 39

Scrum ужасен

Level of difficulty Easy
Reading time 8 min
Views 44K

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

Давайте начнём с самого начала.

Что такое Scrum?


Scrum — это Agile-система управления проектами, «помогающая людям и командам инкрементно и совместно приносить пользу» — цитата со Scrum.org.

Что касается Agile, то если вы никогда не читали его манифеста (2001 год), то определю его как компактный список рекомендаций, которым нужно следовать при разработке ПО.

Agile не является: Библией разработки ПО, догматическим набором строгих правил, тикетами Jira или коучами Agile, суетящимися в вашей компании.

Дополнение: определения несовершенны по определению (а теперь прочитайте это ещё раз).

Я с открытой душой приму любую критику о своих определениях Scrum, Agile и любых других терминов, и лишь попрошу прочитать пост целиком, прежде чем писать разгневанные комментарии!
Читать дальше →
Total votes 79: ↑69 and ↓10 +59
Comments 134

Почему вам стоит отказаться от использования timestamp в PostgreSQL

Reading time 10 min
Views 61K

Не секрет, что работа с часовыми поясами — боль, и многие разработчики объяснимо стараются ее избегать. Тем более что в каждом языке программирования / СУБД работа с часовыми поясами реализована по-разному.

Среди тех, кто работает с PostgreSQL, есть очень распространенное заблуждение про типы данных timestamp (который также именуется timestamp without time zone) и timestamptz (или timestamp with time zone). Вкратце его можно сформулировать так:

Мне не нужен тип timestamp with time zone, т.к. у меня все находится в одном часовом поясе — и сервер, и клиенты.

В статье я постараюсь объяснить, почему даже в таком довольно простом сценарии можно запросто напороться на проблемы. А в более сложных (которые на самом деле чаще встречаются на практике, чем может показаться) баги при использовании timestamp практически гарантированы.

Читать далее
Total votes 96: ↑93 and ↓3 +90
Comments 136

Задача повышенной сложности: AV для ситуационных центров

Reading time 11 min
Views 2.5K

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

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

У «ЛАНИТ-Интеграции» большой опыт по проектированию, строительству, оснащению СЦ, который мы с коллегами бережно копим, ну и, конечно же, применяем. Поэтому хочу поделиться с вами тремя задачами, которые необходимо решить для создания и поддержания современного ситуационного центра. 

Читать далее
Total votes 60: ↑57 and ↓3 +54
Comments 4

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity

Specialization

Project Manager, Systems Analyst
Lead
Project management
Development management
Organization of business processes
Negotiation
Development of tech specifications
Agile
Jira
Project planning
Building a team
Budgeting projects