Программист что такое – Профессия программист (должностные обязанности, заработная плата, как стать программистом, требования) | чем занимается инженер-программист

Содержание

Программист — это… Что такое Программист?

Программи́ст — специалист, занимающийся написанием и корректировкой программ для ЭВМ[1], то есть программированием.

Место программирования в обществе

Программирование как род занятий может являться основной профессиональной деятельностью специалиста, либо использоваться в качестве вспомогательной деятельности для решения иных профессиональных задач, либо же использоваться в непрофессиональной сфере (как инструмент решения задач или ради получения удовольствия от процесса программирования). Термин «программист» не обязательно подразумевает профессиональное образование или профессиональную деятельность.

Образование

Как основная профессиональная деятельность программирование используется в технической и в научной областях.

В технике выделяются средняя техническая квалификация техник-программист (ранее «программист-лаборант») и высшая техническая квалификация инженер-программист. Предметом деятельности специалистов с соответствующей квалификацией (техников и инженеров) является проектирование, разработка и производство программного обеспечения, как промышленной продукции, удовлетворяющей заданным функциональным, конструктивным и технологическим требованиям (результатом деятельности является программное обеспечение). В России подготовка инженеров-программистов ведётся по профилю подготовки «Программное обеспечение вычислительной техники и автоматизированных систем» направления «Информатика и вычислительная техника»

[2].

Существует подготовка математиков-программистов по направлению «Математическое обеспечение и администрирование информационных систем»[3].

В конце 2000-х в России появилось новое направление подготовки программистов «Программная инженерия»[4]. Областью профессиональной деятельности выпускников по этому направлению является индустриальное производство программного обеспечения. Данное направление подготовки отличается от подготовки инженеров-программистов по профилю «Программное обеспечение вычислительной техники и автоматизированных систем» тем, что общеинженерные дисциплины заменены дисциплинами из новой области знания инженерия программного обеспечения. Объектами профессиональной деятельности инженеров по производству программного обеспечения являются не программы и программные комплексы, а

методы и инструменты разработки программного продукта, а также процессы жизненного цикла программного продукта.

Предметом деятельности программистов в науке является решение задач с применением методов прикладной математики и реализацией на ЭВМ (результатом деятельности является полученное при помощи программы решение задачи). В России ведётся подготовка специалистов по специальностям 010200 «Прикладная математика и информатика» и 073000 «Прикладная математика».

Как вспомогательная деятельность программирование в настоящее время используется в широчайшем круге профессий.

Самообразование

В связи со значительным распространением в современном обществе вычислительной техники и, соответственно, программирования как рода деятельности в настоящее время потребность в профессиональных программистах в развитых странах (в том числе в России) значительно превосходит возможности высшего образования по подготовке на соответствующих специальностях, при этом предъявляемые квалификационные требования в бизнесе в большинстве случаев значительно у́же, чем подготовка по специальности в вузе (см. напр.

[5]). В связи с этим, очень широко распространено самообразование программистов и профессиональная деятельность в области программирования без получения формального образования по соответствующей специальности.

Словоупотребление

Как указано выше, с точки зрения корректной терминологии человек может иметь (например) род занятий «программист», квалификацию «инженер-программист», специальность «программное обеспечение вычислительной техники и автоматизированных систем» и должность «ведущий специалист». В разговорной речи, однако, слово «программист» нередко употребляется применительно ко всем этим понятиям.

По ошибке программистами порой называют системных администраторов и других специалистов ИТ.

Прикладные и системные программисты

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

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

[источник не указан 292 дня]

Команда программистов

Проблемы с содержанием статьиДанный раздел имеет чрезмерный объём или содержит маловажные подробности.

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

В профессии программиста важные и сложные проекты выполняются в команде. Существуют следующие типы команд :

История

Возникновение программирования как рода занятий и, особенно, как профессиональной деятельности трудно датировать однозначно.

Часто первым программируемым устройством принято считать жаккардовый ткацкий станок, построенный в 1804 году Жозефом Мари Жаккаром, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт.

Первое программируемое вычислительное устройство, Аналитическую машину, разработал Чарльз Бэббидж (но не смог её построить). 19 июля 1843 года графиня Ада Августа Лавлейс, дочка великого английского поэта Джорджа Байрона, как принято считать, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости.

В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили свое принципиальное значение и для современного программирования. В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950-х годах.

Однако ни одна из программ, написанных Адой Лавлейс, никогда так и не была запущена.

Аду Августу, графиню Лавлейс, принято считать почётным первым программистом (хотя, конечно, написание одной программы по современным меркам не может считаться родом занятий или профессиональной деятельностью). История сохранила её имя в названии универсального языка программирования «Ада».

Первый работающий программируемый компьютер (1941 год), первые программы для него, а также (с определёнными оговорками) первый язык программирования высокого уровня Планкалкюль создал немецкий инженер Конрад Цузе.

Имена людей, впервые начавших профессионально выполнять работу собственно по программированию (в отрыве от наладки аппаратуры компьютера), история не сохранила, так как поначалу программирование рассматривалось как второстепенная наладочная операция.

Профессиональный праздник

В 2009 году в России официально утвержден день программиста, который ежегодно празднуется 13 сентября (в високосный год — 12 сентября) — то есть празднование

Дня Программиста приходится на 256 день года. Эта цифра не случайная: она получается от возведения двойки в восьмую степень. Именно такое количество чисел можно выразить с помощью одного восьмиразрядного байта.[6]

Интересные факты

  • Про программистов и хакеров есть много анекдотов, в которых высмеивается их оторванность от жизненных реалий и склонность следовать алгоритмам и в жизни.
  • На ежегодно проводимом международном чемпионате по программированию ACM ICPC команды, представляющие российские и украинские вузы, традиционно занимают призовые места, а чемпионами становились в общей сложности больше шести раз[7][8][9].

Примечания

Литература

Программист — Википедия. Что такое Программист

Программи́ст — специалист, занимающийся непосредственной разработкой программного обеспечения для различного рода вычислительно-операционных систем.

Место программирования в обществе

Программирование, как род занятий, может являться основной профессиональной деятельностью специалиста, либо использоваться в качестве вспомогательной деятельности для решения иных профессиональных задач, либо же использоваться в непрофессиональной сфере (как инструмент решения задач или ради получения удовольствия от процесса программирования). Термин «программист» не обязательно подразумевает профессиональное образование или профессиональную деятельность.

Образование

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

В технике выделяются: средняя техническая квалификация техник-программист (ранее «программист-лаборант») и высшая техническая квалификация инженер-программист. Предметом деятельности специалистов с соответствующей квалификацией (техников и инженеров) является проектирование, разработка и производство программного обеспечения, как промышленной продукции, удовлетворяющей заданным функциональным, конструктивным и технологическим требованиям (результатом деятельности является программное обеспечение). В России подготовка инженеров-программистов ведётся по профилю подготовки «Программное обеспечение вычислительной техники и автоматизированных систем» направления «Информатика и вычислительная техника»

[1].

Существует подготовка математиков-программистов по направлению «Математическое обеспечение и администрирование информационных систем»[2].

В конце 2000-х в России появилось новое направление подготовки программистов «Программная инженерия»[3]. Областью профессиональной деятельности выпускников по этому направлению является индустриальное производство программного обеспечения. Данное направление подготовки отличается от подготовки инженеров-программистов по профилю «Программное обеспечение вычислительной техники и автоматизированных систем» тем, что общеинженерные дисциплины заменены дисциплинами из новой области знания инженерия программного обеспечения. Объектами профессиональной деятельности инженеров по производству программного обеспечения являются не программы и программные комплексы, а

методы и инструменты разработки программного продукта, а также процессы жизненного цикла программного продукта.

Предметом деятельности программистов в науке является решение задач с применением методов прикладной математики и реализацией на ЭВМ (результатом деятельности является полученное при помощи программы решение задачи).

В России подготовка специалистов в этой области ведется по следующим направлениям:

  • 01.03.02 «Прикладная математика и информатика»
  • 02.03.02 «Фундаментальная информатика и информационные технологии»
  • 02.03.03 «Математическое обеспечение и администрирование информационных систем»
  • 09.02.03 «Программирование в компьютерных системах»
  • 09.03.01 «Информатика и вычислительная техника»[1]
  • 09.03.02 «Информационные системы и технологии»
  • 09.03.03 «Прикладная информатика»
  • 09.03.04 «Программная инженерия»[3]
  • 10.03.01 «Информационная безопасность»
  • 10.05.03 «Информационная безопасность автоматизированных систем»
  • 38.03.05 «Бизнес-информатика»

Как вспомогательная деятельность программирование в настоящее время используется в широчайшем круге профессий.

Самообразование

В связи со значительным распространением в современном обществе вычислительной техники и, соответственно, программирования как рода деятельности в настоящее время потребность в профессиональных программистах в развитых странах и странах третьего мира значительно превосходит возможности высшего образования по подготовке на соответствующих специальностях, при этом предъявляемые квалификационные требования в бизнесе в большинстве случаев значительно у́же, чем подготовка по специальности в вузе (см. напр.[4]). В связи с этим, очень широко распространено самообразование программистов и профессиональная деятельность в области программирования без получения формального образования по соответствующей специальности, а специалистам, получившим программистские специальности, необходимо постоянно совершенствовать свои знания и умения и оперативно осваивать новые технологии.

Словоупотребление

Как указано выше, с точки зрения корректной терминологии человек может иметь (например) род занятий «программист», квалификацию «инженер-программист», специальность «программное обеспечение вычислительной техники и автоматизированных систем» и должность «ведущий специалист». В разговорной речи, однако, слово «программист» нередко употребляется применительно ко всем этим понятиям.

По ошибке программистами порой называют системных администраторов и других специалистов ИТ.

Прикладные и системные программисты

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

История

Возникновение программирования как рода занятий и, особенно, как профессиональной деятельности трудно датировать однозначно.

Первыми аналогами программируемых устройств были музыкальная шкатулка и шарманка, программа записывалась на вращающийся вал. Тот же принцип двоичной системы, как и на перфокарте: звук воспроизводился выступом на валу («кулачком»), нет выступа — нет звука, кроме того, шарманка предусматривала смену программ и имела 6-8 запрограммированных мелодий.

