Search
Write a publication
Pull to refresh
608
4
Андрей Карпов @Andrey2008

Директор по развитию бизнеса

Send message

Burn Out IT-специалистов: 4 истории от управленца, разработчика, продакта и админа. И рецепт от Southbridge

Reading time12 min
Views25K

Работа не приносит удовольствия. Рваный сон не приносит облегчения. Цвета поблекли — всё кажется серым и надоевшим. Ничего не получается, как будто тело стало чужой, незнакомой оболочкой. Код не пишется. Новые задачи воспринимаются со страхом и неуверенностью. С коллегами общаешься через силу — хочется закрыться, спрятаться, чтобы никто не трогал. Даже в почте и мессенджерах отвечать тяжело. Кажется, тебе уже никогда не стать прежним. Видишь успехи других — и понимаешь, насколько глупым и неумелым выглядишь со стороны. Срываешься на родных и друзьях — а потом ненавидишь себя за это. Крутишься белкой в мясорубке день за днём — и не видишь ни результата, ни выхода.


Знакомьтесь, если ещё не встречались. Это синдром профессионального выгорания.


В IT-сфере около 50% специалистов испытали на себе профессиональное выгорание. Этот синдром опасен самому сотруднику, и проекту, над которым он работает, и всей компании. Более 60% выгоревших сотрудников увольняются. А затраты на найм новых, обучение и онбординг чугунной гирей ложатся на бюджет. И время — оно вообще бесценно.


Раньше burn out не воспринимали всерьёз — считалось, что это способ особо хитроумных сотрудников поменьше делать и побольше отдыхать. Постепенно в наших пампасах культура психологический гигиены в бизнесе доросла хотя бы до признания, что профессиональное выгорание и депрессия — это реальные проблемы.



На митапе «День Техдира» Даниил Подольский, руководитель разработки MTGroup, сделал доклад по профессиональному выгоранию. Мне его выступление было интересно тем, что это взгляд управленца на проблему, а не просто рассказ рядового сотрудника о своём личном примере выгорания.


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

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Reading time20 min
Views60K
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.


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

Не работайте в плохих проектах

Reading time13 min
Views100K

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


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

Open source не приносит денег, потому что не создан для этого

Reading time4 min
Views17K
Лучший способ что-то сделать — хотя бы попробовать

Все знают, что на open source невозможно заработать, верно?

Я сейчас размышляю на эту тему, потому что Mozilla хочет в ближайшие несколько лет диверсифицировать доходы, но у нас одно ограничение — все разработки обязательно публикуются в open source. Это десятки (сотни?) успешных проектов с открытым исходным кодом. Многие пытались хоть что-то заработать, некоторые очень пытались. Результаты так себе.

Я и сам прямо сейчас пытаюсь запустить в Mozilla коммерческую инициативу (если написание планов и отправку их в эфир можно считать «запуском»), и мне часто задают вопрос: можно ли продать что-то с открытым исходным кодом?
Читать дальше →

Пробуем контрактное программирование С++20 уже сейчас

Reading time14 min
Views33K


В С++20 появилось контрактное программирование. На текущий момент ни один компилятор ещё не реализовал поддержку этой возможности.


Но есть способ уже сейчас попробовать использовать контракты из C++20, так как это описано в стандарте.

Заинтересовавшихся прошу под кат

Внедряйте статический анализ в процесс, а не ищите с его помощью баги

Reading time10 min
Views22K
Написать эту статью меня сподвигло большое количество материалов о статическом анализе, всё чаще попадающихся на глаза. Во-первых, это блог PVS-studio, который активно продвигает себя на Хабре при помощи обзоров ошибок, найденных их инструментом в проектах с открытым кодом. Недавно PVS-studio реализовали поддержку Java, и, конечно, разработчики IntelliJ IDEA, чей встроенный анализатор является на сегодня, наверное, самым продвинутым для Java, не могли остаться в стороне.

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

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


Храповик (источник: википедия).
Читать дальше →

Машинное обучение для поиска ошибок в коде: как я стажировался в JetBrains Research

Reading time7 min
Views6.1K
Недавно мы рассказывали о том, как попасть на стажировку в Google. Помимо Google наши студенты пробуют свои силы в JetBrains, Яндекс, Acronis и других компаниях.

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


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

Заметки фитохимика. Зеленый банан, или Не забудь покормить микробиоту

Reading time20 min
Views103K

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


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



Ну а за ответом — традиционно, под кат.

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

Реализация оператора in в С++

Reading time5 min
Views31K
Привет! Сегодня я надеюсь показать вам немного магии. Моим хобби является придумывание всяких казалось бы невозможных штук на С++, что помогает мне в изучении всевозможных тонкостей языка ну или просто развлечься. Оператор in есть в нескольких языках, например Python, JS. Но в С++ его не завезли, но иногда хочется чтобы он был, так почему бы его не реализовать.

	std::unordered_map<std::string, std::string> some_map = 
	{
		{ "black", "white" },
		{ "cat", "dog" },
		{ "day", "night" }
	};

	if (auto res = "cat" in some_map)
	{
		res->second = "fish";
	}

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

Доклады с весенней конференции С++ Russia 2018

Reading time16 min
Views14K

С 19 по 21 апреля в Санкт-Петербурге прошла конференция С++ Russia 2018. Из года в год организация и проведение становится на уровень выше, что не может не радовать. Спасибо бессменному организатору С++ Russia Сергею Платонову за его вклад в развитие этого направления.
Читать дальше →

Как подготовиться к деловой поездке? Советы от биздевов ISPsystem

Reading time10 min
Views7.4K


