Программист, как объект социологического анализа
Развитие информационных технологий создает новые области деятельности, в процессе которых складывается своя психологическая реальность, меняются восприятие и переживания человека.
Персональные компьютеры сейчас есть у многих людей, и они становятся действительно необходимыми и незаменимыми: электронная переписка, музыка и фильмы, тексты, книги, — все это переселяется из различных устройств в одно универсальное — компьютер. Поэтому профессия программиста сейчас очень востребована и перспективна.
Проблема психологического исследования в системе «человек–компьютер» носит не только междисциплинарный, но и межотраслевой характер.
Понятие «программист», или «специалист по информационным технологиям», невероятно широкое. Программист – это человек, занимающийся программированием, выполняющий разработку программного обеспечения (в простых случаях — отдельных программ) для программируемых устройств. Примерами таких устройств являются настольные персональные компьютеры, мобильные телефоны, смартфоны, коммуникаторы, игровые приставки, серверы, суперкомпьютеры, микроконтроллеры и промышленные компьютеры.
Программист должен отлично знать не только теорию своей работы, но и быть отличным практиком.
Профессия программиста относится к трем типам: «человек-техника», «человек-знаковая система» и «человек-человек» по Е.А. Климову. В зависимости от занимаемой должности (программист, лидер группы разработчиков, консультант, системный аналитик, системный администратор или менеджер проектов) и, как следствие, круга решаемых задач программиста можно отнести к одному из описанных выше типов.
Профессия имеет как свои плюсы, так и свои минусы. К плюсам относят постоянное профессиональное самосовершенствование, высокий спрос на рынке труда, высокую заработную плату, возможность работать, не имея диплома, и творческий характер профессии. К минусам относят то, что программисту приходится многое объяснять пользователю, и то, что ему часто приходится работать в авральном режиме. Также немаловажным негативным фактором является то, что работа за компьютером плохо сказывается на здоровье и характере программиста.
То есть профессия программиста сочетает в себе важные качества, она нужна на рынке труда, она одновременно и «точная», и творческая и, безусловно, перспективная с финансовой точки зрения.
Анализом специфики задач в области программирования и вопросами профессиональных качеств программистов в разное время занимались психологи и педагоги Ф. Брукс, Н. Вирт, Э. Дейкстра, С. Макконнелл, М.Л. Смульсон, Б. Шнейдерман и др[2].
Эти исследователи утверждают, что у программиста имеются свои профессиональные качества, личностные черты, способности и особенности мышления. Среди таких способностей они отмечают логическое мышление, гибкость и динамичность мышления, хороший уровень развития памяти (особенно словесно-логической), высокий уровень развития концентрации, объема, распределения и переключения внимания, способность грамотно выражать свои мысли, математические способности и развитое воображение. А среди личностных качеств, которые помогают программисту в профессиональной деятельности, отмечают внимательность, аккуратность, терпеливость, настойчивость, целеустремленность, ответственность, склонность к интеллектуальным видам деятельности и умение самостоятельно принимать решения.
Понятием «профессионализм» в отношении программиста определяется как интегральная личностная характеристика человека, который: овладел нормами профессиональной деятельности и общения и осуществляет их на высоком уровне, добиваясь профессионального мастерства в области программирования; следует профессиональной ценностной ориентации, придерживаясь профессиональной этики; развивает себя средствами профессии; стремится сделать творческий вклад в профессию, обогатив ее опыт; стремится и умеет вызвать интерес общества к результатам своей профессиональной деятельности, способствует повышению веса и престижа своей профессии в обществе, гибко учитывает новые запросы общества к ней.
По Э. Дейкстре, программисту должны быть присущи качества, связанные непосредственно с созданием программного продукта:
— способность определить архитектуру программы, т.е. разбивать сложную задачу на элементарные составляющие и задать варианты их комбинирования;
— умение видеть задачу одновременно на разных уровнях детализации, свободно переходить от описания задачи в общих понятиях к сути низшего уровня;
— умение представлять себе процесс, который проецируется в динамике, поскольку данные, которые обрабатываются, в некоторый момент времени могут иметь одни значения и взаимосвязи, а в следующий момент некоторые из них могут быть изменены;
— умение видеть дальше одной программы, разрабатываемой в данный момент, обобщать типичные ситуации, т. е. находить в программе идейно однородные участки;
— умение применять и комбинировать хорошо известные приемы программирования и типичные алгоритмы, т. е. большинство новых идей должно находиться в тесном взаимодействии с уже известными идеями и методами;
— умение модифицировать программу.
По Б. Шнейдерману, программисту должны быть присущи следующие качества: способность понимать программы, в программировании понимание имеет нижний уровень (понимание каждой строки кода), средний уровень (понимание структуры алгоритма и данных) и высокий уровень (понимание общего назначения программы); умение отлаживать программы, т.е. находить ошибки в программе. Такая работа содержит элементы решения головоломок.
Сложность такой работы обусловлена психологическими факторами: усиленным беспокойством и нежеланием допускать ошибки. Успешность в решении задачи можно считать одним из критериев понимания программ. Умение запоминать и воспроизводить текст программы, способность воспроизведения правильной программы «по памяти» находится в прямой зависимости от опыта программирования.
По М.Л. Смульсон, это следующие качества: гибкость и стратегичность мышления; творческие свойства мышления; внимательность, что проявляется в умении предполагать меньше ошибок; логический характер мышления.
Что же касается личностных характеристик программиста, Б. Шнейдерман отмечает, что «особенности личности играют критическую роль в определении как взаимодействия между программистами, так и рабочего стиля отдельных программистов».
По Э. Дейкстре, программисту должны быть присущи и определенные психологические и общечеловеческие черты: наличие комплексного мышления — умение заранее определять этапы, которые нужно пройти, чтобы решить тот или иной вопрос; культура собственного труда — умение обеспечить себя необходимым инструментарием для работы, способность анализировать собственные ошибки (это качество указывает на требовательность программиста к себе, с одной стороны, и уменьшает количество ошибок, с другой стороны); умение работать в коллективе; умение работать с пользователем, так как профессиональный программист должен понимать потребности пользователя, уметь оценить удобство конкретных форм интерфейса, иметь возможность и способность приучить пользователя к новым средствам и системам.
Также программист должен: обладать и психологическими знаниями, помогающими ему в общении с пользователями; соблюдать правила общечеловеческой этики; обладать способностью четко видеть действительные трудности и отвергать все, что не относится к делу; быть способным выявлять все случаи, где можно применить теорию, самостоятельно решиться на ее применение или обратиться за советом к более опытному программисту; уметь при неудаче преодолеть самолюбие и найти другой подход к решению задачи[3].
По Б. Шнейдерману, это такие качества, как:
— настойчивость: настойчивый человек обладает необходимой для выполнения работы инициативой;
— экстравертированность: при коллективном сотрудничестве и при взаимодействии с пользователем благоприятным является дружественный стиль отношений;
— внутренняя управляемость: личности с выраженной внутренней управляемостью пытаются подчинить себе обстоятельства;
— умеренный уровень возбудимости, способствующий повышению производительности;
— высокая мотивация: личности с высоким уровнем мотивации способны выполнять очень сложные задачи;
— высокая терпимость к неопределенности: разработчики должны уметь работать в условиях, когда четко установлено небольшое число фактов или компонентов, нужно принимать решение при ограниченных исходных данных, для принятия очередного решения нужно иметь склонность к некоторому риску;
— умение быть точным: на завершающих этапах решения задачи необходимы особое внимание к деталям и готовность проверить и учесть каждую из них;
— скромность: хороший программист не должен слишком самоуверенно относиться к качеству своих программ;
— способность переносить стресс: в случаях отставания от плановых сроков требуется способность хорошо работать в стрессовой ситуации.
Также, М.Л. Смульсон выделяла и такие качества: высокая работоспособность и исполнительность в работе; оперативность мышления; умение принимать решения в условиях ограниченного времени; умение создавать себе рабочее место, которое способствует повышению производительности труда.
И нельзя не упомянуть о том, что М.Л. Смульсон отмечает: «…характерной чертой программиста является глубокое и гибкое владение возможностями компьютера, иначе говоря, средствами деятельности. Эффективность труда программиста во многом связана с эффективностью системы средств и умением выбрать среди них наиболее адекватные той задаче, которая решается».
Подведя краткий итог, можно отметить, что мнения всех исследователей подтверждают то, что было сказано в начале параграфа — профессия программиста многогранна, она и «точная», и творческая, и предполагает терпение, высокий интеллект и бесконечное самосовершенствование.