Первым программируемым устройством принято считать жаккардовый ткацкий станок, построенный в 1804 году Жозефом Мари Жаккаром, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт.

Первое программируемое вычислительное устройство, Аналитическую машину, разработал Чарльз Бэббидж (но не смог её построить). 19 июля 1843 года графиня Ада Августа Лавлейс, дочка великого английского поэта Джорджа Байрона, как принято считать, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости.

В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили своё принципиальное значение и для современного программирования. В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950-х годах.

Однако ни одна из программ, написанных Адой Лавлейс, никогда так и не была запущена.

Аду Августу, графиню Лавлейс, принято считать почётным первым программистом (хотя, конечно, написание одной программы по современным меркам не может считаться родом занятий или профессиональной деятельностью). История сохранила её имя в названии универсального языка программирования «Ада».

Первый работающий программируемый компьютер (1941 год), первые программы для него, а также (с определёнными оговорками) первый язык программирования высокого уровня Планкалкюль создал немецкий инженер Конрад Цузе.

Имена людей, впервые начавших профессионально выполнять работу собственно по программированию (в отрыве от наладки аппаратуры компьютера), история не сохранила, так как поначалу программирование рассматривалось как второстепенная наладочная операция.

Профессиональный праздник

В 2009 году в России официально утверждён день программиста, который ежегодно празднуется 13 сентября (в високосный год — 12 сентября) — празднование Дня Программиста установлено на 256-й день года.[5] Это число не случайно: оно получается от возведения числа 2 в восьмую степень и отражает количество различных значений, которое можно сохранять в одном байте.

Интересные факты

  • Про программистов и хакеров есть много анекдотов, в которых высмеивается их оторванность от жизненных реалий и склонность следовать алгоритмам и в жизни[6].
  • На ежегодно проводимом международном чемпионате по программированию ACM ICPC команды, представляющие российские и украинские вузы, традиционно занимают призовые места, а чемпионами становились в общей сложности больше шести раз[7][8][9].
  • Профессия входит в список ТОП-50 самых востребованных профессий по версии Минтруда РФ[10].

Примечания

Литература

Словарь программиста. Сленг, который должен знать каждый кодер | Программирование

  Обновл. 18 Янв 2020  | 

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

Примечание: Здесь собрано 220+ слов. Просьба: если вы не нашли слово, которое, по вашему мнению, используется в обиходе программистов и просто людей из сферы IT или какое-то слово я неверно истолковал — сообщите об этом в комментариях, буду вам очень признателен.

А

   Ава (или ещё «аватарка«, от англ. «avatar») — графическое представление (картинка/фото/изображение) человека в Интернете/соц.сетях/мессенджерах/играх и т.д.

   Админ (от англ. «admin») — администратор.

   Айди (от англ. «identificator») — идентификатор.

   Айпи (или ещё «Айпишник», «Айпи-адрес», от англ. «Internet Protocol Address») — уникальный адрес компьютера в сети Интернет. Этот адрес каждому компьютеру присваивает провайдер, который предоставляет устройству выход в Интернет.

   Айти (или ещё «АйТи«, от англ. «IT» = «Information Technologies») — информационные технологии.

  Айти-евангелист (или ещё «IT-проповедник/пропагандист») — человек, который занимается пропагандой (нередко профессионально) в сфере IT.

   Айтишник (он же «айтишнег», «ойтишнег», «ойтишник») — специалист в информационных технологиях. Нередко айтишниками называют всех программистов и просто продвинутых пользователей компьютеров, и Интернета.

   Ака (точнее a.k.a, от англ. «also known as») — если дословно, то «ещё известен как». Другими словами, никнейм, псевдоним.

   Аноним (или ещё «анонимус», «анон», от англ. «anonym/anonymous») — человек, скрывающий своё настоящее имя.

   Апгрейд (от англ «upgrade») — обновление/модернизация аппаратного обеспечения (железа).

   Апдейт (от англ «update») — обновление/модернизация программного обеспечения (софта).

   Апликуха (от англ. «application») — прикладное программное обеспечение. Например, компьютерная программа или мобильное приложение.

   Апрув (от англ. «approve») — подтверждение, согласие, одобрение чего-либо.

   Апрувить (или ещё «заапрувить«) — подтверждать, давать добро на выполнение чего-либо.

   Аттачить (от англ. «attach») — прикреплять (например, файл или фото/скриншот к письму).

   Аутсорс (от англ. «outsource») — передача предприятием/компанией выполнение определенной работы специалистам вне штата (фрилансерам или работникам других компаний). Например, есть специализированные конторы бухгалтеров, которые обслуживают десятки других компаний на аутсорсе, не являюсь сотрудниками этих компаний.

Б

   Баг (от англ. «bug») — ошибка в программе/коде, из-за которой результаты выполнения программы неправильные.

   Багрепорт (от англ. «bug report») — сообщение или отчёт об ошибке с её описанием, причиной возникновения, приоритетом и прочими свойствами.

   Бан (от англ. «ban») — лишение или ограничение каких-либо прав пользователя (например: оставлять комментарии, просматривать определённые страницы и т.д.). Пожизненный бан — исключение пользователя из системы/игры/сайта/группы и т.д.

   Батник — командный файл с расширением .bat. Используется для работы с командной строкой в Windows.

   Баян — шутка/информация, которая ранее уже была опубликована/известна.

   Бенефит (от англ. «benefit») — непрямое денежное или другое нематериальное вознаграждение, которое чаще всего используется для мотивации сотрудников. Другими словами, бонус.

   Бенч (от англ. «bench») — лавка/скамейка или, чаще всего, режим ожидания. Выражение «программист на бенче» означает, что программист простаивает вхолостую в ожидании нового проекта/задания и, по факту, ничего не делает, но получает зарплату.

   Биткоин (от англ. «bitcoin») — криптовалюта, электронная валюта, поколение цифровых денег, которые никем не контролируются и существуют только в Интернете.

   Битый — нерабочий. Например, битые ссылки = ссылки, которые ведут на несуществующие страницы. Пользователю, при попадании на такую страницу, выведется ошибка 404 (Error 404).

   Блокчейн (от англ. «blockchain») — система учёта проводимых транзакций с криптовалютой.

   Болванка — чистый, не записанный, компакт-диск.

   Браузер (от англ. «browser») — программа, с помощью которой можно просматривать веб-страницы или, другими словами, выходить в Интернет.

   Брейншторм (от англ. «brainstorm») — способ генерации новых идей или решения существующих проблем путём мозгового штурма.

   Буржунет — зарубежная (не русскоязычная) часть Интернета. Очень часто под этим термином подразумеваются англоязычные сайты из Европы и США.

   Бэкап (от англ. «backup») — резервное копирование. Создание резервной копии проекта/сайта/данных, чтобы в случае непредвиденных обстоятельств/сбоя можно было бы вернуть всю систему в прежнее состояние. Хорошей практикой является регулярное обновление и хранение бэкапов в нескольких местах (не только на рабочем компьютере).

   Бэкенд (от англ. «back-end») — разработка «внутренней части» сайтов/программ/приложений. Та часть, которую мы не видим (то, что творится под капотом). Детальнее здесь.

В

   Валидный (от англ. «valid») — корректный/действительный. Тот, который соответствует требованиям/условиям/правилам.

   Варез (от англ. «warez») — любая интеллектуальная собственность или программное обеспечение, которое свободно распространяется в сети Интернет, нарушая при этом права правообладателя.

   Варезник — сайт, который распространяет варез (пиратское программное обеспечение, пиратские фильмы/музыку и т.п.). Обычно, термин «варезник» применяется к сайтам-файлообменникам.

   Вебинар (от англ. «web based seminar») — это семинар, презентация или лекция на определённую тему, которая проходит онлайн, в режиме реального времени, в Интернете. Под этим термином также подразумевают и запись вебинара, который проходил ранее.

   Видюха (или ещё «видяха») — видеокарта.

   Виндоус (или ещё «Винда») — операционная система Windows.

   Виндузятник — пользователь операционной системы Windows (см. сарказм).

   Винт (или ещё «хард») — винчестер, он же «жёсткий диск», он же «HDD».

   Воркшоп (от англ. «workshop») — обучающее мероприятие для работников из определённой области деятельности (программистов, фотографов, дизайнеров и т.д.). Есть главный «ведущий» работник, который проводит обучение других. Есть задание и все работники, вместе с «ведущим», его выполняют, при этом общаясь и помогая друг другу.

   Выёбщик — человек, работающий в IT/программировании с завышенным ЧСВ, который всегда выражает своё экспертное мнение, нередко в неподходящих случаях и не уважает мнения окружающих (очень часто даже не удосуживается их выслушать). Другими словами, выпендрёжник.

Г

   Галера — компания/предприятие/организация, в которой трудится программист. В основном галера применяется к компаниям, где практикуется плохое отношение к работникам.

   Геймдев (от англ. «game development») — разработка/создание игр.

   Геймер (от англ. «gamer») — игрок.

   Гиг (или ещё «гектар«) — гигабайт.

   Гик (от англ. «geek») — человек, который хорошо разбирается в определённой сфере деятельности, являясь фанатиком своего дела. Сейчас под гиками очень часто подразумевают именно программистов.

   Глюк — непонятный сбой, задержка, торможение процессов в программе/игре.

   Говнокод — плохой код, в котором сложно разобраться и который сложно поддерживать/модифицировать/изменять.

   Говнокодер — человек, который пишет говнокод.

   Гребцы — работники галеры (компании).

   Гуглить — искать информацию в поисковике Google.

