Здравствуйте, в этой статье мы постараемся ответить на вопрос: «Какие бывают виды программистов? Виды деятельности программиста». Если у Вас нет времени на чтение или статья не полностью решает Вашу проблему, можете получить онлайн консультацию квалифицированного юриста в форме ниже.
Система, софт, или программное обеспечение – это набор инструкций для компьютера. К ним относятся утилиты, драйвера, команды для процессора, графической карты, монитора. Пишет их системный инженер на понятном для машины языке, или коде.
Системный программист
Разрабатывается программное обеспечение под различные операционные системы, включая серверные Unix и Windows Server, а также мобильные платформы. Код пишется на языках «Си», за редким исключением Assembler. Основная задача системного инженера заключается в установке, настройке, тестировании ОС и всех ее компонентов
Различные виды профессии «программист» требуют от специалиста определенных навыков, опыта работы и уровня владения компьютерными языками. Но труд именно системных инженеров является самым сложным. Для создания ПО нужны углубленные знания информатики, алгебры, математики и построения алгоритмов.
Практически всем видам программирования можно научиться на курсах или самостоятельно. Исключение – инженер-программист. Эта профессия помимо изучения языков программирования, предполагает глубокие знания в области математики, физики, других сопутствующих дисциплин.
Инженер-программист хорошо знает математическую логику и дискретную математику, умеет применять всю эту математику на практике. Кроме того, уровень подготовки позволяет изучить различные промышленные и технологические процессы.
А потому инженеры-программисты чаще всего заняты в сфере разработок программного обеспечения для автоматизации производства: станков с ЧПУ, конвейерных линий. Они же обычно программируют бытовую технику – хлебопечки, роботы-пылесосы и т.д. В компаниях, специализирующихся на создании программных систем, часто именно инженеры-программисты становятся разработчиками, так как в отличие от «кодеров»-самоучек, эти специалисты получили глубокие знания алгоритмизации.
Основные технологии:
- Языки программирования C/C++, C#, Delphi и другие;
- Знание низкоуровневого программирования (Assembler);
- Значительный багаж технических знаний (в первую очередь, связанных с отраслью, в которой программист работает).
Rock star (Software Scientist)
Концентрированный исследователь. Такие больше похоже на классических ученых, но только от IT. Им интересны алгоритмы, теоретические исследования, концептуально новые направления в индустрии, но прежде всего — им интересно экспериментировать. Ради этих экспериментов их и нанимают, собственно. Они готовы часами копаться в сложных штуках и решать задачи, постановка которых другим людям даже не понятна. Они — эксперты в сложных вопросах. Они точно знают в каких случаях q-sort стоит заменить на heap sort и чем они отличаются, или может быть какие алгоритмы кластеризации подойдут для анализа потока биржевых котировок, а иные знают какие оптимизации используются внутри g++ и как они помогают жить. Костяк таких людей, например, способен разработать новый язык программирования и компилятор к нему. Или значительно улучшить какую-бы то ни было существующую систему. Еще они часто предрасположены к функциональному программированию. Ни на что не намекаю — просто статистическая закономерность. Кстати, говнокодить rock stars могут (особливо на стадии прототипирования идей), но в массе своей не допускают плохой код до финальных версий разрабатываемых ими вещей, стараются сделать все красиво, с комментариями и удобными программными интерфейсами.
Но.
Как всегда есть «но», которое все портит. Важно понимать что ни при каких условях эти люди не будут решать ваши задачи. То есть да — rock stars будут решать те задачи, которые интересны им. За ваши деньги. И при том — за большие деньги. И при том — не факт что будет какой-то результат. То, что ваши задачи совпали с задачами, которые интересны rock star — очень и очень большая удача и счастливое стечение обстоятельств, не более. Но если завтра rock star-у взбредет в голову контрибьютить в GHC вместо улучшения вашей сборки MySQL — то у вас будет ограниченное количество времени чтобы быстро и решительно его уволить. При попытке заставить оного вернуться к своим задачам — получите, в зависимости от темперамента и ваших soft skills, или конфликты или тихий провал сроков. Ну хорошо хорошо, чтобы людей так капитально разворачивало — это бывает редко и происходит постепенно, да. А вот обратная ситуация — если пересадить rock star с улучшения вашей сборки MySQL на улучшение GHC против его желания — бывает достаточно часто. И, как нетрудно заметить, приводит к аналогичным последствиям. И именно это обстоятельство делает rock star категорически неприемлемым для аутсорса.
Именно поэтому rock stars лучше всего чувствуют себя в продуктовых компаниях (например JetBrains), где им дают полную свободу в рамках одного продукта и полностью исключают внезапную смену скоупа задач (разве что только через увольнение). Люди получают возможность заниматься теми задачами, которые им интересны, самореализовываться, раскрываться и их при этом особо никто не дергает. Получается хорошая штука — окей, идет в релиз. Нет? Ну и черт с ним. В таких условиях rock stars пускают корни, живут весьма долго (до десятка лет) и им хорошо.
Со стороны менеджмента здесь требуется легкий и ненавязчивый контроль — так, чтобы rock star не разбредались и их не «заносило» в бесперспективные эксперименты. Ну и так же мягко доносить, что та или иная интересная ему разработка нерелевантна.
Есть другой замечательный пример работы с rock stars — это Google, в котором rock star-у дают возможность заниматься тем, что он хочет. Google их кормит, поит, одевает и защищает от внешних угроз. Взамен — все, что rock star наизобретает — будет принадлежать и продвигаться Google, превращаясь в его продукты. Fair enough. Эдакие посевные инвестиции в отдельно взятой компании.
Бэкграунд: лицей или другая хорошая школа, высшее образование в хорошем ВУЗе по IT-специальности или же математике. Круглый (хотя бы овальный) отличник. Вероятно, участие в серьезной научно-исследовательской деятельности (научные публикации как плюс) и/или олимпиадное программирование прямо со школы.
Ценит: покой (пока решает задачу), свободный ненормированный график с возможностью удаленной работы, адекватность менеджмента, возможность поработать с другими rock stars, сложные, интересные и нестандартные задачи, стабильное финансирование. Офисные плюшки или воспринимает как должное или игнорирует напрочь, но в целом не испытывает к ним особого пиетета.
Сильные стороны: сложные задачи, исследовательская деятельность, нередко проектирование.
Слабые стороны: зачастую наличествуют проблемы в коммуникации, отсутствует стрессоустойчивость, нестабильность в компании или проекте легко спугивает rock stars, жестко поставленные сроки превращаются в стресс, невозможность переключаться по предметным областям — только разве что по своему желанию. Не смотря на всю творческость, несамостоятелен за пределами своих задач.
Собеседование: алгоритмы и структуры данных, оценки сложности, олимпиадные задачи — ваши надежные друзья. Можно заставить разворачивать дерево на доске (но зачем?) — но гораздо лучше дать несложную математическую задачу. Главное не спешите и не торопите: дайте человеку подумать столько, сколько ему нужно. Творческие задачи, задачи на соображалку (ну только не про люки же!) и задачи на проектирование в формате «давайте порассуждаем» и «предложите решение» так же неплохи. В резюме смотрите на образование и публикации. Поспрашивайте про участие в олимпиадах, научно-практических конференциях, поинтересуйтесь темой дипломной работы. Если рассказывает с горящими глазами — вы нашли то, что нужно. Так же стоит удостовериться, что соискатель знает в совершенстве какой-нибудь язык программирования (любой), иначе не очень понятно как он будет реализовывать свои эксперименты.
Чего спрашивать не стоит: не задавайте глупых вопросов. К глупым вопросам относится: детали реализации чего-либо а-ля «а что делает HTTP-заголовок Content-Length?», вопросы про коммуникативные навыки и прочая психология (да, rock stars могут обладать абсолютно мерзким характером — но что поделаешь, такова плата за них), и уж тем более не заикайтесь и даже не думайте проверять стрессоустойчивость. Пунктуальность проверяйте только на уровне «не пропадает на неделю и ладно».
Пассажир (business bullshitter)
У этого типажа много «ласковых» названий в народе. Наименее квалифицированные коллеги ему подчиняются, более квалифицированные его не любят. Начальники таких обожают и дальше я объясню почему. Кратко: пассажир харизматичен. Всё. Много и красиво говорит, но катастрофически мало (или некачественно) делает. Повышенная коммуникабельность — его хлеб и зачастую пассажир попадает на менеджерские должности, так как не знает как сделать самому, но обладает достаточным ораторским талантом чтобы заставить работать кого-то вместо себя, и — более того — убедить начальника что именно он и должен руководить проектом. Во всем он демонстрирует серьезность, рвение и уверенность в себе, стремится порешать любую проблему, организовать совещание и обсудить, обязательно учитывая мнение команды. Со стороны может показаться что у него шило в известном месте. Он почти всегда на связи, всем отвечает на письма, показательно вежлив (так, что врезать порой хочется извините вырвалось) и может найти подход хоть к самому дьяволу. Один только минус — техническая квалификация. По правде говоря, ему не очень нравится программирование (вплоть до отвращения), но очень нравится покомандовать. Поэтому слабую техническую квалификацию (или её полное отсутствие) он часто «замазывает» красивыми словами, показным участием, заинтересованностью, дружелюбием и коммуникабельностью. Одна из самых страшных ошибок — ставить таких людей на средние менеджерские должности в командах. Как только вы это сделали — всё. Вы больше не получите достоверных данных о том, что происходит внутри команды с технической точки зрения. У вас будет красиво представленный бриф по происодящему, но те места, которые пассажир не понимает на техническом уровне будут из него исключены. А это в 90% случаев — скрытые проблемы и разнообразные детонаторы.
Тем не менее, грамотно подобранный пассажир может помочь команде общаться с заказчиком. Например, для пассажира ничего не стоит убедить заказчика перенести дату релиза — и при этом последний еще и будет думать что это наилучшее решение. Использовать пассажиров в роли дипломатов для заказчиков — одно удовольствие. Однако помните: харизматичные пассажиры — это как токсичный анестетик широкого спектра действия. Имеет смысл периодически опрыскивать им заказчиков, однако утечка бочки анестетика внутри команды приводит к весьма плачевным последствиям.
Бэкграунд: «лидер класса», «альфа-самец» в университете (жалко что не проверишь никак). Мистер обаяние. Образование может быть разным. Однако имейте в виду, что оценки могли получаться так же через ораторский навык. Программированием мог начать заниматься потому что интересно, но с таким обаянием у него были вещи в жизни и по-важнее. Нередко имеет свой персональный web-сайт на отдельном домене. Сделал его сам.
Ценит: все то же, что и линейный программист минус работа, плюс возможность поруководить.
Сильные стороны: коммуникабельность, способность убеждать, способность доносить информацию красочно, с шутками-прибаутками, про стрессоустойчивость лучше спрашивать отдельно
Слабые стороны: техническая квалификация. Многие технические вещи способен понимать лишь тезисно. Активен, но быстро теряет интерес и концентрацию на сложных и средних технических задачах. А в худшем случае — и вообще на любых задачах.
Собеседование: определитесь с тем нужен вам пассажир или нет. Если нет — при повышенной общительности и дружелюбности соискателя — держать ухо востро. Настоящие специалисты ведут себя спокойно. Старайтесь отсеивать красивые слова, общие утверждения, а выделять суть сказанного. Поинтересуйтесь достижениями в техническом плане. Попросите показать свой домашний проект, объяснить как он работает. Хорошо помогают те же вопросы что и для линейных программистов. Следите за тем, чтобы там, где соискатель не знает — честно говорил «не знаю», а не пускался в пространные рассуждения. Ну и тестовое задание как всегда. Если к тестовому заданию будет объемное пояснение, в коде — не продраться от комментариев и соискатель рвется объяснить как он это сделал — перед вами пассажир. Ежели пассажир вам все-таки нужен, то поинтересуйтесь как бы он объяснил заказчику срыв сроков релиза. Так же душевный разговор на предмет знания методик управления — SCRUM, PMBOK и разбор управленческих кейсов — могут возыметь положительный эффект. Но это уже история не про программирование.
Чего спрашивать не стоит: в случае с пассажиром — запретных тем нет (в рамках приличия). Если возникли подозрения на то, что перед вами пассажир — попробуйте вот что: задайте какой-нибудь вопрос, на который технический соискатель бы отказался отвечать по причине нерелевантности. Поговорите… Ну я даже не знаю. Про то, какую музыку любит соискатель, или фильмы, или игры. Или куда он ездил путешествовать. Если перед вами пассажир — то будет длинный рассказ. Если вы ошибаетесь — то вам ответят кратко и тезисно.
Тот, кто всех проверяет
После того, как мы создали свой сайт, мобильное приложение и добавили в него крутой алгоритм рекомендаций, необходимо проверить, как же работает то, что было запрограммировано.
Можно сразу выпустить свой сайт или приложение, а потом, читая разъярённые отзывы пользователей, исправлять ошибки и накатывать кучу обновлений или отвечать всем, что «это не баг, а фича!».
Такой вариант тоже возможен, но гораздо лучше позаботиться о своей репутации и заранее нанять к себе в команду человека, который займется проверкой работы вашего приложения — тестировщика. В его задачи входит написание специальных программ — тестов, которые будут автоматически проверять работу приложения. Иногда тестировщик может делать это вручную — зависит от квалификации специалиста и области работы. Его зарплата составляет примерно 80 тысяч рублей.
Кто такой программист
Программист ― узкопрофильный специалист, который занимается разработкой алгоритмов и компьютерных программ с помощью написания исходного кода, поиска ошибок и добавления функций с учетом поставленной задачи.
Разделяют три вида программистов:
- прикладные ― занимаются созданием ПО для различных компаний и организаций, разрабатывают игры‚ бухгалтерские программы‚ редакторы‚ мессенджеры, ПО для аудионаблюдения‚ пожаротушения и т.д.;
- системные ― управляют базами данных, следят за работой сетей, занимаются разработкой интерфейсов и создание операционных систем, поддерживают работу существующих систем (драйверов ‚ загрузчиков), относятся к числу самых высокооплачиваемых;
- web ― создают сайты, занимаются разработкой интернет-магазинов, соцсетей, видеохостингов, сервисов заказа и бронирования, онлайн-калькуляторов и т.д.
Как проходит обучение?
Каждый студент выполняет задания в индивидуальном темпе. Все уроки приходят в записи. Преподаватель указывает на ошибки и помогает закрепить пройденный материал. После завершения обучения и защиты дипломной работы выдается подтверждающий документ.
Необходимо ли знать английский язык?
Это не обязательно. Название функций кода легко запомнить в процессе обучения, а документация всех языков программирования переведена на русский язык.
Предусмотрено ли трудоустройство?
Некоторые онлайн-курсы оказывают помощь в трудоустройстве.
После завершения обучения у каждого студента будет создано портфолио, которое поможет эффективнее найти первый заказ или работодателя.
Если нет опыта в программировании, то стоит ли сразу идти на курсы?
Программа онлайн-курсов разработана таким образом, что даже новичок в профессии сможет ее пройти. Погружение в тему плавное, от простого к сложному.
Карьерными высотами в профессии программистов считаются должности руководителя группы, директора или менеджера IT-предприятия. Профессиональному росту могут способствовать перемещения внутри специальности – для накапливания опыта, развития навыков и умений.
Удачным началом деятельности может стать участие в крупном проекте совместно с группой опытных IT-профессионалов. Подобная работа привлекает молодых «айтишников» возможностью получить приглашение от зарубежной фирмы – переманивание молодых отечественных талантов за последнее время стало массовым явлением.
Ступени карьерного роста выглядят примерно следующим образом:
- От 0,5 до 1,5 лет – junior;
- Следующие 3 года – middle;
- Опытный сотрудник через 5-6 лет – senior.
Разработчик Fullstack
Это вид работы программиста, включающий в себя все этапы создания веб-приложения. Fullstack developer –мастер на все руки, пишущий одновременно клиентскую и серверную часть. Первые упоминания о профессии появились в 2010 году после статьи сотрудника Facebook Карлоса Буэно. С этого момента компания нанимает работников исключительно уровня Fullstack.
Обязанности универсального веб-программиста:
Фулстак-разработчики – это специалисты уровня Senior Developer. За ними охотятся хедхантеры и у них самые высокие оклады. В США зарплата Fullstack Developer начинается от 70-80 тысяч долларов и от 25-30 тысяч долларов в странах Восточной Европы. На иностранных биржах фриланса, например Upwork, один час работы Fullstack-разработчика оценивается в 30$ и выше.
Чем отличаются программисты от разработчиков?
Несмотря на то, что программисты и разработчики трудятся в одной IT-сфере, их функционал несколько различается. Если мыслить абстрактно, то разработчик – это архитектор или композитор, который создает концепцию и прорабатывает идею от начала и до конца. А программист, в этом случае, строитель, который воплощает эту идею в реальность с помощью компьютерного кода.
Хотя, довольно часто, в голове работодателя эти профессии сливаются в единый контент, смешивая функционал и ответственность.
Как бы там ни было, но выбирая сферу IT , скорее всего вам придется миксовать знания и функции программистов и разработчиков. Человек-оркестр, способный создать продукт от идеи до ее полной реализации, на рынке труда ценится гораздо выше, чем узкий специалист.
С другой стороны, на работу над масштабным проектом, работодатель скорее наймет команду узкопрофильных специалистов, что даст более качественный и быстрый результат.
Можно ли научиться программированию самостоятельно
Изучить программирование самостоятельно можно, все зависит от упорства. Как правило, на это уходит год-два.
Начать обучение можно с книг, например с «Объектно-ориентированного анализа и проектирования с примерами приложений» от Гради Буч. К слову, ООП — основа, с которой стоит начать обучение. К тому же на собеседовании могут задать вопросы по ОПП и его пониманию.
Кроме этого, есть и другие полезные книги, которые стоит прочитать всем начинающим:
- «Искусство программирования», Дональд Кнут;
- «Карьера программиста», Г. Лакман Макдауэлл
- «Сам себе программист. Как научиться программировать и устроиться в Ebay?», Кори Альтхофф
- «Путь программиста», Джон Сонмез
- «Жемчужины программирования», Джон Бентли
- «Чистый код. Создание, анализ и рефакторинг», Роберт К. Мартин
- «Алгоритмы. Построение и анализ», Томас Х. Кормен.
Дистанционно-незаменимых не бывает
По данным исследования, чаще всего в режим удаленной работы выносится разработка и внедрение ИТ-продуктов, реже всего – техническое руководство, в том числе, по продуктам. В настоящее время имеется массовый спрос на удаленку по более чем 15 профессий в области программирования на разных языках, точечный спрос на дистанционных специалистов по геймдизайну, машинному обучению, 3D-моделированию и искусственному интеллекту. В общей сложности удаленные вакансии в этой области составили 58% об их общего числа.
Достаточно высок – до 20% вакансий, спрос на дистанционных аналитиков, в том числе, на аналитиков по продукту (шестая строчка рейтинга), системным аналитикам, бизнес-аналитикам и аналитикам в области управления взаимоотношениями с клиентами (CRM) – 10,11 и 13 позиции в топ-50, соответственно.
Дистанционные веб-аналитики заняли только 38 строчку рейтинга, и лишь в десятку топ-40 вошли аналитики в области управления человеческими ресурсами, информационной безопасности и качества программного обеспечения.
Специалист по созданию и разработке компьютерных игр
Разработка компьютерных игр – одна из самых быстроразвивающихся сфер ИТ-технологий. По данным аналитического агентства NewZoo объем рынка видеоигр с каждым годом увеличивается на 9%. Если в 2021 году он составил почти 100 миллиардов долларов, то к 2021 году эта сумма увеличится до 112.5 миллиардов. Поэтому «инженер видеоигр» – это перспективная и высокооплачиваемая должность.
Инженер, или Game-разработчик – общее название категории специалистов, задействованных в процессе создания игры. Главная задача – превратить идею в программный код и заставить все элементы взаимодействовать. 90% рабочего времени программисты пишут и отлаживают алгоритмы на языке C++, Visual Basic, Java и MEL.
Романтики в профессии мало. В основном, это рутинный и многочасовой труд за компьютером. График обычно ненормированный. Если дизайнеру приходит гениальная идея срочно что-то переделать, всю ночь корпит над кодом именно программист.