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

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

Send message

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

Level of difficulty Easy
Reading time 5 min
Views 26K

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

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

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

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

Level of difficulty Easy
Reading time 15 min
Views 4.9K

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

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

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

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

Reading time 9 min
Views 16K

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

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

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

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

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

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

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

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

Reading time 4 min
Views 724K
Не очень строгий перевод материала 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 28K

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

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

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

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

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

Level of difficulty Easy
Reading time 15 min
Views 25K

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


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

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

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

Level of difficulty Medium
Reading time 10 min
Views 3.4K

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

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

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

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

Level of difficulty Easy
Reading time 44 min
Views 124K

Сегодня ровно 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 3.9K

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

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

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

Reading time 9 min
Views 376K
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 87K
Данная статья написана под влиянием книги Дэвида Коупленда «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 65K

Почему программисты не боятся искусственного интеллекта? Потому что им достаточно сказать заказчику: «Объясните компьютеру, что именно вы хотите». Так шутили еще недавно, но теперь такие шутки становятся не такими веселыми, как раньше. Искусственный интеллект, воплощенный в 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 60K

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

Среди тех, кто работает с 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.4K

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

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

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

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

«Кто на ком стоял?» Про страдательный залог в технической документации

Reading time 5 min
Views 15K

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

Читать далее
Total votes 104: ↑98 and ↓6 +92
Comments 52

Как я делал первую маркировку рекламы в своём Телеграм-канале (пошаговая инструкция)

Reading time 7 min
Views 8.6K

У меня небольшой авторский канал на 3 000 подписчиков. Рекламу в нём я продаю как самозанятое физическое лицо (эту роль взяла на себя моя жена). Поэтому рассказ будет о маркировке текстового рекламного поста, где заказчик и исполнитель — физические лица. С помощью кабинета ОРД Вконтакте, который пока что бесплатен.

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

Как я статистику git парсил

Level of difficulty Easy
Reading time 9 min
Views 26K

Работаю я в бюрократизированной конторе с плохими процессами. Текучка тут достаточно большая. Люди приходят и уходят. Менеджмент на уровне дна. В какой-то момент в команду докинули нового разработчика (с неясными целями и задачами). Ну вроде парень умный, вроде что-то делает, вроде не просто так.

Спустя четыре месяца (испытательный закончился) у многих закрались подозрения, что на самом деле парень ничего не делает. Но как доказать это со стороны объективно? Решили посмотреть историю коммитов. Оказалось, он почти не коммитил (последний месяц вообще перестал), а на совещаниях ссал в уши ездил по ушам. Парень продолжил работать на прошлой работе и был преподом на курсах. Такой вот overemployed, с двумя зарплатами по ставке синьора.

Ему предложили перевестись в другой отдел. Менеджеру все сошло с рук. Часть разрабов сидела с лицами «‎а что так можно было?»‎. А я понял, что нельзя так просто взять и посмотреть статистику коммитов.

Велосипед через 3, 2, 1...
Total votes 98: ↑92 and ↓6 +86
Comments 50

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