Д

   Дебажить (от англ «debug/debugging») — искать и исправлять ошибки в программе.

   Девайс (от англ. «device») — техническое устройство (ноутбук/смартфон/планшет/умные часы и т.д.).

   Девелопер (от англ. «developer») — разработчик.

   Девелопмент (от англ. «development») — разработка чего-либо: программ, приложений, игр и т.д.

   Дедлайн (от англ. «deadline») — крайний срок выполнения или сдачи проекта/задания/работы.

   Дезигнер (от англ. «designer») — дизайнер.

   Демка (от англ. «demo») — демонстрационная версия чего-либо, как правило, с урезанным функционалом или с пробным периодом использования.

   Деплой (или ещё «задеплоить», от англ. «deploy») — это развёртывание (перенос) программного обеспечения (исполняемого кода) на сервер или устройство, где оно будет работать.

   Дефолтный (или ещё «по дефолту», от англ. «default») — тот, что используется по умолчанию, стандартный.

   Джуниор (или ещё «джун», «июнь», от англ. «Junior Developer») — начальный уровень программиста. Человек, имеющий минимальный опыт и навыки.

   Домен (от англ. «domain») — уникальный адрес/имя сайта в Интернете. Например, ravesli.com — это домен, который состоит из доменного имени ravesli и домена первого уровня .com.

   Дрова — драйверы.

Ж

   Железо — аппаратное обеспечение (комплектующие) компьютеров/ноутбуков/смартфонов и т.д.

З

   Задрот — человек, который слишком много времени уделяет виртуальной реальности (будь то игры, программирование или ещё что-либо). Также иногда под этим термином подразумевают фанатиков своего дела (не зависимо от специальности), которые не всегда хорошо приспособлены к условиям реальной жизни.

   Законнектиться (или ещё «подконнектиться», «приконнектиться», от англ. «connect») — присоединиться к чему-либо.

   Запилить (или ещё «залить«, «слить«) — загрузить, выставить на всеобщее обозрение. Например, запилил видосик в YouTube = загрузил видео в YouTube.

   Зафакапить — не справиться с выполнением поставленной задачи, испортить задание.

   Зашквар — позор, гнусное поведение.

И

   Имхо (от англ. «IMHO» = «In My Humble Opinion») — по моему скромному мнению.

   Инет — Интернет.

   Инсталлировать (от англ. «install») — устанавливать. Например, инсталлировать Винду = установить Windows.

   ИТ Информационные Технологии.

К

   Кастомер (от англ. «customer») — покупатель, клиент или заказчик.

   Кейс (от англ. «case») — реальная ситуация/случай, которые произошли с автором.

   Килобаксы — тысячи долларов. Приставка кило = k (с англ. означает «тысяча»).

   Кирпич — неработающее устройство (например, телефон).

   Клава — клавиатура.

   Коворкинг (от англ. «coworking») — место для организации труда специалистами одной или сразу нескольких сфер деятельности, фрилансеров. Другими словами, современный арендованный офис для работы специалистов.

   Кодер (или ещё «кодерок», от англ. «coder») — программист.

   Кодить — программировать.

   Коммитить (или ещё «закоммитить», «сделать коммит», от англ. «commit») — сохранить/зафиксировать изменения кода в репозитории (хранилище) кода.

   Компиляция — конвертация кода, написанного на высокоуровневом языке, в исполняемую программу, которую процессор понимает напрямую. Детальнее об этом здесь.

   Компилятор — программа, которая выполняет компиляцию.

   Компуктер (или ещё «компудахтер», «компутер») — компьютер.

   Конфа — конференция, групповое общение. Второе значение — конфигурационный файл программного обеспечения, в котором можно изменять настройки этого же программного обеспечения.

   Копипаст (от англ. «copy/paste») — скопировать и вставить. copy — скопировать, paste — вставить.

   Костыль — исправление серьезных багов/дыр/ошибок без должного исправления целой системы. Т.е. решение на коленке в кратчайшие сроки в ущерб эффективности и хорошим практикам программирования.

   Кракозябры (или ещё «крякозябры») — набор непонятных символов, бессмыслица. Возникает в результате неправильной кодировки. Иногда кракозябры можно наблюдать на сайтах с неверной кодировкой: Привет! Меня.

   Кресты — язык программирования С++.

   Крипово — страшно.

   Кроссплатформенный — тот, который не зависит от аппаратных платформ и операционных систем (например, может работать как на Windows, так и на Linux).

   Кряк (или ещё «таблетка», от англ. «crack») — специальная программа или дополнение к программе для взлома другого программного обеспечения. В основном используется для превращения лицензионной (платной) версии чего-либо (программы/игры) в бесплатную.

   Кулхацкер (от англ. «cool hacker») — человек, считающий себя хакером или опытным программистом, не являясь таковым в реальной жизни.

Л

   Лаг (или ещё «лаги») — задержка в выполнении программы/игры, отсутствие реагирования на действия пользователя. Синоним к слову глюк.

   Лайфхак (от англ. «lifehack») — полезный совет, помогающий решить какую-то проблему с экономией времени/усилий.

   Ламер (от англ. «lamer») — неопытный пользователь, человек, который не разбирается в чём-то, но думает, что разбирается. Не путать с «чайником».

   Левел (от англ. «level») — уровень.

   Ликбез ликвидация безграмотности. Обучение азам, основам.

   Линк (от англ. «link») — ссылка на какой-либо ресурс.

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

   Линуксоид — человек, который пользуется операционной системой Линукс (Linux).

   Лицуха — лицензия.

   Лог (от англ. «log») — журнал, в котором записываются в хронологическом порядке все выполненные действия в чём-либо (в программе, на сервере). Например: время возникновения ошибок, сбоев, действия пользователей и т.д.

   Локалка — локальная сеть компьютеров, соединённых кабелями.

   Локейшн (от англ. «location») — месторасположение.

   Лэптоп (от англ. «laptop») — ноутбук.

М

   Майнинг (от англ. «mining») — добыча чего-либо. Сейчас майнинг ассоциируется с добычей криптовалюты, путём выполнения компьютером сложных математических операций.

   Мамка (или ещё «мать», «материнка», «мазерборд») — материнская плата.

   Манагер (от англ. «manager») — менеджер, руководитель.

   Мануал (от англ. «manual») — руководство, инструкция по использованию чего-либо.

   Ментор (от англ. «mentor») — наставник/учитель.

   Мидл (от англ. «Middle Developer») — средний уровень знаний и навыков программиста.

   Митап (от англ. «meetup») — собрание/встреча специалистов определённой сферы деятельности для обмена опытом, в образовательных целях или просто для общения в неформальной обстановке.

   Моник — монитор.

   Мониторить — наблюдать за чем-либо, отслеживать какие-либо процессы.

   Мусорка — корзина.

   Мыло — адрес электронной почты, E-mail пользователя.

Н

   Нативный (от англ. «native») — родной. Часто используют словосочетание нативный код = исходный код (не модифицированный позже), написанный разработчиками.

   Нетворкинг (от англ. «networking») — окружение специалистов определённой сферы деятельности, где, используя связи между этими людьми, можно решить специфические проблемы/задачи или просто познакомиться для совместного сотрудничества.

   Ноулайфер — человек, который большинство своего времени проводит за компьютером/ноутбуком/смартфоном в виртуальном мире (Интернет/соц.сети/игры). Человек, не имеющий личной жизни, хобби или каких-либо других занятий в реальном мире.

   Ноут — ноутбук.

   Нуб (или ещё «нубчик», «нубас», «нубарь», «нубак», от англ «newbie») — новичок или человек у которого ничего не получается, или он не знает, как правильно что-то сделать. Неопытный.

О

   Овертайм (от англ. «overtime») — переработка после окончания рабочего дня. Сверхурочные часы.

   Околоайтишник (от русск. «околофутболист») — человек, который не является айтишником/программистом, но работает в сфере IT/программирования. Например, специалист по кадрам (HR), бухгалтер, финансист.

   ООП (сокр. от «Объектно-Ориентированное Программирование») — методология/парадигма программирования, в которой основными концепциями являются объекты и классы. Детальнее об этом здесь.

   Опенсорс (от англ. «open source software») — программное обеспечение/софт с открытым исходным кодом, который может использовать/дополнять/изменять любой желающий. В большинстве случаев это программное обеспечение является некоммерческим проектом.

   Опенспейс (от англ. «open space») — офис открытого типа, где сотрудники работают в одном помещении (относительно большом) без каких-либо перегородок/стен.

   Оперативка — оперативная память, она же «RAM» = «Random Access Memory», она же «ОЗУ» = «Оперативное Запоминающее Устройство».

   ОС (или ещё «OS» сокр. от англ. «Operating System», или ещё «операционка«) = Операционная Система — программное обеспечение, которое позволяет управлять аппаратной частью компьютеров/ноутбуков/смартфонов и т.д.

   Откат — возвращение на исходную позицию из бэкапа.

   Отконнектиться (от англ. «disconnect») — отсоединиться.

   Отладка — этап в разработке программного обеспечения, на котором выполняется поиск и исправление ошибок. Детальнее об этом здесь.

   Отладчик (или ещё «дебаггер», от англ. «debugger») — программа, с помощью которой выполняется отладка.

   Оффтоп (или ещё «оффтопик», от англ. «off topic») — любое сообщение мимо кассы (т.е. не по теме).

   Очепятка — опечатка, ошибка в слове.

П

   Патч (от англ. «patch») — дополнение или обновление, которое исправляет ошибки/баги/глюки. Применение патча к программе называют пропатчиванием.

   Песочница (от англ. «sandbox») — специальная область/среда для безопасного выполнения программы. Раздел «Песочница» на сайте обозначает категорию для записей новичков (своеобразный фильтр для новоприбывших).

   Пиратка (от слова «пиратский«) — нелицензионное программное обеспечение или операционная система.

   Плюшки — бонусы. Очень часто относятся к условиям работы: гибкий график, наличие спортзала, кухни, комнаты отдыха и т.д.

   Плюсы — язык программирования С++.

   ПО — программное обеспечение.

   Подкаст (от англ. «podcast») — видео или аудио уроки, рассказы на определённую тему, чаще всего образовательного характера. Сейчас очень популярны подкасты-интервью или подкасты TED.

   Пост (от англ. «post») — запись/статья/информационная заметка.

   Прога — программа.

   Прогер — программист.

   Профан — человек, который не имеет опыта в определённой сфере или не разбирается в чём-то.

   Профит (от англ. «profit») — прибыль/выгода/польза.

   Пушить (или ещё «запушить», от англ. «push») — публикация на сервер с помощью команды push.

