Профессионализм в IT
774 subscribers
20 photos
24 links
Заметки о профессионализме, управлении людьми и процессами, оценке, найме, самореализации, карьере, трендах, менторстве и обучении в IT.

Автор — @sortedmap
Download Telegram
Развитие профессионализма требует времени

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

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

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

Если вы программист, вы должны уметь писать программный код не только так, чтобы он работал, но и чтобы он был понятным и поддерживаемым. Вы должны уметь его грамотно проектировать, с заделом на будущее. Кроме того, вы должны уметь писать его «эффективно»: достаточно быстро и качественно. Такая эффективность достигается долгой практикой. Нельзя научиться писать идеальный код за три месяца.

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

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

Нет простых профессий. Чтобы стать профессионалом, нужно время. Часто бывает так, что люди бросают понравившееся им дело, столкнувшись с какими-либо трудностями. Но суть профессионального роста в том, чтобы научиться эти трудности преодолевать и, в конце концов, любые из них считать «задачами», а не «проблемами».
👍13🔥6
Работоспособность и поддерживаемость

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

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

Не менее важным фактором является поддерживаемость. Программный код должен не только работать, но и должен быть написан так, чтобы он был понятен другим программистам. И тем, с которыми автор этого кода работает в одной команде, и тем, кто придёт ему на смену, когда он уволится станет лидом.

Понятный код легко читается, в нём можно быстро найти нужное место, его легко дорабатывать и его не нужно комментировать. Поддерживаемость кода облегчает в итоге масштабируемость всей системы, как с точки зрения самой системы и её развития, так и с точки зрения расширения команды. И, если внезапно пригласят работать в Google, не придётся перед уходом ночами писать документацию и объяснять, как система работает.
👍11🔥6
Проектные и саппортные задачи

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

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

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

Разделение задач на саппортные и проектные должно быть максимально чётким: эти задачи нужно не только отдельно помечать, но и выполнять их лучше разным людям. В командах, которыми я руководил, лучше всего приживалась практика разделения задач по уровням специалистов: саппортные задачи лучше поручать junior-специалистам, а проектные — специалистам уровня middle. Почему так? Разберём по пунктам.

1. Начинающих специалистов важно контролировать. Саппортные задачи, как правило, маленькие, и их легко проверять — и тестировщикам, и тем, кто делает код-ревью. И исправлять косяки тоже, как правило, очень легко.

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

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

4. При выполнении крупных задач часто требуется некоторое проектирование: понять, какие классы и методы должны быть в создаваемом коде, продумать логику его работы. Это важно делать грамотно, с учётом архитектуры существующего проекта, а также поддерживаемо — чтобы то, что будет создано, было понятно другим специалистам в будущем. С такими задачи начинающие специалисты справляются с трудом, и их лучше поручать специалистам уровня middle.
👍11🔥6
Спрос на IT-специалистов в России

Вот уже 10 лет каждый квартал мы смотрим на количество вакансий и резюме IT-специалистов по данным портала HeadHunter. На картинке вы видите свежую статистику с данными на 31 декабря прошедшего года.

Что видно на этом графике? На нём видно несколько важных моментов:

📍 В среднем, "нормальной" является ситуация, при которой спрос на IT-специалистов превышает предложение примерно в 2 раза. Такая тенденция, кстати, наблюдалась и предыдущие десятилетия.

📍 Весной 2020-го года чётко виден резкий спад количества вакансий и резюме с последующим таким же резким восстановлением. Это пандемийный локдаун, в который многие компании приостанавливали подбор, а многие специалисты переставали искать работу.

📍 Резкий рост рынка после пандемии. Спрос вырос более, чем в 2 раза: в начале декабря 2021 года мы наблюдали почти 85 000 открытых вакансий. При этом количество специалистов и их резюме росло также плавно, и рынок столкнулся с сильным дефицитом кадров.

📍 Резкий спад и затем резкое восстановление спроса на IT-специалистов при плавном росте вакансий с марта 2022 по март 2023 года.

Обратите внимание, что к настоящему моменту мы снова имеем соотношение спроса и предложения два к одному.

Интересно, что ситуация в мире вплоть до весны 2022 года была аналогичная, но в 2023 году тренды стали совсем другими. Но об этом в следующих постах
👍18🔥54