Еще когда я только начинал работать программистом, а это было более 30-ти лет назад, был страшный дефицит программистов.
Можно было легко выбирать место работы, потому что программисты нужны были везде.
Казалось бы, через столько лет программистов должны подготовить достаточно. Но нет.
Сейчас на рынка та же самая дичайшая нехватка программистов. Почему?
Парадокс IT-выпускников
Когда я работал доцентом ВУЗа и преподавал программирование, то я знал одну простую вещь. Есть группа студентов. Обычно 20 человек.
В конце семестра на экзаменах по программированию большинство получат четверки и пятерки. То есть формально они курс освоили.
Но устроятся на работу программистами из них только два-три. На отличные должности. Один мой студент за пару лет дошел до оклада 100 000 руб. Я его спросил:
— Как это тебе удалось?
Он ответил:
— Кадров нет. Вакансии висят, но никого нет.
При этом еще двое-трое студентов из группы пойдут на смежные специальности: тестировщики, сисадмины. А большинство пойдет работать совсем не по специальности. Обычно это: курьеры, охранники, мерчандайзеры.
Более того, научиться программировать реально за год. Когда я преподавал программирование на первом курсе института, то не раз видел ситуацию: приходят вчерашние школьники, которые вообще не знают программирования, а уже после первого курса идут и подрабатывают программистами.
То есть порог вхождения в профессию очень низкий. Но это только вхождение, а вот остаться в этой сфере могут далеко немногие. Часто придут, поработают пару месяцев и меняют профессию.
И это на фоне дикой нехватки программистов. Как можно объяснить это явление?
Этот парадокс объясняется просто. Профессия программиста имеет одну особенность, из-за которой далеко не каждый человек может стать программистом.
Строгая приемка
Это связано с тем, что компьютер предъявляет чрезвычайно строгие требования к программе. Программа должна быть на 100% верной.
То есть любая орфографическая ошибка уже делает программу неработоспособной. Такой строгости нет ни в одной профессии. Если писатель сделает сотню ошибок в романе, то роман прекрасно будет продаваться. Водитель автобуса может не доехать на метр до остановки. Самолет может задержаться на пару минут.
Во всех профессиях есть некоторый люфт. Не обязательно сделать все идеально. Достаточно сделать приемлемо.
И только у программиста требование: все или ничего.
Отсюда — важное следствие. Львиную долю работы программиста составляет не написание программы, а ее отладка. Отладка программы — это поиск и устранение ошибок.
И этот процесс совсем не так прост с психологической точки зрения.
Вечная отладка
Любой новичок в программировании готов исправить пару ошибок в программе. Но он совершенно психологически не готов к грустной шутке программистов:
Каждая последняя обнаруженная ошибка в программе является предпоследней.
То есть работа программистов заключается в том, чтобы еще и еще раз искать ошибку.
Обычного человека это просто бесит. Поэтому большинство людей не смогут работать программистами. Они начинают злиться и нервничать через некоторое время отладки.
Особенно когда наступает срок сдачи проекта, а никак не получается двинуться дальше.
Именно в этом и состоит главный барьер программиста — умение действовать в условиях постоянной отладки на фоне катастрофической нехватки времени.
Этот барьер такой высокий, что и создает постоянный дефицит программистов. Обычный человек с улицы этот барьер точно взять не может. Хотя он и знает, что программист — это профессия редкая и хорошо оплачиваемая.
Но ничего с собой поделать не может. Отладка его выводит из себя.
Например, покупатели моего курса «Азбука программирования на языке Си«, в котором я изложил годовой институтский курс по изучению программирования, постоянно присылают мне письма с вопросами типа:
- Компилятор выдает ошибку.
- Программа не работает.
- На экране ничего не выводится.
При этом в тех скриншотах, которые они присылают, ошибки примерно такого рода:
При этом компилятор ясно пишет, в чем ошибка:
Более того, к курсу приложены листинги всех программ. То есть теоретически найти и устранить ошибку может даже новичок. Для этого всего лишь сравнить текст своей программы с прилагаемым образцом.
Но нет. Сама мысль о том, чтобы заняться отладкой и искать ошибки в голову не приходит. Именно так обычно и реагирует обычный человек. Что же говорить о ситуации, когда ошибки идут одна за другой. Тут любой станет невротиком.
Как же удается пройти этот барьер профессиональным программистам?
Программист-сыщик
У профессиональных программистов совершенно другое отношение к ошибкам. Для них — это скорее интрига.
Они похожи на Шерлока Холмса, который расследовал преступления, потому что это доставляло ему удовольствие.
Сама отладка похожа на работу сыщика. Сначала нужно найти улики, то есть посмотреть внимательно на сообщения компилятора. Потом запустить отладчик и шаг за шагом восстановить всю картину.
То есть для тех программистов, что преодолели барьер, отладка — это увлекательная деятельность. Она очень похожа на то, как люди разгадывают шарады и ребусы.
Сама профессия программиста привлекательна именно тем, что с ней не заскучаешь. Загадки каждый день.
Конечно же, для обычного человека такой подход неприемлем. Люди и так не хотят думать, а тут нужно напрягаться каждый день.
Поэтому дефицит программистов будет всегда.
Константин, спасибо большое за интересную статью.
Хотелось бы прочитать больше Ваших статей о психологии программиста.
Есть еще серьезная проблема — страх перед новым, перед новыми программами. Было бы интересно услышать Ваше мнение об этом.
Полностью поддерживаю. Сталкиваюсь с аналогичной проблемой
В молодости я работал программистом и мне кажется не плохим. До сих пор я убежден в том, что ПРОГРАММИРОВАНИЕ НЕ ПРОФЕССИЯ, а ИСКУССТВО. Т.е. не каждый может быть поэтом, художником, композитором и т.д. Таким же образом не каждый желающий может стать программистом
Фазил !
Сама наша жизнь- ИСКУССТВО .
Так давай становиться Искусником в своей жизни .
Вот такими высказываниями вы демотивируете людей, которые захотели стать программистами. Любому искусству можно научиться!
Всему, что создал и придумал человек, можно научиться. Вопрос лишь во времени.
Спасибо!За полезную информацию.
Всегда когда возникают проблемы с программами хочется психануть. Но всегда вспоминаю, что это всего лишь машина.Остается только найти неисправность. Когда находишь, действительно становится приятно.
Константин, программирование в моей жизни в своё время занимало большое место. Я работал в организации, выпускающей программные продукты. Я был и постановщиком технико-экономических задач, а потом освоил самостоятельно и программирование. У меня было подразделение программистов, и мы решали сложные задачи управления производством. Программирование — это не ремесло, которое способен освоить каждый. Для этого требуются такие качества, как величайшее терпение, упорство, скрупулёзность, аккуратность, хорошая память, а также способность к творческому мышлению и охвату проблемы в целом. Редко это бывает всё в одном человеке. Мужчины вообще не склонны к аккуратности и к рутинной работе. Поэтому почти нет мужчин кассиров и бухгалтеров. Поэтому учиться можно чему угодно, а вот быть хорошим программистом, увы …
Конечно ошибки бывают и у программистов. Теоретически, их потом должны отлавливать тестировщики, но бывает, что доходит и до клиентов. Это уже когда совсем любопытные пользователи попадаются и делают такую последовательность действий, что нормальный технический специалист никогда не придумает. Не зря же один из законов Мерфи: «Невозможно создать программу с полной защитой от дураков, ибо дураки крайне изобретательны.». Потом этого пользователя ловишь и выпыаваешь КАК это было сделано? С опытом вырабатывается даже чутье на ошибки. Вот смотришь на текст программы и понимаешь — здесь. Увлекательно искать нестандартные решения, лучшая награда — это довольный пользователь, а поиск ошибок это просто часть работы, чаще обычная рутина, но ничего страшного.
Есть еще один серьёзный барьер: это невозможность рассказать о своей работе, совместно порадоваться гениальному решению. Есть, конечно, друзья программеры, но это не то. Нормальному человеку даже просто рассказать что ты делал сегодня невозможно.
>При этом компилятор ясно пишет, в чем ошибка
Просто люди не знаю английский язык. В этом проблема. Моя твоя не понимать. 🙁
Проблема не в этом, так как перевести фразу можно легко в гугл-переводчике.
Нашёл ошибку в статье)))))):
«Что же говорить о ситуации, когда ошибки идут за другой. »
Прошу исправить!
Спасибо! Исправил.