Р

   Разраб — разработчик.

   Рандом (или ещё «рандомный«, от англ. «random«) — произвольный, случайный.

   Ребзя — ребята.

   Ребутнуть (или ещё «ребутить», от англ. «reboot») — перезагружать. Например, ребутнуть Винду = перезагрузить Windows.

   Редизайн (от англ. «redesign») — внешнее обновление/модернизация системы/сайта/интерфейса. Иногда под этим термином подразумевается и внутреннее обновление/модернизация.

   Релиз (от англ. «release») — представление готовой версии продукта (игры/программы/песни/альбома), выпуск на всеобщее обозрение. Например, релиз игры = выпуск игры для старта продаж.

   Рисёрч (или ещё «ресерч«, от англ. «research») — исследование, изучение какой-то темы. Когда вас просят сделать рисёрч на какую-то тему, то имеется в виду, что вы должны разобраться с этой темой, изучить её суть, нюансы и детали.

   Рунет — русскоязычный Интернет. Совокупность сайтов с контентом на русском языке.

С

   Сабж (или ещё «сабжект», от англ. «subject») — тема для дискуссии между людьми на определённом ресурсе (чаще всего, на форуме). Тема для начала разговора.

   Саппорт (от англ. «support») — служба поддержки.

   Свитчер (от англ. «switcher») — человек, который перешёл работать в IT/программирование из другой профессии. Например, если человек раньше работал учителем или поваром, а затем стал программистом, то он считается свитчером.

   Сейвить (от англ. «save») — сохранить изменения.

   Сеньор (или ещё «сеньор-помидор», «сеньйор», «сениор», от англ. «Senior Developer») — высокий уровень знаний и навыков специалиста. Опытный программист.

   Сервак — сервер.

   Сижка — язык программирования С.

   Сисадмин — системный администратор.

   Системник — системный блок.

   Скилл (или ещё «скиллы», «скилы», от англ. «skill») — навыки, умение хорошо что-то делать.

   Скипнуть (от англ. «skip«) — пропустить или пролистать. Можно скипнуть рекламу, или ознакомление с чем-либо и сразу перейти к необходимой части продукта.

   Скрин (или ещё «скриншот», от англ. «screenshot») — снимок экрана.

   Скрипт (от англ. «script«) — это программный файл сценария (кусок кода), который автоматизирует некоторую задачу, которую пользователь делал бы вручную.

   Слоупок — медленный, тормоз. Название произошло от розового покемона Slowpoke.

   Смузи — любимый напиток программистов/айтишников (см. сарказм).

   Смузихлёб — программист-выёбщик.

   Сниппет (от англ. «snippet») — фрагмент/кусочек текста/кода/чего-либо.

   Софт (от англ. «software») — программное обеспечение, программа.

   Софт скиллы (от англ. «soft skills») — социальные/коммуникационные/личностные навыки/качества, необходимые, в первую очередь, для адаптации и работы в коллективе.

   Спам (от англ. «spam») — электронные письма/сообщения рекламного и иного характера пользователям, не желающих и не согласившихся их получать.

   Спамить — отправлять спам.

   Спрайт (от англ. «sprite«) — графический объект в компьютерной графике (детальнее об этом здесь).

   Стрим (от англ. «stream») — трансляция действий, происходящих на компьютере (или в реальной жизни) в режиме реального времени.

   Стримить — делать стрим.

   Стример — тот, кто делает стрим.

Т

   Технарь — человек, имеющий специальное техническое образование или сотрудник, который работает в бэкенде (бэкенд-разработчик).

   Тимлид (или ещё «тимлидер», от англ. «team leader») — ведущий разработчик, лидер команды программистов.

   Трейни (от англ. «trainee») — стажёр, работник, который не дотягивает до уровня Junior-специалиста.

   ТС (или ещё «топик стартер», от англ. «topic starter») — человек, который вынес на обсуждение определённую тему. Тот, кто начал разговор/дискуссию.

   Тулза (от англ. «tools») — вспомогательное программное обеспечение, предназначенное для выполнения специфических задач. Синоним к слову утилита.

   Туториал (от англ. «tutorial») — сборник уроков для обучения чему-либо, учебник.

   Тян — подруга, девушка.

У

   Утилита (или ещё «утилитка», от англ. «utility») — вспомогательное программное обеспечение, предназначенное для выполнения вспомогательных работ, настройки системного оборудования, операционных систем и прочего. Другими словами, программа, которая помогает что-то сделать.

Ф

   Фаервол (от англ. «firewall») — антивирус (антивирусник), который защищает компьютер от вирусов. С английского означает «горящая стена» — здесь следует понимать стену, которая защищает другие здания от распространения пожара. Другое название — Brandmauer (в переводе с немецкого тоже означает «горящая стена»).

   Факап (от англ. «fuck up») — неудача, провал, облом. Зачастую подразумеваются более-менее серьёзные ошибки.

   Фидбек (от англ. «feedback») — обратная связь. Например, пользовательский фидбек = обратная связь от пользователей. Под обратной связью подразумеваются любые упоминания, отзывы, комментарии, сообщения о бренде/компании/сайте.

   Фиксить (от англ. «fix») — исправлять ошибки.

   Фича (от англ. «feature») — особенность, уникальная возможность, свойство. Популярное выражение: «Это не баг, а фича».

   Флейм (или ещё «флэйминг», от англ. «flame») — спор ради спора, когда пользователи начинают общение не по теме разговора/дискуссии и переходят на личностные и взаимные оскорбления.

   Флеха (или ещё «флэха», «флешка») — запоминающее устройство, подключаемое к компьютеру по интерфейсу USB.

   Флуд (от англ. «flood») — сообщения/комментарии не по теме.

   Флудить — оставлять нетематические сообщения/комментарии.

   Формошлёп — человек, который занимается формошлёпством. Очень часто формошлёпами называют тех, кто разрабатывает шаблоны сайтов или занимается их вёрсткой.

   Формошлёпство — любая низкоквалифицированная работа в программировании и ИТ для которой требования к опыту и знаниям — минимальные.

   Фреймворк (от англ. «framework») — программный продукт/система/платформа, основная цель которой — облегчение/упрощение создания и поддержки разного рода проектов/приложений/сервисов/сайтов.

   Фриланс (от англ. «freelance») — работа из дому, вне штата, иногда на себя, которая приносит деньги и в которой нет постоянного заказчика/начальника.

   Фрилансер (от англ. «freelancer») — человек, который занимается фрилансом.

   Фронтенд (от англ. «front-end») — разработка «внешнего вида» сайта, клиентская часть. То, что мы видим снаружи. Детальнее здесь.

Х

   Хакатон (от англ. «hack marathon») — мероприятие, на котором собираются специалисты из разных отраслей разработки программного обеспечения (чаще всего программисты, но могут быть и дизайнеры, тестеры) для разработки определённого решения/проекта/приложения/программы. Другими словами, марафоны программирования, на которые собираются программисты попрограммировать.

   Хард скиллы (от англ. «hard skills») — технические знания и навыки.

   Холивар (от англ. «holy war») — споры между людьми, которые имеют противоположные взгляды и пытаются навязать их друг другу.

   Хрюша (или ещё «HR», от англ. «Human Resources») — специалист по кадрам, рекрутёр. Человек, который ищет работников на вакансии, проводит с ними первичные интервью, адаптацию в коллективе и выполняет ряд других сопутствующих вопросов.

Ц

   ЦП — центральный процессор (он же «проц» или «процик«).

Ч

   Чайник — новичок, неопытный пользователь.

   Чекать (или ещё «прочекать», от англ. «check») — что-то проверить, изучить.

   Челлендж (от англ. «challenge») — вызов или проблема (зачастую нетривиальная), с которой ранее не сталкивались.

   ЧСВ — Чувство Собственной Важности.

Ш

   Шерить (или ещё «расшарить», от англ. «share») — делиться, давать доступ к определённым данным.

   Шарить — понимать, разбираться в чём-либо.

   Шарпы — язык программирования C#.

Э

   Эксплойт (от англ. «exploit») — вредоносная программа, способная выполнять свой код через найденную уязвимость в другой программе.

   Эникей (от англ. «any key») — любая кнопка. Часто, при установке или загрузке чего-либо, нас просят “Press any key” — отсюда и термин.

   Эникейщик — неопытный пользователь, который не знает, что ему нужно делать — ищет кнопку «эникей». Или низкоквалифицированный IT-специалист (очень редко программист), который занимается рутинными, несложными заданиями.

Ю

   Юзать (от англ. «use») — использовать/пользоваться.

   Юзер (или ещё «юзверь», от англ. «user») — пользователь.

Я

   ЯПЯзык Программирования.

Оценить статью:

Загрузка…

Поделиться в социальных сетях:

Значение слова ПРОГРАММИСТ. Что такое ПРОГРАММИСТ?

  • ПРОГРАММИ́СТ, -а, м. Специалист, занимающийся программированием.

Источник (печатная версия): Словарь русского языка: В 4-х т. / РАН, Ин-т лингвистич. исследований; Под ред. А. П. Евгеньевой. — 4-е изд., стер. — М.: Рус. яз.; Полиграфресурсы, 1999; (электронная версия): Фундаментальная электронная библиотека

  • Программи́ст — специалист, занимающийся непосредственной разработкой программного обеспечения для самых различных вычислительных систем.

Источник: Википедия

  • программист

    1. комп. человек, занимающийся разработкой программ для программируемых устройств

Источник: Викисловарь

Делаем Карту слов лучше вместе

Привет! Меня зовут Лампобот, я компьютерная программа, которая помогает делать Карту слов. Я отлично умею считать, но пока плохо понимаю, как устроен ваш мир. Помоги мне разобраться!

Спасибо! Я стал чуточку лучше понимать мир эмоций.

Вопрос: задеваться — это что-то нейтральное, положительное или отрицательное?

Положительное

Отрицательное

Программирование — это… Что такое Программирование?

Программи́рование — процесс создания компьютерных программ.

В узком смысле (так называемое кодирование) под программированием понимается написание инструкций (программ) на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.

В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ — программного обеспечения ЭВМ. Иначе это называется «программная инженерия» («инженерия ПО»). Сюда входят анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программы (испытания программы), документирование, настройка (конфигурирование), доработка и сопровождение.

