Кто такой программист и что он делает. Чем же занимаются программисты, и как объяснить это остальным? Ступеньки карьеры и перспективы
Программист – специалист, который пишет программы для компьютеров.
Такое короткое описание всем понятно, но не отражает всей полноты картины, т.к. программисты могут писать программное обеспечение (ПО) для огромного количества электронных устройств, а не только для компьютеров. Оглянитесь, во множестве окружающих Вас вещей есть результат работы специалистов по программированию, начиная от игрушек, бытовой техники и заканчивая автомобилями, самолётами и космическими ракетами. Таким образом, профессия программиста пользуется большим спросом и, что ещё более важно, востребованность программиста на рынке труда будет только расти вместе с неумолимым увеличением количества вещей и техники, для которых требуется писать программное обеспечение.
Огромная востребованность профессии и радужные перспективы её положения на рынке труда делают специальность программиста одним из наиболее удачных выборов профессии. Даже на начальных этапах заработная плата программиста является выше средней по рынку, а с приобретением опыта этот разрыв только увеличивается. Хороший специалист может получать более 100 000р. в месяц и больше.
Программист – это одна из уникальных профессий, которые предлагают бесконечный простор для творчества, самореализации и ведения личных проектов для души или зарабатывания средств.
Для успешной работы программисту не обязательно наличие высшего образования, это одна из профессий, которые, благодаря большому количеству книг, онлайн курсов и прочих источников информации, осваиваются самостоятельно при наличии такого желания. Самое главное в становлении и работе программиста это опыт, а он нарабатывается самостоятельно, работая над своими или чужими проектами, помогая людям на форумах, изучая программы с открытым исходным кодом и многими другими способами. Таким образом, на собеседовании наличие высшего образования при собеседовании будет несомненным плюсом, но основным решающим фактором о принятии на работу будет результат выполнения тестовых заданий.
Специализации программиста
Условно программистов можно разделить на 3 большие группы, которые могут делиться на более маленькие уже внутри себя: это системные, прикладные и веб-программисты. Рассмотрим каждую группу более подробно.
Системный программист – пишет ПО, которое предназначено для обеспечения работы устройства в целом или использования другими компьютерными специалистами. Это могут быть операционные системы, драйвера, интерфейсы к базам данных, работа с сетями и другое. Ещё одной задачей системных программистов является обеспечение правильной и бесперебойной работы созданных программ. Системные программисты, как правило, самые профессиональные, опытные и высокооплачиваемые специалисты.
Прикладной программист – разрабатывает и отлаживает ПО для решения определённых, конкретных задач, а также может заниматься адаптацией уже существующих программ под более узкие задачи, требования предприятия-работодателя или пользователя. К результату труда прикладных программистов можно отнести: игры, редакторы фото и видео, программы для обмена сообщениями, бухгалтерские программы, системы аудио и видеонаблюдения, офисные программы и прочее.
Веб-программист – по работе и задачам похож на прикладного программиста, но основной уклон деятельности идёт на работу с интернетом и пользователями сетей, как локальных, так и общемировых. Такие программисты пишут ПО для работы сайтов, их правильного отображения в браузерах, создают динамически изменяющиеся страницы и разрабатывают интерфейсы к базам данных. Внутри могут делиться на frontend, которые разрабатывают видимую пользователям часть, и backend разработчиков, разрабатывающих механизмы с которыми посетители сайта напрямую не сталкиваются – работа с базами данных, обработка, передача информации и т.д.
Возможные места работы
История профессии
Профессия программиста появилась довольно давно, в XIX веке. Конечно же, это не были те программисты, к которым мы привыкли: компьютеров как таковых ещё не существовало, соответственно и программы с алгоритмами писать было не для чего.
На протяжении многих веков человечество пыталось создать счётную машину: первые попытки известны ещё с древнего Вавилона за 3000 лет до нашей эры. Создавший в 1642 году вычислительную машину Блез Паскаль стал основоположником и первооткрывателем.
Интересно, что первым программистом была женщина, да не просто женщина, а дочь знаменитого поэта Байрона – Ада Лавлейс, написавшая несколько программ для сконструированной Чарльзом Бэббиджем в 1833 году механической машины, умевшей выполнять простейшие арифметические действия.
Первый же полноценный компьютер был создан немцем Конрадом Цузе в 1941 году. Никаких языков программирования тогда ещё существовало, они появились ближе к шестидесятым годам прошлого столетия, и ЭВМ (электронно-вычислительная машина) понимали только свой, машинный язык. Позже появились языки программирования, позволявшие вести процесс записи программы в более понятной человеку форме и затем преобразующие в понятный для компьютера вид.
Далее следовал всё более ускоряющийся процесс развития компьютеров и компьютерных наук, в результате которого вычислительные устройства проникли во все сферы и существование современного мира без них попросту невозможно. Именно поэтому профессия программиста является одной из самых востребованных и высокооплачиваемых.
Самостоятельно
Как уже было сказано ранее, профессии программиста прекрасно осваивается без получения высшего образования. В Вашем распоряжении огромное количество справочной информации, книг, онлайн и оффлайн курсов.
Образовательный IT-портал GeekBrains предлагает разнообразные курсы по программированию для любого уровня с участием известных преподавателей и бесплатными стажировками. Есть как платные, так и значительное количество бесплатных курсов.
Если же Вы затрудняетесь с первоначальным выбором, то Вам обязательно поможет бесплатный курс «Основы программирования ».
Спешите начать обучение. Скидка на обучение профессии «Программист» действует для Вас всего 3 дня!
Классическое высшее образование
Получить высшее образование в области информационных технологий можно во множестве ВУЗов. При поступлении лучше ориентироваться на крупные или федеральные университеты, хорошо зарекомендовавшие себя при подготовке IT-специалистов, имеющих хорошую образовательную базу с известными программистами в качестве преподавателей. Ещё одним фактором качества обучения является процент трудоустроенных по специальности выпускников, особенно работающих в самых известных компаниях: Microsoft, Google, Яндекс, СКБ-Контур и других.
В России обучение программистов ведётся на следующих специальностях:
02.03.02 – Фундаментальная информатика и информационные технологии (бакалавриат)
02.04.02 – Фундаментальная информатика и информационные технологии (магистратура)
09.03.03 – Прикладная информатика (бакалавриат)
09.04.03 – Прикладная информатика (магистратура)
02.03.01 – Математика и компьютерные науки (бакалавриат)
02.04.01 – Математика и компьютерные науки (магистратура)
09.01.02 – Компьютерная безопасность
Будущее профессии программиста
Можно смело утверждать, что потребность в программистах и смежных с ним профессиях будет только увеличиваться. Увеличение сложности и необходимости большего количества программ будут вести к увеличению заработной платы и социального пакета, а за настоящих профессионалов программирования будет вестись борьба.
Обязанности программиста
На основе научно-технических и производственных поставленных задач программист разрабатывает программное обеспечение для их успешного выполнения. Определяет вид, содержание и форму вводимой в компьютер информации, методов и способов её обработки, хранения и вывода готовых результат на экран или средства печати.
Занимается отладкой своих и чужих программ, устраняя допущенные ошибки и дорабатывая функциональность. Определяет необходимость и возможность использования стороннего программного обеспечения на предприятии.
Работает над унификацией и автоматизацией вычислительных процессов, участвует в разработке типовых форм документов предприятия для машинной обработки и хранения.
Плюсы и минусы профессии программиста
Плюсы
- Большая востребованность на рынке труда
- Заработная плата значительно выше среднего
- Отличный соц.пакет (питание, оплата тренажёрного зала, компенсация стажировок)
- Возможность работы фрилансером с зарубежными заказчиками
- Можно разрабатывать личные проекты для души или заработка денежных средств
- Престижная профессия
- Творческая профессия с возможность реализовать себя
- Возможность переквалифицироваться в смежные отрасли
Минусы
- Необходимость постоянно повышать квалификацию
- Длительная сидячая работа за компьютером
- Возможность авралов и необходимости срочно доделать проект сверхурочно
- Часто бывает большой объём работы
- Возможен недостаток межличностного общения
Требования к программисту
Программист должен обладать острым умом, развитой логикой и вниманием. Так как программирование всё время бурно развивается, то необходимо уметь быстро адаптироваться к новым условиям и быть готовым постоянно изучать новые технологии. Иначе его ценность как профессионала будет со временем снижаться.
Для части программистов, которые не занимаются фрилансом или собственными разработками, важно уметь работать в команде с использованием разнообразных современных методологий: SCRUM, KANBAN, AGILE и других. Для продвижения по карьерной лестнице и работы в управлении проектами или ведущим программистом, то крайне желательны навыки управления коллективом и задачами, способность нести личную ответственность за выполнение поставленных задач.
Такие качества как самостоятельность, ответственность и инициативность важны для любой профессии и программисты исключением не являются.
Ещё одним важным и необходимым требованием к программисту является владение английским языком на уровне чтения документации и справочной информации в оригинале. Все новинки и современные технологии разрабатываются за рубежом и лучше читать информацию в первоисточнике.
Зарплата программистов
Указан приблизительный уровень заработной платы. В зависимости от региона и работодателя он может существенно отличаться.
Забавные видео про программистов
День программиста – отмечается 12 сентября. День выбран не случайно и символично: это 256-й день года, а 256 это количество чисел, которые могут быть выражены через восьмиразрядный байт.
Профессия программиста входит в десятку самых востребованных профессий мира.
С четверть всего времени в программировании уходит на размышления о том, что пользователь может сделать не так и как это предотвратить.
Язык программирования Python назван совсем не в честь питонов, хотя иконки, логотипы и повсеместные фанатские изображения изображают именно их. Автор языка любил сериал «Летающий цирк Монти Пайтона» и назвал язык в честь него.
Самый дорогой дефис в истории стоил 135 000 000$, когда благодаря пропущенному дефису в одном из уравнений вскоре после старта потерпел крушение Маринер-1, первый космический аппарат для изучения Венеры.
Программист – не специалист по ремонту компьютеров. Хотя благодаря укоренившимся стереотипам их постоянно просят починить компьютеры и даже бытовую технику.
Женщины занимают всего несколько процентов от общего числа программистов в мире. Обидно, особенно учитывая тот факт, что первым в истории программистом была именно женщина.
Иногда для отладки программы программисты используют так называемый «Метод утёнка», когда перед монитором ставится фигурка утёнка (классический вариант – жёлтый утёнок для купания) и строчка за строчкой ей объясняется, что должна делать программа. Часто такой метод позволяет выявить ошибки, которые пропускаются просто просматривая написанный код.
Известные программисты
Ричард Столлман – основатель движения свободного ПО, Фонда свободных программ и Лиги за свободу программирования, проекта GNU.
Дональд Кнут – учёный, заслуженный профессор Стэнфордского университета, преподаватель и идеолог программирования. Автор множества монографий и всемирно известной серии книг «Искусство программирования». Создатель издательских систем METAFONT и TEX для набора и вёрстки научно-технических книг.
Билл Гейтс – предприниматель, общественный деятель, филантроп. Основатель компании Microsoft и самый богатый человек на планете. Один из рекордсменов по передаче средств на благотворительность.
Линус Торвальдс – создатель ядра Linux, самой распространённой из свободных операционных систем.
Алексей Пажитнов – советский программист, автор знаменитого Тетриса. После переезда в США продолжает заниматься разработкой компьютерных игр.
Стив Возняк – соучредитель компании Apple, в одиночку спроектировал компьютеры Apple I и Apple II, определивших развитие отрасли и начавшие микрокомпьютерную революцию.
Евгений Касперский – российский программист, один из ведущих мировых экспертов в области информационной безопасности. Сооснователь, владелец и руководитель международной компании АО «Лаборатория Касперского».
Марк Цукерберг – американский программист и предприниматель, один из основателей и разработчиков крупнейшей международной социальной сети Facebook.
Павел Дуров – российский программист и предприниматель, один из создателей ведущей отечественной социальной сети Вконтакте. Один из создателей защищённого мессенджера Telegram.
Деннис Ритчи – компьютерный специалист, участвовавший в создании языков программирования BCPL, B, C и разработке операционных систем Multics и Unix.
Цитаты про программистов
Когда кажется, что все уже работает, все объединено в систему — вам еще осталось работы на четыре месяца – Ч. Портман
Генерация случайных чисел — слишком важный вопрос, чтобы оставлять его на волю случая – Р. Ковзю
Ошибка? Это не ошибка, это системная функция – Д. Уэнделл
Пользователь не знает, чего он хочет, пока не увидит то, что он получил – Э. Йодан
Если отладка — процесс удаления ошибок, то программирование должно быть процессом их внесения – Э. Дейкстра
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы – М. Мичем
В любой программе есть ошибки – аксиома.
Законы Мерфи для программистов
Сложность программы растет до тех пор, пока не превысит способности программиста.
Чем больше программист делает ошибок, тем быстрее он делается учёным.
Если Вам удалось написать с первого раза программу, в которой интерпретатор не обнаружил ни одной ошибки, то обязательно сообщите об этом системному программисту. Он исправит ошибки в интерпретаторе.
Программист видит ошибки только в чужих программах.
Если написанная программа сработала правильно, то, скорее всего, программист не понял задание.
Работающая над программой команда всегда питает отвращение к еженедельной отчетности о достигнутых результатах, поскольку она слишком явно свидетельствует об отсутствии таковых.
Абсолютно любая программа всегда обходится дороже и требует больших затрат времени, чем предполагалось.
Если программа уже полностью отлажена, то ее нужно будет переделать.
Любая программа стремится занять всю доступную память.
Самая серьёзная ошибка будет выявлена, только лишь когда программа пробудет в производстве как минимум полгода.
Увеличение числа программистов при разработке не укладывающейся в сроки программы только замедляет процесс.
Плохо спланированная программа требует в три раза больше времени, чем предполагалось; отлично спланированная — только в два.
Если программа полезна, то её обязательно придётся переделать.
В любой программе всегда есть ещё одна ошибка.
Решительно невозможно создать программу с абсолютной защитой от дураков, ибо дураки крайне изобретательны.
Если разработка идет хорошо — ждите серьёзных осложнений.
Если кажется, что хуже уже некуда, то вскоре выяснится, что это далеко не так.
Если вам непонятен термин в технической документации, то смело игнорируйте его, смысл от этого никак не пострадает.
Всегда оставляйте место для объяснения того, почему написанная Вами программа работает не так как ожидалось.
Если бы строители возводили здания так же, как и программисты пишут программы, первый же залетевший дятел разрушил бы человеческую цивилизацию до основания.
В последнее время профессия «программист» стала очень востребованной и популярной. А всё благодаря развитию информационных технологий, ведь без компьютера и Интернета сейчас очень сложно обойтись. В этой статье мы подробно расскажем вам об этом перспективном виде деятельности.
История
Мало кто знает, когда появился первый программист. История профессии уходит корнями в начало 19-го века. В 1804 году Жозеф Жаккар построил ткацкий станок. Именно он считается первым запрограммированным устройством, позволившим создавать узоры на тканях с помощью перфокарт.
Первое же вычислительное устройство, или Аналитическая программируемая машина, была разработана Чарльзом Бэббиджем. Однако он так и не смог её построить. В середине 1843 года Ада Лавлейс (дочь поэта Джорджа Байрона) написала для неё первую в истории программу, решающую уравнение Бернулли.
В своей научной работе Ада рассмотрела много различных вопросов. Несколько высказанных ею положений (связь циклических процессов вычислений с рекуррентными формулами, принцип экономии действующих ячеек памяти) актуальны и для современного программирования. В комментариях Лавлейс и материалах Бэббиджа есть такие понятия, как индексный регистр, модификация команд и библиотека подпрограмм. Эти термины вошли в обиход лишь в 1950-х годах, когда профессия программист (плюсы и минусы можно прочесть ниже) только зарождалась. А широкое распространение они получили только спустя пару десятилетий.
Первый программист
Хоть ни одна программа Ады Лавлейс не была запущена, её принято считать первым программистом (хотя по современным меркам, написание только одной программы не считается профессиональной деятельностью). В честь неё был назван один из универсальных языков программирования - «Ада».
А самым первым был «Планкалкюль», созданный немецким инженером Конрадом Цузе в 1941 году. К сожалению, история не сохранила имен первых профессиональных программистов (в отрыве от настройки аппаратуры компьютера). Это произошло потому, что в то время данная деятельность рассматривалась всего лишь как второстепенная наладочная операция.
Определение
Программист - это специалист, занимающийся разработкой компьютерных программ и алгоритмов при активном использовании специальных математических моделей. В зависимости от специализации программисты делятся на три категории:
- Прикладные. Пишут программы прикладного характера: мессенджеры, редакторы, бухгалтерия, игры и т. д. Создают драйвера для СКД, систем видеонаблюдения, пожаротушения и др. Также адаптируют уже существующие программы под нужды конкретного пользователя или организации.
- Системные. Пишут интерфейсы к базам данных, работают с сетями, разрабатывают ОС. Специалисты этой категории самые редкие и высокооплачиваемые. Их главная задача - разработка сервисов (программного обеспечения) для управления вычислительной системой (периферийные, коммуникационный устройства и процессор).
- Web-программисты. Работают с сетями, но в основном с глобальными (Интернет). Создают веб-страницы и пишут программную основу сайтов. Также в их обязанности входит работа с базами данных.
Образование
Профессия «программист» есть в списке специальностей множества вузов. Если рассматривать столицу нашей страны, то самыми авторитетными являются: МГУ, МАИ, МЭСИ, МИЭМ, МИРЭА, МГТУ, МИФИ и МФТИ. Получить профессию программиста можно и в других мегаполисах. Дефицита с институтами (или филиалами), обучающими этой специальности, нет даже в маленьких городах. Согласно статистике, российские вузы ежегодно выпускают около 100 тыс. программистов.
В процессе обучения лучше сосредоточиться не столько на прослушивании лекций, сколько на решении задач и участии в разнообразных учебных проектах. Будущий программист должен научиться думать и принимать верные решения. Так как развитие информационных технологий идёт бурными темпами, то специалисту этой сферы нужны навыки самообразования, которые после получения диплома позволят ему не терять квалификации и идти в ногу со временем.
Смежные карьеры
Для российских программистов (в отличие от зарубежных) допустимо наличие смежного образования. Они могут быть математиками, физиками, химиками и др. Кстати, очень популярной в последнее время стала профессия «инженер-программист».
Как показывает практика, получение смежного высшего образования не мешает быть им первоклассными IT-специалистами. Известно, что программистов из азиатских стран (Индонезии, Вьетнама, Китая) привлекают к массовому индустриальному программированию. А в тех областях, где нужны творческие решения, наиболее сильны российские специалисты. В первую очередь это обусловлено высоким качеством фундаментального образования.
На факультете кибернетики и высшей математики МГУ существует специальная программа двухлетнего обучения в вечернее время, позволяющая подготовить программистов с дипломом по смежным направлениям и специальностям. Помимо государственного диплома о дополнительной квалификации выпускники этой программы получают международные сертификаты. Также есть возможность дистанционного обучения через Интернет. Например, находясь в какой-нибудь провинции, можно получить престижную специальность «техник-программист» (профессия не очень популярная, но перспективная). Идём далее.
Функциональные обязанности
В России профессия «программист» (описание есть в разделе «Определение») не связана с разработкой новых приложений, операционных систем и программ по типу Adobe Photoshop или MS Office. Этим занимаются специалисты высокой квалификации из таких фирм как Oracle, Sun, Adobe, Microsoft и т. д. В отечественных компаниях подобные проекты большая редкость и почти все программы, которые ставят на свой ПК российские пользователи, созданы западными фирмами. Есть несколько отечественных фирм-разработчиков ПО, но их очень мало. Например, «Лаборатория Касперского», выпускающая антивирусные программы. Также созданием программного обеспечения занимается и ряд государственных структур: НИИ, конструкторские бюро космонавтики и военно-промышленного комплекса. Но опять же, их можно пересчитать по пальцам.
Большим спросом в России пользуются программисты-«прикладники»: сегодня любая компания нуждается в автоматизации бизнеса, в возможности вести учёт продукции, быстро обмениваться информационными сообщениями между подразделениями фирмы и работать по внутренней компьютерной сети. В соответствии с особенностями своего бизнеса, компании адаптируют, а если нужно, то и разрабатывают подходящие пакеты программ. Нужно понимать, что автоматизация бизнеса издательского дома и ресторана - это совершенно разные вещи. Помимо программного обеспечения некоторым фирмам необходим регулярный мониторинг налаженной системы и её модификация, на случай расширения бизнеса. Поэтому работодатели набирают программистов в свой штат. Но некоторые фирмы предпочитают заказывать автоматизацию бизнеса профессиональным IT-компаниям.
Великие и знаменитые программисты
Список их весьма обширен, поэтому мы назовем лишь наиболее известных:
- Фаулер Мартин.
- Рэймонд Стивен.
- Таненбаум Эндрю.
- Мацумото Юкихиро.
- Кнут Дональд Эрвин.
- Страуструп Бьёрн.
- Мейер Сид.
- Кей Алан.
- Столлман Мэттью.
- Хоппер Грейс.
Законы Мерфи для программистов
- Вместо того чтобы в приступе злости молотить системный блок, все почему-то лупят по невинному монитору.
- Настоящий программист поменял уже как минимум 3 облитых пивом клавиатуры.
- В словосочетании «мышка-норушка» нет никакого смысла.
- Программисты, испытывающие проблемы с настройкой кодировки, автоматически становятся неандертальцами.
- Настоящий программист в случае голодовки может ещё в течение месяца питаться едой, выковырянной из клавиатуры.
Программист – одна из самых перспективных и востребованных профессий современного общества. Мы уже не представляем свою жизнь без интернета и компьютерных технологий, не удивительно, что спрос на специалистов в данной сфере как никогда высокий. Программист занимается разработкой программ на основе алгоритмов и математических моделей. Существует несколько сфер данной деятельности, значительно различающихся между собой. Наиболее популярные – это создание игр, приложений, поддержка операционных систем, разработка уникальных программных продуктов по индивидуальному заказу.
Что делает программист
Если прикладные программисты занимаются созданием общей модели, то системные — непосредственной разработкой ядра проекта, графического движка, драйверов.
Web-программисты занимаются созданием, версткой сайтов и других интернет сервисов. Практически у каждой крупной копании есть интернет сайт, для некоторых проектов разрабатывается возможность совершения покупок через интернет, онлайн поддержка и т.д.
Технологии не стоят на месте, если Вы решили стать программистом – необходимо постоянно следить за новинками в данной области. Для этого нужно набираться практического опыта и овладевать качественными знаниями, в противном случае, через некоторое время Ваша конкурентоспособность значительно снизится.
Не лишним станет глубокое изучение английского языка в области IT-технологий для чтения технической документации.
Большим плюсом станет предрасположенность к изучению математики. Однако существуют яркие примеры успешных программистов, которые даже не учились в ВУЗе, им хватило упорства, настойчивости и аналитического склада ума.
Общение – неотъемлемая часть работы программиста. Большинство проектов разрабатывается в команде, где людям необходимо не только дискутировать, но и соглашаться друг с другом. Существует стереотип образа человека, занятого в сфере IT: замкнуты, одинокий очкарик, находящейся на своей волне. В большинстве случаев, это открытые коммуникабельные люди, а отшельничество присуще любому гению, вне зависимости от профессии.
Программист – это востребованная и высокооплачиваемая профессия. Специалист начального уровня может смело претендовать на заработную плату около 1 000 долларов. По мере приобретения опыта и практических знаний, можно выйти на доход 1500-1800 долларов. В крупной организации по разработке программного обеспечения специалисты зарабатывают до 3 000 долларов, на руководящих должностях – 5 000 долларов.
Не пропустите:
Плюсы и минусы работы программистом
Преимущества:
- для освоения профессии не обязательно заканчивать ВУЗ. Достаточно обладать аналитическим складом ума, желанием и доступом к обучающему материалу;
- высокий уровень оплаты труда;
- постоянное увеличение спроса в грамотных специалистах. По сравнению с другими профессиями, можно претендовать на достаточно высокую зарплату. Требования к возрасту и опыту не такие жесткие;
- возможность удаленной работы, самостоятельного поиска проектов;
- хорошие знания предметной части предоставляют возможность переквалификации в смежных областях.
Недостатки:
- работа программистом довольно молодая, по большей части в ней заняты люди не старше 40 лет. Не самая удачная профессия для тех, кто собирается найти спокойную работу, и просидеть там до пенсии;
- хотя профессия предполагает коммуникабельность, общение сводиться к профессиональным разговорам с коллегами и начальством. Людям, которые нуждаются в постоянном общении с разными людьми, будет довольно сложно;
- главный минус – сидячая работа за компьютером. Необходимо пристально следить за своим здоровьем, без физической нагрузки существует риск получить проблемы со зрением и опорно-двигательным аппаратом.
Существует несколько вариантов построения карьерной лестницы для специалистов, которые хотят добиться успеха в программировании. Один из самых популярных – объединиться с единомышленниками вокруг креативной идеи, получить внешние инвестиции, и таким образом заявить о себе. Нередко зарубежные компании ищут «светлые умы» среди специалистов в странах пост советского пространства. Талантливые программисты никогда не останутся без работы.
Подходящие образовательные специальности: Web-программистКлючевые предметы: Информатика и вычислительная техника; Программная инженерия; Математическое обеспечение; Администрирование информационных; Английский язык.
Стоимость обучения (средняя по России): 216000 рублей
Описание профессии:
*стоимость обучения указана за 4 года бакалавриата на очном отделении.
В программировании на первое место ставятся не только практические навыки, но и идеи специалиста.
Программист — это специалист, который занимается разработкой алгоритмов и компьютерных программ на основе специальных математических моделей. Программистов можно условно разделить на три категории в зависимости от специализации:
Прикладные программисты занимаются в основном разработкой программного обеспечения прикладного характера — игры‚ бухгалтерские программы‚ редакторы‚ мессенджеры и т.п. К области их работы также можно отнести создание программного обеспечения для систем видео- и аудио-наблюдения‚ СКД‚ систем пожаротушения или пожарной сигнализации и т.п. Также в их обязанности входит адаптация уже существующих программ под нужды отдельно взятой организации или пользователя.
Системные программисты разрабатывают операционные системы, работают с сетями, пишут интерфейсы к различным распределенным базам данных. Специалисты этой категории относятся к числу самых редких и высокооплачиваемых. Их задача состоит в том‚ чтобы разработать системы программного обеспечения (сервисы)‚ которые‚ в свою очередь‚ управляют вычислительной системой (куда входит процессор‚ коммуникационные и периферийные устройства). Также в список задач входит обеспечение функционирования и работы созданных систем (драйвера устройств‚ загрузчики и т.д.).
Web-программисты также работают с сетями, но, в большинстве случаев, с глобальными - Интернет. Они пишут программную составляющую сайтов, создают динамические веб-страницы, web-интерфейсы для работы с базами данных.
Особенности профессии
На основе анализа математических моделей и алгоритмов решения научно-технических и производственных задач программист разрабатывает программы выполнения вычислительных работ. Составляет вычислительную схему метода решения задач, переводит алгоритмы решения на формализованный машинный язык. Определяет вводимую в машину информацию, ее объем, методы контроля производимых машиной операций, форму и содержание исходных документов и результатов вычислений. Разрабатывает макеты и схемы ввода, обработки, хранения и выдачи информации, проводит камеральную проверку программ.
Определяет совокупность данных, обеспечивающих решение максимального числа включенных в данную программу условий. Проводит отладку разработанных программ, определяет возможность использования готовых программ, разработанных другими организациями. Разрабатывает и внедряет методы автоматизации программирования, типовые и стандартные программы, программирующие программы, транслятора, входные алгоритмические языки.
Выполняет работу по унификации и типизации вычислительных процессов, участвует в создании каталогов и карточек стандартных программ, в разработке форм документов, подлежащих машинной обработке, в проектных работах по расширению области применения вычислительной техники.
Плюсы и минусы профессии
Плюсы профессии:
- высокая заработная плата;
- сравнительно высокий спрос на специалистов;
- иногда можно получить работу не имея высшего образования;
- по преимуществу является творческой профессией.
Минусы профессии :
- приходится часто и много объяснять одно и то же, так как то, что понятно и очевидно программисту, совсем не всегда понятно и очевидно пользователю;
- работа в режиме аврала (иногда) в стрессовой ситуации;
- профессия накладывает специфический отпечаток на характер, который нравится далеко не всем окружающим.
Место работы
- IT-компании и web-студии;
- научно-исследовательские центры;
- организации, которые подразумевают в своей структуре штатную единицу или отделы программистов.
Важные качества
Программирование является бурно развивающейся областью, поэтому программист должен уметь быстро адаптироваться к текущему состоянию технологии и постоянно изучать новые технологии. Поэтому способность к самообучению — один из главных навыков, которым должен обладать программист. В противном случае через несколько лет его ценность как специалиста окажется заметно ниже.
Владение английским языком на уровне чтения технической документации является еще одним обязательным требованием, предъявляемым к представителям этой профессии. Для таких специалистов очень важно умение работать в команде, над большими проектами, со средствами коллективной разработки, с крупными финансовыми системами (бюджетными, банковскими, управленческого учета). Для претендентов на позицию ведущего программиста желательны навыки управления проектами и коллективом, самостоятельность, инициативность, а также способность нести личную ответственность за поставленную задачу.
Где учат
В России подготовка инженеров-программистов ведётся по специальностям 220400 (230105) «Программное обеспечение вычислительной техники и автоматизированных систем» и 351500 «Математическое обеспечение и администрирование информационных систем», 010200 «Прикладная математика и информатика» и 073000 «Прикладная математика».
Получить высшее образование в области информационных технологий можно в ВУЗах:
- Московский государственный технологический университет им. Баумана.
- Московский институт стали и сплавов (МИСиС).
- Московскbq институт радиоэлектроники и автоматики (МИРЭА)
- Станкин
- Московский физико-технический институт
- Российский государственный гуманитарный университет (РГГУ)
Оплата труда
Программист - одна из самых востребованных и высокооплачиваемых профессий в России. Даже не самый продвинутый специалист может найти работу в соответствии со своим уровнем знаний, а затем постепенно учиться и набираться опыта. Зарплата стажера — около $ 1000. Штатный программист в компании среднего уровня (не IT) получает до $ 1500-1800, чуть больше — в организации, связанной с массовой разработкой ПО. Зарплата ведущего программиста — $ 2500—3000. Следующая ступень — руководитель IT-отдела. К необходимым знаниям добавляется обязательный опыт работы, владение иностранным языком, навыки управления персоналом и др., а заработок может достигать $ 4000. Хороший программист может стать руководителем крупного проекта по разработке ПО, и тут уровень доходов достигает $ 5000 и выше.
Ступеньки карьеры и перспективы
Хорошим стартом карьеры может стать присоединение к группе программистов при разработке какого-либо проекта. Крупные проекты часто привлекают внимание западных компаний, которые «перекупают» российских программистов. К примеру, когда-то группа наших молодых ученых разрабатывала процессор «Эльбрус» для Минобороны, а в итоге их всех перекупила корпорация Intel, и теперь наши ученые и программисты работают за рубежом, а сам проект «Эльбрус» потихоньку закрылся. Проблема «утечки мозгов» в этой профессии — одна из самых острых.
Программист может сделать карьеру до руководителя группы программистов (тим-лидер), IT-директора предприятия, менеджера IT-проекта и т.п. В ходе работы программист может перемещаться в рамках своей специальности, совершенствуясь профессионально.
Знаменитые и великие программисты
Кнут Дональд Эрвин
Мацумото Юкихиро
Таненбаум Эндрю
Рэймонд Эрик Стивен
Фаулер Мартин
Хоппер Грейс
Столлман Ричард Мэттью
Кей Алан
Мейер Сид
Страуструп Бьёрн
Возникновение программирования как рода занятий и, особенно, как профессиональной деятельности трудно датировать однозначно.
Часто первым программируемым устройством принято считать жаккардовый ткацкий станок, построенный в 1804 году Жозефом Мари Жаккаром, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт.
Первое программируемое вычислительное устройство, Аналитическую машину, разработал Чарлз Бэббидж (но не смог её построить). 19 июля 1843 года графиня Ада Августа Лавлейс, дочка великого английского поэта Джорджа Байрона, как принято считать, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости.
В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили свое принципиальное значение и для современного программирования. В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950-х годах.
Однако ни одна из программ написанных Адой Лавлейс никогда так и не была запущена.
Аду Августу, графиню Лавлейс, принято считать почётным первым программистом (хотя, конечно, написание одной программы по современным меркам не может считаться родом занятий или профессиональной деятельностью). История сохранила её имя в названии универсального языка программирования «Ада».
Первый работающий программируемый компьютер (1941 год), первые программы для него, а также (с определёнными оговорками) первый язык программирования высокого уровня Планкалкюль создал немецкий инженер Конрад Цузе.
Имена людей, впервые начавших профессионально выполнять работу собственно по программированию (в отрыве от наладки аппаратуры компьютера), история не сохранила, так как поначалу программирование рассматривалось как второстепенная наладочная операция.
ЗАКОНЫ МЕРФИ ДЛЯ ПРОГРАММИСТОВ
1. Ничто не работает так, как планировалось запрограммировать.
2. Ничто не программируется так, как должно работать.
3. Хороший программист характеризуется умением доказать почему задачу невозможно выполнить, когда ему просто лень её выполнять.
4. На решение проблемы уходит в три раза меньше времени, чем на обсуждение всех "за" и "против" её решения.
5. Обещанный срок сдачи - это аккуратно рассчитанная дата окончания проекта плюс шесть месяцев.
6. Программисту всегда известна последовательность действий, которыми пользователь может повесить его программу, но он никогда не чинит эту проблему, надеясь на то, что никому никогда не придёт в голову эту последовательность исполнять.
7. Настоящие программисты любят Windows — все ошибки, сделанные по собственной тупости, можно свалить на Microsoft.
8. Следствие — 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
9. В приступе злости все почему-то молотят по невинному монитору, вместо системного блока.
10. В случае голодовки настоящий программист ещё месяц сможет питаться едой, выковырянной из-под кнопок клавиатуры.
11. Настоящий программист уже как минимум поменял три залитых пивом клавиатуры.
12. Все, кто испытывает проблемы с настройкой кодировки, автоматически считаются неандертальцами.
13. Дилетантские разговоры о компьютерах вызывают резкую тошноту вплоть до приступов рвоты. Вопрос о том как поменять "обои" в Windows вызывает желание перерезать горло вопрошающему.
14. У большинства людей, нуждающихся в твоей помощи, причина ошибки в работе программы чисто генетическая.
15. HTML, HTTP, FTP, SMTP, TCP/IP, RTFM и т.д. - это слова, а не аббревиатуры.
16. Словосочетание "мышка-норушка" не несёт никакого смысла.
17. Самые мистические проблемы, широко раздуваемые и афишируемые, в конце концов оказываются твоими глупейшими ошибками.
18. Следствие - если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое.
19. Самое плохое ощущение для программиста - когда вокруг тебя стоят десять человек и все пытаются найти причину проблемы в твоей программе, а ты уже понял, в чём проблема, но боишься сказать, потому что это что-то вопиюще глупое...
20. Решение всех жизненных проблем находится в интернете. Надо только уметь хорошо искать.
21. Конфликт логических указаний в жизни вызывает фатальную ошибку в работе мозга программиста - возможно повышение температуры и сильное головокружение вплоть до рвоты или потери сознания.
22. Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает программистов, презирают программистов, которые презирают тех, кто их презирает.
23. Если ты понял предыдущее — то ты программист.
Анекдоты о программистах
Программист программисту: "Предположим, что у тебя есть 1000 рублей... Ну, для круглого счета возьмем 1024..."
На этом свете 10 типов людей - те, кто понимает двоичную систему счисления, и те, кто не понимает ее.
Высокая заработная плата; сравнительно высокий спрос на специалистов; иногда можно получить работу не имея высшего образования; по преимуществу является творческой профессией.
Наверное, у каждого программиста возникала ситуация, когда совершенно не знакомые с IT люди просили его объяснить, в чём же состоит суть его профессии. Так уж сложилось, что у большинства людей понятие «программист» ассоциируется либо с замкнутым гиком в очках и свитере, либо с неким гениальным красноглазым подростком-хакером - но при этом никто не знает, чем именно он занимается.
Как рассказать им об этом, не пугая страшными терминами и фрагментами кода?
Под катом я воспроизведу такой рассказ, а также развенчаю несколько мифов о программировании.
- Чем занимаются программисты? Это не так-то просто рассказать… Ответьте мне для начала: как в двух словах можно описать, например, суть профессии хирурга?
- Хирург проводит операции.
- Да, отличное описание! Ну а, скажем, футболиста?
- Играет в футбол!
- Угу, а хирург «занимается хирургией». А если без однокоренных слов?
- Пинает мяч?
- Вот это точно. А что же делает программист, кроме как «разрабатывает программы»?
- …
- Программист пишет код
. Исходный код своей программы, составленный на каком-то специальном языке программирования. Точнее говоря, сначала он продумывает структуры своих данных, потом составляет алгоритмы для работы с этими структурами - ну а затем уже представляет это в виде кода.
- Что ещё за «структуры данных»? Разве он не управляет компьютером, не нажимает кнопки?
- Эх...
Миф №1: программист работает с компьютерами
Попробуйте донести до людей, что программисту для написания кода, в общем-то, совсем не нужен компьютер. Он нужен лишь для проверки корректности кода, для его тестирования - но писать сам код и составлять схемы алгоритмов вполне можно и на бумаге (хотя на экране монитора, конечно, это делать удобнее). Разработчик же просто записывает на этой бумаге набор каких-то инструкций, команд или конкретных данных (числа, текст). А кто этот набор исполняет - компьютер, телефон или особо умный робот, не так уж и важно. Программист работает с данными, а не с машинами. - Ну как, понятно?
- То есть, программист просто сообщает машине, что бы он хотел сделать - а она это исполняет?
- Ну да, примерно.
- Так же, как начальник отдаёт распоряжения подчинённым?
- Вроде того.
- А если машина захочет исполнить это как-то по-другому?
- В смысле?
- Ну, что-то ей не понравится. Или просто исполнять не захочет.
- Так, давайте уясним раз и навсегда, что...
Миф №2: машина умеет думать
Почему-то немалое число людей реально считает, будто компьютер обладает каким-то интеллектом. На самом деле - это просто набор железок, которые думать не умеют. Они умеют лишь хранить числовые данные. Размагничен какой-то участок такой железки - значит, это ноль. Намагничен - единица. Плюс, ещё они могут складывать и вычитать эти единицы, образуя более сложные числа (о двоичной системе счисления лучше не стоит упоминать). Больше компьютер сам ничего делать не умеет, только хранить числа и оперировать ими. Это бездумный болван, который лишь выполняет команды программиста. - В общем, код любой программы представляет собой набор команд, а компьютер их тупо исполняет.
- То есть, он не понимает сути самих команд? Но как он воспринимает текст, который я ввожу на экране?
- Когда ты крутишь педали на велосипеде - понимает ли он, что ему сейчас нужно поехать вперёд?
- Нет, но ведь едет. Поскольку его цепь преобразует вращение педалей во вращение колёса.
- Именно! Также и компьютер преобразует
введённый тобой текст в набор чисел.
- Каким образом?
- У каждого символа текста есть свой числовой код, который знает компьютер. Это называется кодировкой. Например, английская «a» кодируется числом 97, а знак равенства - числом 61.
- Поэтому машина и может понимать текст, который мы ей сообщаем?
- Нет, она «понимает» не смысл. А лишь то, каким образом этот текст хранить, и как к нему обращаться.
- Выходит, сначала мы вводим текст, затем компьютер разбивает его на символы, а каждый символ уже представляет в виде числа?
- Верно. Сложные структуры представляются в виде более простых
, которые и «понимает» машина.
Скажите мне, из чего состоит жилой дом?
- Ну… Из этажей.
- А из чего состоят этажи? И так далее.
- Этажи - из стен. А стены - из кирпичей. А кирпичи…
- Вот числа для компьютера - это то же, что и кирпичи для дома. Символы - это стены. Отдельные предложения - этажи. А книги - целые дома! Но у программистов есть преимущество перед строителями.
- Какое?
- Строитель не может строить целыми этажами, он вынужден всегда класть кирпичи. Даже если некий сверхмощный подъёмный кран позволит ему строить готовые этажи, он не сможет строить им целые дома или жилые кварталы. А программист сможет! Раз он уже «обучил» машину понимать конечный текст - то, по сути, он «обучил» подъёмный кран строить готовый дом за одно действие.
- То есть, программист может использовать всё более и более сложные
структуры данных?
- Да. Поэтому первая из составляющих его работы - представить понятные человеку данные (текст, изображение, звук) в виде объединения более простых данных, уже понятных компьютеру. Разработчик практически «с нуля» составляет структуру, которая должна полностью описывать понятную человеку вещь - причём таким образом, чтобы эта структура была легко расширяемой и изменяемой (ведь в программу часто приходится вносить какие-то новые возможности).
- Хех! Выходит, что он строит резиновые дома из съёмных панелей!
- Примерно так. Однако, ещё ему придётся не только описать, что же ему нужно построить - но и как
всё это построить. То есть, придумать алгоритм. Это вторая из составляющих его работы.
- Программист придумывает алгоритм на каждое действие?
- Именно. Поэтому алгоритмов получается очень много. Но его работу облегчает то, что одни действия могут содержать в себе другие, уже описанные им ранее.
- И здесь ему на помощь приходит язык программирования?
- Не совсем...
Миф №3: язык программирования нужен для составления алгоритмов
Нет, язык - это всего лишь инструмент. Как гитара для музыканта. Само по себе умение играть на гитаре вовсе не гарантирует славы - потому что люди, как правило, восхищаются самой музыкой, а не умением быстро и чётко дёргать струны. С другой стороны, вряд ли кто придёт посмотреть на плохого гитариста, какую бы замечательную композицию он не исполнял. Также и с ЯП: знание его синтаксиса и связанных с ним нюансов очень важно, равно как и умение писать красивый и ясный код. Однако, если человек не умеет составлять алгоритмы и структуры данных - то он не может называться хорошим программистом.Компьютер не понимает язык программирования напрямую. Как и ранее, он представляет каждую команду языка в виде набора «простейших» команд (сохранить число, обнулить число, прибавить к нему единицу), которые он способен исполнить. «Понимает» язык программист, а машина его лишь исполняет. По сути, любой язык программирования - это набор команд, служащих для общения с нею.
- Правда, многие из нынешних языков программирования уже содержат «в себе» набор заранее составленных алгоритмов, которые разработчик может использовать в качестве готовых. Поэтому язык всё же немного облегчает процесс составления алгоритмов.
- То есть, если один программист составил какой-то алгоритм, то его тут же могут использовать другие?
- Да, и это происходит постоянно. Это одна из причин, почему отрасль IT так быстро развивается. Однако новые
алгоритмы приходится составлять самому.
- А составь какой-нибудь прямо сейчас!
- Легко. Классический пример: у вас есть книга, в ней 1000 страниц. Вам нужно открыть в ней, к примеру, 875-ю страницу. Как бы вы стали это делать?
- Ну, просто пробежал от первой до 875-й, только и всего.
- Угу, и придётся тебе глядеть на номер каждой страницы. А представь, если все их уголки слиплись - сколько времени тогда пройдёт? А вот мне достаточно перебрать лишь 3 страницы!
- Как?
- Вначале я выберу страницу, которая находится посередине книги, то есть 500-ю. Потом посмотрю: в какую из образовавшихся половин должна попасть искомая страница?
- Во вторую. А дальше что?
- То же самое. Интервал с 500-й по 1000-ю я снова поделю надвое, открыв центральную страницу. Получится интервал от 750-й страницы до 1000-й, в нём я опять выберу центральную. Какой будет номер?
- 750 плюс 125… Так это же и есть 875!
- Вот видишь. Всего 3 действия! Даже если я буду не совсем точен при выборе центральной страницы, я всё равно найду нужную намного быстрее тебя. Этот алгоритм носит название «дихотомия». Хотя в реальности программисты используют куда более сложные алгоритмы.
- И ты можешь записать его на бумаге?
- Конечно. Где там моя ручка?
Псевдокод
повторяем цикл: ищем(в книге, центральную_страницу); если (центральная_страница = искомой_странице) выходим из цикла; иначе если (центральная_страница < искомой_страницы) удаляем(в книге, все страницы от первой до центральной); иначе удаляем(в книге, все страницы от центральной до последней);
- Ну как, алгоритм ясен?
- Хм… Да, и впрямь ясен.
- Сейчас он записан в виде, уже слегка похожем на реальный программный код.
- А в чём отличия?
- В реальном коде все слова будут написаны на английском, а также будет заранее описана структура «книга» (помните, что я раньше рассказывал про структуры данных?). Плюс, для действий «ищем» и «удаляем» тоже будут составлены свои алгоритмы. Но в целом - всё то же самое.
- И ты занимаешься этим изо дня в день?
- В основном.
- И тебе не скучно?
- Ничуть!
Миф №4: программирование - это скучно
Конечно, разработка вполне может наскучить, если заниматься только рутинными и однообразными делами. Например, составлением очень простых алгоритмов, но в большом количестве. Или монотонным поиском ошибок в чужом коде. Но это же касается и любой другой работы - рутина везде убивает творческий процесс. А творчества в программировании немало, написание кода похоже на написание художественной книги. Только, в отличие от большинства писателей, программист сначала сам создаёт свой собственный мир (структуры данных) - а уже потом наполняет его сюжетом (алгоритмами).Временами это действительно чистое творчество, где разработчик сам устанавливает собственные правила. Несмотря на то, что в мире данных и алгоритмов всё строго и логично, в нём присутствует своя красота. Любой программист может привести десятки примеров очень красивого кода, и ещё больше примеров уродливого. Программисты, как и все люди, тоже ошибаются: если где-то в исходном коде допущена ошибка, то задуманные алгоритмы могут работать неправильно. Поэтому код часто превращается в некий детектив - в котором идёт поиск очередного коварного бага, мешающего исполнению алгоритма, или нарушающего структуру данных…
- В шутку можно сказать, что в итоге получается какой-то детектив в выдуманном мире, выраженный с помощью языка программирования.
- А убийца в этом детективе - дворецкий?
- Ага, нулевой указатель. Бывает так, что весь отдел день-другой ловит особо назойливый баг, и каждый программист из отдела берёт на себя какой-то участок
кода. Получается целое расследование, с наказанием виновных и награждением сопричастных…
- Хм, а это и впрямь интересно звучит!
- Вот видишь.
- А, скажем, я могу хоть немного научиться программированию?
- Да, конечно! Я знаю один сайт специально для этого...