Мы давно ездим на конференции и вот что заметили: многие люди приезжают туда и — сюрприз! — ничего не делают. Назначат пару встреч, а остальное время слоняются без дела, собирают раздатку со стендов или сидят за ноутбуком и слушают все подряд: даже те доклады и выступления, где им явно что-то пытаются продать. О каких продажах и успешных переговорах речь? Трата времени, трата денег компании, парад упущенных возможностей. Мы тоже в свое время много ошибались, но исправились. Поэтому хотим рассказать, что сейчас делаем иначе. Если интересно, добро пожаловать под кат!
Читать дальше →

Психология читабельности кода

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

Каждый программист старается писать хороший код. Читабельность — один из главных признаков такого кода. О ней написано достаточно много книг, но всё же в теме есть пробелы. Например, те самые книги сфокусированы больше на советах КАК написать читабельный код, а не на причинах того, почему один код является хорошо читабельным, а другой — нет. Книга говорит нам «используйте подходящие названия переменных» — но что делает одно название более подходящим, чем другое? Работает ли это для всех примеров подобного кода? Работает ли это для всех программистов, которым попадётся на глаза этот код? Как раз о последнем я и хотел бы поговорить чуть детальнее. Давайте погрузимся немного в человеческую психику. Наш мозг — главный наш инструмент, хорошо бы изучить специфику его работы.
Читать дальше →

Конференция HOPE X. «Взлом лифта: от подвала до пентхауза». Часть 2. «Системы безопасности»

Reading time18 min
Views11K
Начало здесь: Конференция HOPE X. «Взлом лифта: от подвала до пентхауза». Часть 1. «Лифтовое оборудованиe»

Дивиант Оллам: можно сказать, что в многих отношениях лифтовая индустрия застряла в прошлом.



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

Дивиант Оллам: то есть он считал, что трубчатые замки являются новейшей и величайшей разработкой в сфере безопасности.

Что каждый программист на C должен знать об Undefined Behavior. Часть 3/3

Reading time9 min
Views12K
Часть 1
Часть 2
Часть 3

В первой части цикла мы рассмотрели неопределённое поведение в С и показали некоторые случаи, которые позволяют сделать С более быстрым, чем «безопасные» языки. В части 2 мы рассмотрели некоторые неожиданные баги, которые могут противоречить представлениям многих программистов об языке С. В этой части, мы рассмотрим проблемы, которые компилятор Clang решает, чтобы достичь высокого быстродействия, и устранить некоторые сюрпризы.
image
Читать дальше →

Что каждый программист на C должен знать об Undefined Behavior. Часть 2/3

Reading time8 min
Views15K
Часть 1
Часть 2
Часть 3

В первой части нашего цикла мы обсудили, что такое неопределённое поведение, и как оно позволяет компиляторам C и C++ генерировать более высокопроизводительные приложения, чем «безопасные» языки. В этом посте мы обсудим, чем на самом деле является «небезопасный» C, объяснив некоторые совершенно неожиданные эффекты, вызываемые неопределённым поведением. В третьей части, мы обсудим, как «дружественные» компиляторы могут смягчить некоторые из таких эффектов, даже если они не обязаны это делать.

Мне нравится называть это «Почему неопределённое поведение часто пугает и ужасает программистов на C».

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

Что каждый программист на C должен знать об Undefined Behavior. Часть 1/3

Reading time7 min
Views32K
Часть 1
Часть 2
Часть 3

Люди иногда спрашивают, почему код, скомпиливанный в LLVM иногда генерирует сигналы SIGTRAP, когда оптимизация была включена. Покопавшись, они обнаруживают, что Clang сгенерировал инструкцию «ud2» (подразумевается код X86) — то же, что генерируется __builtin_trap(). В этой статье рассматривается несколько вопросов, касающихся неопределённого поведения кода на C и того, как LLVM его обрабатывает.

image

В этой статье (первой из трёх) мы попытаемся объяснить некоторые из этих вопросов, чтобы вы могли лучше понять связанные с ними компромиссы и сложности, и возможно, изучить немного больше тёмные стороны С. Мы выясним, что C не является «высокоуровневым ассемблером», как многие опытные программисты на C (особенно те, кто сфокусирован на низком уровне) предпочитают думать, и что C++ и Objective-C напрямую унаследовали множество таких проблем.
Читать дальше →

История взлома одного WordPress плагина — или о том, как вы допускаете уязвимости в своих проектах

Reading time7 min
Views16K
Давным давно, когда я был молод и писал сайты на PHP, я написал SEO плагин для маскировки внешних ссылок для Wordpress. Поскольку с воображением у меня плохо, то назвал его WP-NoExternalLinks. За всю историю у него было 360.000 установок и, кажется, до 50.000 активных установок.

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

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

Бестиарий С++. Справочник по загадочным персонажам

Reading time9 min
Views33K


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

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

Начальник, что мне делать для того, чтобы получать больше денег

Reading time3 min
Views38K
Как часто вы слышали от своих подчиненных такой вопрос? Почему именно этот вопрос о повышении верный? Давайте разбираться вместе.

Представим себе программиста Ивана, который работает в компании какое-то время. По разным причинам так могло получиться, что у него уже давно не было повышения. А он его очень ждет. Ходить к менеджеру и просить повышения Ивану не хочется, не такой он человек, чтобы заводить разговор о повышении и выпрашивать, доказывать, что достоин повышения.
Читать дальше →

Четыре типажа программистов

Reading time17 min
Views217K

Привет.


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

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

Information

Rating
1,858-th
Works in
Date of birth
Registered
Activity

Specialization

Specialist
C++
C
Software development