Программирование для ЭВМ основывается на использовании языков программирования, на которых записывается программа. Чтобы программа могла быть понята и исполнена ЭВМ, требуется специальный инструмент — транслятор.

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

Текстовый редактор среды программирования может иметь специфичную функциональность, такую как индексация имен, отображение документации, средства визуального создания пользовательского интерфейса. С помощью текстового редактора программист производит набор и редактирования текста создаваемой программы, который называют исходным кодом. Язык программирования определяет синтаксис и изначальную семантику исходного кода. Компилятор преобразует текст программы в машинный код, непосредственно исполняемый электронными компонентами компьютера. Интерпретатор создаёт виртуальную машину для выполнения программы, которая полностью или частично берёт на себя функции исполнения программ.

Программирование в широком смысле можно разбить на несколько стадий:

История

Антикитерский механизм из Древней Греции был калькулятором, использовавшим шестерни различных размеров и конфигурации, обусловливавших его работу,[1] по отслеживанию метонова цикла, до сих пор использующегося в лунно-солнечных календарях.[2]Аль-Джазари построил программируемый автомат-гуманоид в 1206 году. Одна система, задействованная в этих устройствах, использовала зажимы и кулачки, помещённые в деревянный ящик в определённых местах, которые последовательно задействовали рычаги, которые, в свою очередь, управляли ударными инструментами.

Часто первым программируемым устройством принято считать жаккардовый ткацкий станок, построенный в 1804 году Жозефом Мари Жаккаром, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт.

Первое программируемое вычислительное устройство, Аналитическую машину, разработал Чарлз Бэббидж (но не смог её построить). 19 июля 1843 года графиня Ада Августа Лавлейс, дочь великого английского поэта Джорджа Байрона, как принято считать, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости. В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили свое принципиальное значение и для современного программирования. В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950-х годах. Однако ни одна из программ написанных Адой Лавлейс никогда так и не была запущена.

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

Различные языки программирования поддерживают различные стили программирования (парадигмы программирования). Отчасти искусство программирования состоит в том, чтобы выбрать язык программирования, наиболее полно подходящий для решения поставленной задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).

Единственный язык, напрямую выполняемый ЭВМ — это машинный язык (также называемый машинным кодом и языком машинных команд). Изначально все программы писались в машинном коде, но сейчас этого практически уже не делается. Вместо этого программисты пишут исходный код на том или ином языке программирования, затем, используя компилятор, транслируют его в один или несколько этапов в машинный код, готовый к исполнению на целевом процессоре, или в промежуточное представление, которое может быть исполнено специальным интерпретатором — виртуальной машиной. Но это справедливо только для языков высокого уровня. Если требуется полный низкоуровневый контроль над системой на уровне машинных команд и отдельных ячеек памяти, программы пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора ЭВМ. (По этой причине трансляторы с языков ассемблера — ассемблера — получаются алгоритмически простейшими трансляторами.)

В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp, Java, Perl, Python, языках для .NET Framework.

Программные средства

Скриншот фрагмента кода на языке Java в текстовом редакторе vim, демонстрирующий подсветку синтаксиса, поддержку Unicode, фолдинг

Программные средства, используемые при разработке программ делятся на системные и инструментальные. В системном обеспечении основными являются операционные системы, инструментальные средства и технологии Windows, Mac OS X, Linux и т. п.

На олимпиадах по информатике и программированию с успехом используются только свободно распространяемые лицензионные инструментальные средства (в большинстве своём распространяются по лицензии GNU GPL). Из языков программирования на олимпиадах по программированию последние годы часто используются языки программирования Паскаль, C/C++ и Java.

Для ведения документации при разработках программ могут использоваться офисные пакеты программ (например, OpenOffice.org и Microsoft Office).

См. также

Примечания

Литература

  • Дейкстра Э. Дисциплина программирования = A discipline of programming. — 1-е изд. — М.: Мир, 1978. — 275 с.
  • Бьярне Страуструп. Программирование: принципы и практика использования C++, исправленное издание = Programming: Principles and Practice Using C++. — М.: Вильямс, 2011. — С. 1248. — ISBN 978-5-8459-1705-8
  • Александр Степанов, Пол Мак-Джонс. Начала программирования = Elements of Programming. — М.: Вильямс, 2011. — С. 272. — ISBN 978-5-8459-1708-9
  • Роберт У. Себеста. Основные концепции языков программирования / Пер. с англ. — 5-е изд. — М.: Вильямс, 2001. — 672 с. — ISBN 5-8459-0192-8 (рус.) ISBN 0-201-75295-6 (англ.)
  • Иан Соммервилл. Инженерия программного обеспечения / Пер. с англ. — 6-е издание. — М.: Вильямс, 2002. — 624 с.
  • Иан Грэхем. Объектно-ориентированные методы. Принципы и практика / Пер. с англ. — 3-е изд. — М.: Вильямс, 2004. — 880 с.

Ссылки

Разница между «Programmer», «Software Engineer» и «Computer Scientist» / 1cloud.ru corporate blog / Habr

Как только сегодня ни называют программистов, особенно в зарубежных СМИ. Да и у нас, в частности, при поиске работы, можно встретить абсолютно разные описания должностных обязанностей.

Меняется ли от этого суть работы? Мы в 1cloud попробовали разобраться в том, какую работу подразумевают такие специализации как «Programmer», «Software Engineer» и «Computer Scientist».


/ фото hackNY.org CC

Терминология


Изучение сути вопроса логично начать с понимания терминов. Самым понятным является «Programmer», который в Оксфордском словаре определяется как человек, ответственный за написание программы. И с переводом все просто: программист – он и в Африке программист. И даже в России. Сложности начинаются дальше.

«Software Engineer» (SE) (согласно статье в webopedia) — это дипломированный профессиональный инженер, имеющий достаточно знаний и навыков для применения инженерных дисциплин при создании программного обеспечения. Главное отличие — SE занимается разработкой, руководством проектов, а программист их реализует путем написания кода. На русский название должности переводится как «инженер-программист» или просто «программист».

Теперь разберемся с тем, кто такой «Computer Scientist» (CS). Если верить словарю, то речь идет о работе в области теории вычислений и проектирования компьютеров. Разные словари дают разный перевод на русский: «учёный, работающий в области теории вычислительных машин и систем (в области ВТ, в области компьютерных наук)» или «программист».

Итого, имеем три очень разных определения в английском и три «программиста» в русском.

Как сами программисты понимают эту разницу


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

Для обеспечения полноценной разработки ПО/кода программист должен быть сконцентрирован на своей работе и обеспечить последующее использование и интеграцию программных компонентов друг с другом. Энтони Щерба (Anthony Scherba), президент и основатель студии разработки Yeti, сравнивает этот процесс с решением сложной алгебраической задачи.

Так, по мнению эксперта, в обязанности программиста входит создание, упрощение, документирование кода и написание тестов. Поскольку он занимается практической реализацией поставленных задач, программист должен разбираться в особенностях языка (языков) программирования, с которыми работает, а также в теории алгоритмов.

Необязательные компетенции: математический анализ, коммуникативные навыки и умение работать в команде — подробнее в блоге Алана Скоркина (Alan Skorkin).

Работа «Software Engineer» подразумевает комплексный подход и иногда ее можно сравнить даже с процессом создания произведения искусства, которое программист старается постоянно усовершенствовать. Так считает и Дэниел Каплан (Daniel Kaplan), опытный программист и сотрудник Pivotal Labs.

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

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

«Computer Scientist» — математик и технический специалист в равной степени. Он обладает математическими знаниями и объясняет, как и почему работает тот или иной инструмент, решение или алгоритм. Его работа имеет большое значение для развития программирования в целом. Также CS свойственна специализация в одной или нескольких сферах — ИИ, нейронные сети, теория языков программирования, базы данных.

Представления профессионалов в принципе соотносятся со словарными статьями, что естественно: на то они и профессионалы, чтобы разбираться в своей работе. Сбой в коммуникации и подмена понятий явно происходит на каком-то другом уровне, но на каком?

Какую разницу видят учебные заведения и работодатели


Начнем опять с «программиста». Еще одно его важное отличие от всех остальных: как правило, отучившись в профильном ВУЗе, вчерашний студент становится не просто «программистом», а «инженером/бакалавром/магистром по специальности/направлению…».

Для западной образовательной системы это тоже характерно — взгляните, к примеру, на разнообразие специальностей в направлении «Software Development and Programming» Сиднейского Технологического Университета. Ни одна из них не содержит в своем названии слова «programmer» или «programming».

Нет, конечно, многие университеты предлагают курсы по программированию (даже бесплатные), но редко когда в дипломе написано просто «программист». А что хотят видеть работодатели?

Помимо знания разных языков и/или опыта работы на разных мобильных платформах/ опыта веб-программирования/ администрирования, программисту нельзя обойтись без коммуникативных навыков (примеры тут и тут). В приведенных примерах вакансий требуется навык работы в команде, предполагается общение с вендорами, сотрудничество с другими отделами компании и техническим директором. Ну и организаторские и управленческие способности будут нелишними. А в ряде случаев нужны еще и достаточно глубокие знания математики.

Требования на российском рынке отличаются не сильно и включают разработку проектов, работу в команде, понимание принципов информационной безопасности (и всё те же навыки, отмеченные в абзаце выше). Таким образом, работодатели хотят видеть в программисте универсального (и творчески мыслящего) специалиста, а не просто человека, который пишет и тестирует код на определенном языке, решая кем-то поставленную задачу. Получается, что работодатель (как на Западе, так и у нас) под «программистом» очень часто понимает то, что словари обозначают как минимум как «Software Engineer».

Образовательные программы по профилю «Software Engineering» подразумевают, подход к разработке ПО с научной и инженерной точки зрения, разработку собственных проектов, аналитическую и управленческую деятельность. Помните, в предыдущем разделе эксперты говорили, что SE должен уметь реагировать на изменяющиеся требования? На магистерской программе помимо этого объясняют, как укладываться в бюджет и сроки.

В университете Глазго учат определять технические характеристики, проектировать, создавать и верифицировать крупные программные системы. При этом список предметов включает программирование на разных языках, проектирование баз данных, изучение алгоритмов, то есть все те знания, которые необходимы и для работы «классического программиста».

Что касается точки зрения работодателей, то по их мнению в обязанности инженера-программиста входит написание кода, проверка технической реализации UI/UX, оптимизация работы приложений, разработка внутренней методологии и стандартов, контроль и управление требованиями. Кроме того, соискатель должен обладать лидерскими качествами. Технические требования не сильно отличаются от требований к «обычным» программистам: их примеры можно посмотреть тут: 1, 2 и 3.

Университетские программы по направлению «Computer Science» включают больше математических предметов, изучение теории алгоритмов, а также такие темы как машинное обучение, нейронные сети и облачные вычисления. Студенты изучают больше теории, но должны успешно применять на практике полученные математические знания, выявлять, формулировать и решать инженерные проблемы. Таким образом, у этого типа специалистов формируется наибольшая «широта взглядов» — в теории он может работать и программистом, и SE, и непосредственно по специальности.

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

Идеальный соискатель на должность «Computer Scientist» должен обладать знаниями по теоретической информатике, теории алгоритмов, проектированию баз данных, компьютерному моделированию, при необходимости выполнять задачи аналитика и проводить исследования, знать весь процесс от проектирования до внедрения ПО… Список можно продолжать долго (подробнее читайте тут и тут).

Работодатели хотят видеть профессионала, который не ограничен применением навыков в сугубо научной сфере. Кстати, русскоязычные работодатели тоже ищут таких специалистов и предлагают свои названия профессии: ведущий алгоритмист и инженер-исследователь. На этих примерах прослеживается та самая специализация, о которой мы упоминали в прошлом разделе.

Что в итоге


Да, действительно программисты, SE и CS — специальности близкие, но не одинаковые, и готовят таких профессионалов на разных университетских специальностях. Наибольшую путаницу в трактовке терминов вносят работодатели – для них, например, разница между «программистом» и Software Engineer может быть совершенно не очевидна.

Судя по требованиям работодателей, от «просто программиста» ждут творческого подхода, универсальных знаний и soft skills, а «computer scientist» может решать важные, но при этом сугубо прикладные, узконаправленные задачи — говорить о том, что одна специальность «по умолчанию» лучше или «сильнее» другой тут не приходится.

О чем еще мы пишем в блоге 1cloud на Хабре:

Перестаньте называть себя программистом и другие карьерные советы / Habr

Есть один курс, который я бы добавил в программу обучения по всякой инженерной специальности, и он не о компиляторах или сложности алгоритмов. Это “Введение в реальность индустрии”, ибо об этом не говорят и это приводит к никому не нужным обломам. Эта статья претендует стать README.txt для молодого инженера в деле построения карьеры. Ее цель — сделать вас счастливее, заполнив пробелы в образовании относительно того, как работает реальный мир. Я не призываю следовать написанному как подробному руководству, но я надеюсь, что эта информация окажется для вас более ценной, чем то ничто, что вам рассказали об этом в университете.
90% работы для программиста — это корпоративное ПО
Основы экономики: цена чего-угодно (включая вас) — это функция спроса и предложения. Давайте сначала посмотрим на спрос. Большинство ПО не продается в коробках и не доступно для скачивания в интернете или App Store. Большинство ПО — это тоскливые узкоспециальные корпоративные приложения, поддерживающие глобальную экономику со всех вообразимых сторон. Эти приложения подсчитывают издержки, оптимизируют расходы на пересылку, помогают составлять бухгалтерские отчеты, проектировать новые интерфейсы, вычислять цену страховки, помечать подозрительные заказы для ручной проверки и т.д. ПО решает проблемы бизнеса.

ПО решает проблемы бизнеса несмотря на свою душераздирающую скучность и отсутствие технологической сложности. Например, представьте себе электронную форму отчета о командировочых расходах. Для компании размером в 2000 человек она может сэкономить порядка 5000 человеко-часов в год в сравнении с ручной обработкой бумаг, что при средней стоимости часа работы в $50 сэкономит $250,000. Компании все равно, что это самое примитивное на свете CRUD-приложение. Единственное, что имеет значение, это то, что оно сокращает издержки или генерирует прибыль.

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

Программистов нанимают для того, чтобы они приносили пользу компании, а не для того, чтобы они программировали
Периодически компании предпринимают что-то из иррациональных или политических причин (читайте ниже), но в основном их действия направлены на увеличение прибыли или сокращение издержек. В хорошо поставленной компании котируются люди, которые занимаются именно этим. (Что может, но совсем не обязательно, подразумевать реально выполняемую работу.) Тот, кто решил нанять еще одного или нескольких программистов, решил сделать так не потому, что ему нравятся гики в кабинете, а потому, что эти гики позволят довести до конца проект (или проекты), которые увеличат прибыль или снизят издержки. Создание красивого ПО не является целью, также как и решение сложных проблем программирования или написание беспроблемного кода. Повысить прибыль или сократить издержки — ваши единственные задачи.

Питер Друкер — возможно, вы не слышали о нем, но он пользуется уважением среди людей, которые подписывают финансовые документы — предложил определения центра прибыли (profit center) и центра издержек (cost center). Центры прибыли — это та часть организации, которая непосредственно зарабатывает на хлеб с маслом: партнеры в юридических фирмах, продажники в компаниях, инвесторы на Уолл-стрит и т.д. Центры издержек — это, по сути, все остальное. Вам надо быть частью центра прибыли, потому что это принесет вам больше денег, статус, и больше возможностей во всем, чем вам хотелось бы заниматься. Это не сложно: толковый школьник легко определит центр прибыли компании по ее описанию длиной в один абзац. Если вы хотите работать в этой компании, цельтесь именно туда. Если не можете, то или а) идите работать куда-нибудь еще, или б) организуйте себе перевод после того, как будете наняты.

Программисты — особенно дорогие центры издержек, что вызывает оптимизационный зуд у любого выпускника MBA. Это выливается в такие замечательные инициативы, как аутсорсинг, что можно понимать как “давайте заменим очень дорогие центры издержек, которые занимаются какой-то магией, суть которой нам вроде как не важна, но без нее никак, более дешевыми центрами издержек в стране с более низкой стоимостью труда”. (Лирическое отступление: вы можете абсолютно спокойно игнорировать аутсорсинг как угрозу своей карьере, если прочтете эту статью до конца.) Никто и никогда не отдаст на аутсорсинг центры прибыли. Попытка сделать так родит множество управленческих шуток. Это как если бы вам предложили заменить систему контроля версий файлами на дискетках.

Перестаньте называть себя программистом
“Программист” звучит как “аномально дорогой холоп, пишущий непонятную ерунду в другой непонятной ерунде”. Если вы называете себя программистом, знайте, что кто-то уже работает над тем, чтобы вас уволить. Слышали о Salesforce, Software as Service компании? Их слоган “Без ПО” (“No Software”) буквально сообщает будущим клиентам: “Если бы вы использовали Salesforce, вы бы могли уволить половину программистов, работающих над вашим внутренним ПО, и положить разницу себе в карман.” (В этом, кстати, нет ничего страшного. Вы в индустрии, которая лишает людей работы. Если вы думаете, что это неправильно, идите назад в университет и обучитесь чему-нибудь ненужному.)

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

Есть множеcтсво высокооплачиваемых профессионалов, которые работают с кодом, но при этом не называют себя программистами. Квонты (от “quantitative analyst” — аналитики, занимающиеся алгоритмизацией торговли на бирже, моделированием рисков и т.д. — прим. переводчика) с Уолл-стрит — самый яркий тому пример: они используют компьютеры и знание математики, чтобы принимать решения более эффективно, чем группа людей без такой поддержи, и в результате их компании зарабатывают миллионы долларов. Бонусы успешного квонта в хороший год превышают заработок многих талантливых программистов за десяток лет.

Аналогично, даже если Google кажется вам подходящей компанией, то там тоже есть программисты, и есть люди, чья работа привела к увеличению кликабельности AdWords-объявлений на 1%. (Последние стоят миллионы долларов, намек ясен?) Я недавно наткнулся на сайт парня, у которого в профессиональной биографии было написано: “создал код системы биллинга, через которую проходит 97% прибыли Google”. Сейчас он занимается ангельским инвестированием (это красивый способ сказать, что он очень богат).

Вы не ограничены своим стеком технологий
Недавно я спросил в Twitter, что начинающие программисты хотели бы знать о том, как строить карьеру. Многим было интересно, какой язык программирования или стек технологий изучать. Мой ответ: не имеет значения.

Java-программисты зарабатывают больше, чем .NET-программисты? Все, кто считает себя Java-программистом или .NET-программистом уже в пролете, потому что а) они программисты (а вы, как написано выше, нет) б) они закрывают для себя возможность быть нанятым на большинство позиций. В реальном мире изучение основ нового языка занимает пару недель, и через 6-12 месяцев уже никто не догадается, что вы не занимались этим всю свою карьеру. Я занимался Enterprise Java разработкой еще в марте 2010 (статья написана в октябре 2011 — прим. переводчика). Поверьте, всем все равно. Если компания, занимающаяся разработкой на Python, будет искать технаря, способного заработать им денег, тот факт, что я в жизни не написал ни строчки кода на Python не сыграет против меня.

Талантливые программисты редко встречаются, гораздо реже, чем в них возникает потребность, поэтому сейчас самая благоприятная конъюнктура для соискателей почти во всех отраслях. В Matasano пишут на Ruby. Если вы не знаете Ruby, но вы хороший специалист, вас все равно наймут. (У хорошего специалиста есть опыт в — повторяйте за мной — увеличении прибыли или снижении издержек.) В FogCreek используют стек Microsoft. Я не могу написать ASP.NET без ошибки, но они все равно наймут меня.

Есть компании с таким криво поставленным процессом найма, что если в вашем резюме нет искомого ключевого слова, вас даже не пригласят на собеседование. В таких компаниях лучше не работать, но если вам очень хочется, то потратив несколько вечеров и выходных вы сможете добавить в свое резюме нужные слова. Но еще лучше влиять на выбор технологий на своем текущем месте работы так, чтобы это продвигало вашу карьеру. Хотите изучить Ruby, работая в .NET-компании? Сделайте одноразовый проект на Ruby. И, о-па, вы стали профессиональным Ruby-программистом, вы писали на Ruby и вам за это платили. (Смешно? Я провернул это в компании, занимающейся Java. Единоразовый проект на Ruby заработал нам $30,000. Мой начальник был ожидаемо счастлив и никогда не интересовался, на чем был сделан проект.)

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

Например, когда при приеме на работу вы беседуете с приятным 28-летним парнем, который кажется вам просто улучшенной копией вас самих из будущего, это ни к чему не ведет. Он не видит в вас приятеля, вы для него не больше чем ресурс, необходимый для деятельности компании, который он стремится приобрести по наименьшей цене. Треп о World of Warcraft — это не более чем установление контакта, и он наверняка (надеюсь, порядочно) попробует сделать что-то такое, чего ваши друзья никогда не допустят, например, уболтать вас сбросить несколько тысяч в год с вашей зарплаты, или сманипулировать вами, чтобы вы задержались и поработали подольше, когда вы могли бы провести это время со своими настоящими друзьями. Также, у вас будут и другие коллеги, которые, учтиво и порядочно, будут предлагать вещи, идущие вразрез с вашими интересами, от “я присвою себе твои заслуги на этом проекте” (возможно, это будет сформулировано чуть короче) до “нам стоит заняться тем, что продвигает мои профессиональные интересы, а не твои”. Не удивляйтесь, когда это случится.

Вы сильно переоцениваете средний по рынку уровень компетентности ваших конкурентов, ориентируясь на тех людей, которые непосредственно вас окружают
Многие их тех, кто сейчас работает старшим программистом, на деле не может написать FizzBuzz. Занавес. Основной вывод: вы, скорее всего, достаточно компетентны для того, чтобы работать в компании мечты. Пусть они нанимают лучших из простых смертных, но, тем не менее, они нанимают простых смертных.
“Объявление. Резюме. Интервью. Работа.” — скорее исключение, чем правило в процессе найма
О большинстве вакансий никогда не будет объявлено публично, точно так же как и лучшие кандидаты никогда бывают открыто свободны (читайте об этом здесь). Информация о вакансии распространяется приблизительно со скоростью бокала пива, и иногда смазывается email-перепиской. Кто-то хочет нанять программиста. Он сообщает об этом друзьям и партнерам по бизнесу. Кто-то из них точно знает кого-то подходящего — члена семьи, соседа по комнате из университетской общаги, знакомого с конференции, бывшего коллегу, и т.д. Людей представляют друг другу, случаются встречи, они достигают принципиального соглашения о найме. И только после этого начинаются танцы с резюме/отделом кадров/контрактом и прочими формальностями.

Это особенно правдиво относительно наиболее стоящих вакансий. Быть первым сотрудником успешного стартапа имеет определенный флер среди айтишников, и ни одна из таких вакансий не была закрыта с помощью резюме, отправленного в отдел кадров, отчасти потому что у стартапа из 2-х человек пока маловато подкожного жира, чтобы организовать отдел кадров. (Скорее всего, вам не стоит стремиться стать первым сотрудником стартапа, лучше станьте последним из со-основателей.) Хотите работать в Google? У них есть официальный процесс, чтобы чуть-чуть вас протолкнуть вперед просто за то, что вас порекомендовал другой сотрудник Google. (Кроме того, у симпатизирующего вам сотрудника Google есть еще порядочно неофициальных способов повлиять на этот процесс. Один из вариантов — купить компанию, в которой вы работаете. Когда у вас есть пара миллиардов в кармане, у вас появляется много интересных способов решения проблем.)

Есть много причин к тому, почему найм происходит приватно. Одна из них — это то, что в ответ на опубликованную вакансию приходит огромное количество нежелательных резюме (особенно при нынешней конъюнктуре) от вопиюще неподходящих людей. Другая — то, что в некоторых компаниях настолько не умеют нанимать, что если со стороны нанимателя никто лично не знаком с кандидатом, они могут запросто принять на работу кого-нибудь, неспособного написать FizzBuzz.

Сетевое взаимодействие — это не только TCP пакеты
Развивать связи значит а) встречаться с людьми, которые однажды могут оказаться вам полезны (и наоборот) и б) производить на них хорошее впечатление.

Есть много мест, где можно познакомиться. Например, отраслевые события, такие как конференции или открытые лекции в университетах. Пользовательские сообщества (user groups) — другой вариант. Имейте ввиду, что эти события привлекают разную аудиторию, и подстраивайтесь соответвенно.

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

Знакомиться можно и в интернете, но что-то в нашем унаследованном от обезьяны мозгу придает особенно большое значениe взаимодействию лицом к лицу. Я знакомился с людьми в интернете и затем переводил контакт в реальный мир. Физическое рукопожатие — это большая подвижка в отношениях, даже если во время общения в сети своими советами вы уже помогли кому-то заработать больше. Пишите блог, участвуйте в форумах на Hacker News или на других заметных в вашей отрасли ресурсах, но не забывайте ходить на реальные встречи.

Университеты далеки от реального мира
Ваш средний балл не имеет значения (за редким исключением, как в одном международном рекламном агентстве). Он влияет только на то, будет ли ваше резюме отобрано для приглашения на собеседование. Если вы читали то, что написано выше, то вы знаете, что рассылка резюме — не единственный способ попасть на собеседование, поэтому не тратьте слишком много времени оптимизируя то, что и так работает достаточно хорошо (поскольку со средним баллом в 3.96 вам будут звонить так же часто, как и с 3.8), или то, что вам просто не нужно (поскольку вы умеете находить работу, приглашая правильных людей на кофе).

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

Ваши преподаватели могут знать, как работает рынок труда в научной сфере (в двух словах: он дико неэффективный и запутанный сверх всякого человеческого понимания), но при этом имеют довольно идеалистические представления о том, как это происходит в реальном мире. Например, они могут убеждать вас получать дополнительные специализации, потому что это а) кажется им хорошей мыслью б) им всегда нужны рабы, работающие за Роллтон, для ведения их научной работы. Помните, что рыночная стоимость специалиста, способного вести научную работу $80 — $100 тысяч в год. Роллтонами на эти деньги можно уесться.

Преподаватель, у которого я писал научную работу, предлагал мне место на кафедре, оплату обучения и аж $12,000 в год в качестве стипендии, если я подпишусь работать с ним следующие 4-6 лет. Это отличное предложение в том, и только в том случае, если вы только что иммигрировали из страны с более низким уровнем оплаты труда и вам нужна поддержка в получении визы.

Если вам очень нравится сама атмосфера в университете, то никаких проблем, накиньте на плечо рюкзак и вы в любое время сможете войти в здание любого университета в Соединенных Штатах. Купить рюкзак намного дешевле, чем остаться работать в науке. В коммерческих компаниях вы тоже сможете работать головой, но при этом там будет меньше политики и вам будут лучше платить. Вы даже сможете публиковаться в журналах, если оно вам нужно. (Поле того, как вас попустит безумная атмосфера научного сообщества, вы можете справедливо начать сомневаться, действительно ли публикация в научном журнале это что-то более значительное, чем, например, публикация статьи в блоге, который читают умные люди.)

Сколько зарабатывают программисты?
Неправильный вопрос. Правильный вопрос: на какие предложения о работе программисты обычно соглашаются? Потому что зарплата — это всего лишь один из рычагов, которые могут использоваться, чтобы вас привлечь. И мой ответ на этот вопрос вам не особо поможет: на всякие.

В целом, крупные компании платят больше (деньги, соц. пакет, и т.д.), чем стартапы. Программисты, знающие себе цену, зарабатывают больше, чем те, кто в себе сомневается. Старшие программисты зарабатывают больше, чем младшие. Люди, работающие в более денежных отраслях, зарабатывают больше, чем те, кто работает в менее денежных. Люди, умеющие вести переговоры, зарабатывают больше тех, кто в этом не силен.

У нас есть культурное табу никогда на говорить о зарплате. Но это не абсолют. Во многих культурах, о деньгах вполне приемлемо говорить в профессиональном контексте. (Если бы вы были японцем среднего класса, вы бы посчитали уместным рассказать о своих доходах уже на второй встрече кому угодно, от ребят из вашей команды по футболу до повара, который крутит вам суши. Если бы вы были владельцем компании, вы бы, возможно, были более уклончивы говоря о себе, но зарплаты своих сотрудников обсуждали бы так же, как программисты обсуждают компиляторы — достаточно часто и без тени смущения.) Если бы я был марксистом или сторонником теории заговора, я бы предположил, что американская культура была специально заточена под интересы нанимателей и против интересов наемных работников. Прежде чем обсуждать зарплату с потенциальным работодателем, стоит поговорить с кем-нибудь, кто уже работает в этой компании на схожей позиции и уточнить вилку. На дворе <%= Date.today.year %>;, такого человека вполне можно найти в сети (с помощью LinkedIn, Facebook, Twitter или любой другой не-графовой социальной сети).

В том или ином виде программистам обычно предлагают соц. пакет. В Соединенных Штатах имеет смысл побеспокоиться о страховке здоровья (обычно работодатель оплачивает большую часть стоимости) и о пенсионных накоплениях, которые обычно предлагаются в формате “мы доложим в на ваш пенсионный счет сумму, равную той, что вы внесете туда сами, вплоть до максимума в х% от вашей годовой зарплаты”. Что вы получите в результате легко посчитать: х% от годовой зарплаты. (Это дополнительные деньги, поэтому всегда по максимуму пользуйтесь пенсионными программами работодателя. Инвестируйте эти деньги и забудьте о них на следующие 40 лет.)

Есть и другие плюшки, такие как бесплатные напитки, обеды в офис, оплачиваемые книги по программированию, и т.д. Это в большей степени социальные па. Если я предлагаю покупать вам напитки, это в первую очередь говорит о порядках в моей компании и о том, как я буду относиться к тем, кто у меня работает. (Буквально, “я собираюсь вдохновлять неискушенных молодых программистов на трудовые подвиги, проставляя им копеечную газировку и экономя десятки тысяч долларов на оплате труда, одновременно помогая им разрушать свое здоровье”. Я люблю газировку.) Умейте видеть такие социальные па и реагируйте соответвенно. Например, компания, готовая оплачивать обучение своих сотрудников, может оказаться стоящим местом для работы, но не соглашайтесь на существенно более низкую зарплату в замен на то, что вы запросто можете пойти и купить себе сами.

Как мне стать лучшим переговорщиком?
Об этом можно написать целую отдельную статью. Но если кратко, то:
  1. Помните о том, что вы продаете решение бизнес-проблем (увеличение прибыли и сокращение издержек), а не ваш навык программировать или интеллигентное лицо.
  2. Ведите переговоры в меру агрессивно и уверенно, как профессионал. С той стороны будут держаться именно так. Если вы стремитесь прийти к взаимовыгодному предложению, не соглашайтесь на все подряд.
  3. “Сколько вы зарабатывали на предыдущем месте?” понимайте как “подскажите мне причину предложить вам меньше”. Отвечайте соответвенно.
  4. Всегда имейте на готове контр-предложение. Будьте готовы торговаться чем-то, кроме денег. Если они не могут предложить вам большую зарплату, попросите более длинный отпуск.
  5. Говорить о деньгах уместно только после того, как вы достигли принципиальной договоренности о переходе. Обычно этот разговор происходит в самом конце, когда они со своей стороны уже вложили довольно много времени и денег в то, чтобы заполучить вас, то есть не на собеседовании. Помните, что не суметь договориться с вами на этом этапе сулит им потери, поэтому они, скорее всего, не будут слишком сильно настаивать на незначительных для компании, но существенных для вас вещах, как если бы вы накинули на их предложение по зарплате несколько тысяч и твердо это отстаивали.
  6. Прочтите книгу. Их много написано по теме ведения переговоров. Мне нравится «Путь к согласию» («Getting to Yes»). Мысль о том, что неумение вести переговоры стоит вам тысячи долларов ежегодно, может смущать, и поэтому программисты часто не делают направленного усилия, чтобы научиться этому, вместо этого тратя время на игры с какой-нибудь новой технологией.
Сколько стоят акции
Roll d100. (Вы не из этих? Прошу прощения, rand(100).)

0 — 70: Ваши акции не стоят ничего.

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

95 — 99: Стоимость ваших акций существенно изменит вашу жизнь. Тем не менее, вы не будете чувствовать себя богатым, потому что многие из тех, с кем вы плотно работали в последние пару лет, богаче вас по определению. Но зато ваша семья больше не будет вас критиковать за то что вы не пошли работать в $TA_SAMAYA_KOMPANIYA как хороший $NA_KOGO_VAM_PREDLAGAUT_RAVNYATSYA

100: Вы работали в убийце Google и ваше состояние огромно. Поздравляем.

Пытливый читатель заметит, что 100 никогда не будет результатом вызова d100 или rand(100).

Почему ты так скептически настроен о работе за акции?
Потому что вы сильно перееоцениваете вероятность того, что стартап, в котором вы работаете, выстрелит, и очень сильно перееоцениваете кусок пирога, который достанется вам, если это случится. Почитайте об очередности выплат акционерам при ликвидации компании на Hacker News или Venture Hacks, а потом подумайте о том, что люди, которые там об этом пишут, понимают в вопросах венчурных сделок не меньше, чем вы в программировании, и о том, как вы можете наколдовать в коде, когда на кону несколько миллионов долларов.
Стоит ли начинать карьеру в стартапе?
Есть высокая вероятность того, что пару лет вы будете очень тяжело работать, часто и больно обламываться, в конце концов останетесь без работы и будете искать себе новый стартап. Если вы правда хотите поработать в стартапе, поработайте в крупной компании, накопите денег, опыта и связей и через пару лет после окончания университета сделайте свой.

Когда вы работаете в стартапе, вашим кругом общения становятся такие же стартаперы, как и вы сами. Через несколько лет большинство из этих людей не смогут нанять вас. Работая в крупной компании, вы крутитесь среди людей, которые работают в крупных компаниях. Многие из них через несколько лет смогут предложить вам работу сами или порекомендовать вас кому-то.

Так работать в стартапе или нет?
Работа в стартапе это, безусловно, путь развития карьеры, но в большей степени это образ жизни. Это чем-то напоминает работу в финансовой отрасли или в науке. Это три очень разных подхода к жизни. Многие люди пытаются завлечь вас туда из своих собственных интересов. Если вам искренне нравится жить как стартапер, вперед. Если вам нравятся только некоторые аспекты, то помните, что если очень хочется, то многое можно организовать для себя и так. Например, если вы хотите работать с самыми новыми технологиями, и вместе с тем вам важно быть дома к 5:30, чтобы успевать видеть детей, то вы можете работать с новыми технологиями в огромном количестве крупных компаний.

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

Коммуникация — ваш основной профессиональный навык
Всегда помните о том, что программистов нанимают не для того, чтобы они программировали, а для того, чтобы они приносили пользу бизнесу. Основное качество, которое влияет на то, получите вы работу, или нет — ваша способность убедить других в том, что вы полезны. При этом быть полезным совсем необязательно.

Многие из лучших программистов, что мне встречались, патологически неспособны поддержать разговор. В результате другие люди а) не хотят с ними работать б) недооценивают их вклад, потому что чтобы что-то узнать о том, что они сделали, об этом нужно поговорить, а те просто не реализуют этот протокол. Обратное тоже верно: люди в среднем думают, что я один из лучших программистов, которых они когда-либо встречали, потому что я а) очевидно, могу программировать б) очень, очень хорошо пишу и говорю.

(Было время, когда я считал себя программистом “чуть ниже среднего”. С тех пор я понял, что я довольно искаженно представлял себе распределение навыков, что навык программирования это не то, на чем стоит сосредотачиваться, и что моя скромность играет против меня. Сегодня, если вы спросите меня, насколько я крут как программист, я скорее всего начну рассказывать вам о том, как писал систему, которая помогла миллионам детей научиться читать или которая помогла компании заработать миллионы. Где я нахожусь со своим навыком программирования на графике нормального распределения никого не волнует, так почему это должно волновать меня?)

Коммуникация — это навык. Упражняйтесь, и у вас будет получаться все лучше и лучше. Один из важных навыков второго порядка — умение быстро, кратко и уверенно рассказать о том, чем вы полезны, кому-нибудь, кто не разбирается в предметной области и у кого нет причин быть к вам расположенным. Если во время этого упражнения в вашей речи появляются технические термины (“сократил на 200 мс время работы 99 процентов запросов оптимизировав индексы…”), попробуйте еще раз без них. Вы должны уметь объяснить то, что вы делаете, толковому восьмилетке, главбуху вашей компании, программисту другой специальности, или смотрите сами, какая абстракция вам больше всего подходит.

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

Когда вы пытаетесь убедить коллег реализовать ваши идеи, вы тоже продаете. Если делать дело — ваша прямая обязанность, то уметь убеждать людей — ваш основной профессиональный навык. Потратьте время и отточите его. Это значит уметь эффективно перередавать информацию в официальных письмах, по электронной почте, в разговорах один на один, на собраниях и с помощью PowerPoint-презентаций (где это уместно). Это значит уметь написать бизнес-кейс под технологическую инициативу. Это значит понимать, что иногда придется пожертвовать технологичностью ради достижения бизнес-целей, и это правильно.

Ваша скромность работает против вас
У многих программистов есть проблемы с уверенностью в себе. Многие были так воспитаны, что хвастовство своими достижениями не поощрялось. В американской корпоративной культуре такая скромность не ценится. Более правильный тон для интервью и общения можно описать как “уверенный сдержанный профессионализм”.

Если вы работали в команде и ваша команда добилась успеха, не говорите “это не моя заслуга, это была работа команды”, если только вы не находитесь на такой позиции, что всем понятно, что вы врете, чтобы показаться скромным. Попробуйте так: “я был счастлив сделать свой вклад, координируя усилия команды в $VASHA_SPETSIALNOST”. Тренеруйтесь перед зеркалом, пока у вас не станет получаться говорить это с серьезным лицом. Вам может казаться, что вы преувеличиваете свой вклад. Не думайте об этом. Тот, кто заявляет, что координирует оптимизацию производства, на деле являясь упаковщиком бутербродов, преувеличивает свой вклад. А вы программист. Вы делаете свои магические штучки и жизнь людей становится лучше. Если вы отвечали за базу данных на важном проекте, в котором кроме вас участвовали другие люди, то, черт побери, да, вы координировали усилия команды по работе с базой данных и это было критически важно для успеха проекта. Такие правила игры. Если вам от этого как-то не по себе, то вы как бейсболист, который не крадет базы (кража базы — игровая ситуация в бейсболе — прим. переводчика): вы не высокоморальный, вы просто не умеете играть.

Все бизнес-решения принимаются многоклеточными родственниками шимпанзе, а не следуя правилам и алгоритмам
Люди есть люди. Социальные танцы — это важный навык. Люди часто поддерживают идеи своих друзей, несмотря на то, что другие идеи могут быть лучше. Люди часто более расположены к тем, с кем ели за одним столом. (Есть такая книга, “Никогда не ешьте в одиночку” (“Never Eat Alone”). Возможно, ее стоит прочесть, название не врет.) Люди отдают предпочтение людям, похожим на них самих. (К этому можно относится хорошо, нейтрально или по-разному. Просто принятие этого факта — первый шаг к тому, чтобы извлечь свою выгоду из такого положения вещей).

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

(Люди, с которыми я работаю, могут начать возражать, что я лукавлю, говоря о себе как о директоре мультинациональной компании, потому что моя компания не очень похожа на то, что приходит в голову большинству, когда речь идет о “мультинациональной компании”. Ну извините, это простой разговорный трюк. Если вы думаете, что людям не нравятся, когда им таким образом пускают пыль в глаза, я вам скажу что есть еще и такие, которые вообще рьяно ненавидят людей в костюмах. Но это не умяляет ценности костюма. Просто будьте адекватны обстановке. Ответы, верные только технически, — это, кстати, самый лучший тип ответов, когда министерство миграции грозит вам депортацией.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *