В чем заключается суть работы программиста
Кто такой программист, что он делает и сколько зарабатывает
Здравствуйте, уважаемые читатели!
Как все-таки мало большинство людей знает о программистах. Многие считают, что они занимаются ремонтом техники или хакерством. И далеко не все понимают, что эти специалисты разрабатывают программное обеспечение для компьютеров. Ведь технические устройства говорят на машинном языке, на котором надо писать инструкции для выполнения нужных действий.
В статье я расскажу, кто такой программист и что он делает. К заключению вы будете знать, с чем этот специалист работает, что и как создает, где может работать и для чего вообще нужны программисты.
Кто такой программист
Специалисты по разработке, корректировке программ и алгоритмов для вычислительно-операционной техники, а также специалисты по написанию для них кодов методом математического моделирования, именуются программистами.
Под программами понимаются:
Для работы применяются различные языки программирования. Они могут меняться в зависимости от вида программы, поэтому специалист должен знать как минимум пару языков. Наиболее востребованные – это Python, Java, C++, PHP, C#, Perl.
Должностные обязанности
Профессия программиста является творческой, несмотря на все мифы о том, что создавать программный код – это скучно. Область деятельности специалистов весьма обширна: от компаний по созданию компьютерных игр и промышленных организаций, до ракетостроения и научных институтов.
И вот в чем заключается работа программиста:
Преимущества и недостатки профессии
У этой профессии можно выделить следующие положительные стороны:
Заработная плата
Как я уже писала ранее, зарплата – это один из плюсов работы программистом. Даже новичок в этой сфере, например, в пору студенчества, может получать 30–40 тыс. руб.
Размер дохода во многом зависит от квалификации конкретного человека, его знаний и умений, страны и ее региона, кадровой политики и возможностей организации, на которую трудится программист, а также от специализации работника, о которой я расскажу чуть позже.
Диапазон зарплат очень широк и может быть от 30 000 до 300 000 руб. А особоодаренные специалисты могут получать еще больше.
В целом по России зарплаты находятся на уровне от 40 000 до 200 000 руб.:
Как стать программистом
Стать программистом легче в юные годы. Но при желании эта профессия доступна в любом возрасте. Для обучения существуют различные факультеты в вузах и колледжах, бесплатные и платные онлайн-курсы, а также книги для самообразования.
В университетах и других учебных заведениях весьма значительный конкурс по направлениям, которые связаны с программированием. Поэтому далеко не все работающие программисты имеют диплом. Они заканчивают специальные курсы, читают книги и на практике знакомятся с профессией.
Могу порекомендовать такие книги, как:
В рамках самообучения можно начать создавать сайты для себя, читать новости об IT-сфере, изучать углубленно математику, информатику и английский язык.
Кому подходит должность
Как я писала ранее, возрастных рамок для освоения профессии нет. Не существует и ограничений касательно пола специалиста, хотя и считается, что эта специальность больше подходит мужчинам.
Главный критерий – это наличие интереса к программированию и информационным технологиям.
Кроме этого, должность подойдет человеку, если он обладает следующими личностными характеристиками:
Важно понимать, что программисты – это не скромные парни в очках, спрятавшиеся за компьютером, какими их рисует кино, а специалисты, способные генерировать идеи, выдвигать и воплощать их, умеющие взаимодействовать с коллективом и простыми словами объяснять обычному человеку, что такое программирование.
Онлайн-обучение программированию
Чтобы выучиться на программиста, надо выбрать один из 3 вариантов:
Каждый сам для себя выбирает то, с чего начать учиться программированию. Но одним из самых быстрых и эффективных методов является онлайн-обучение у практикующих специалистов.
Образовательные услуги предлагают платформы Skillbox, Нетология, GeekBrains, SkillFactory, ProductStar. Они имеют различные учебные программы, на основе которых и обучают будущих работников IT-сферы. Самые популярные курсы:
Программирование – не самое простое занятие. Поэтому для обучения потребуется больше года. Но после успешного завершения курсов, каждый сможет с уверенностью работать программистом в отечественных или зарубежных компаниях.
Направления профессии и карьерный рост
Грамотные и постоянно развивающиеся программисты всегда в цене. Они востребованы и имеют все шансы найти работу, соответствующую всем запросам.
Бывает, что организации берут к себе на работу перспективных студентов без опыта. Но чаще, конечно, работодатели ждут опытных специалистов.
У программистов есть возможность работать как на фрилансе, так и на какую-либо компанию, например:
Новички в компании начинают с самой низшей должности. И пока не наработают опыт и не скопят знания, они – junior. Если будут быстро обучаться, проявлять инициативу и хорошо работать, то через года 2-3 смогут перерасти в middle. А уже через лет 5 их ждет последняя ступень программиста – senior.
Четкой границы между ними нет. И нельзя точно сказать, сколько может понадобиться времени, чтобы повысить свой профессиональный статус. Можно лишь назвать примерную разницу между рангами.
Владеет минимум одним языком программирования, знает основы IT-сферы, выполняет типовые задачи. Если у него возникают трудности в работе, то эту проблему сможет быстро решить middle.
Junior не хватает опыта. Например, он не всегда обращает внимание на детали и мелочи, по незнанию загружает программу и замедляет ее, пишет нечитаемый код, лишь бы быстрее сдать работу.
Более осторожен, не допускает большинства ошибок junior, внимательнее и аккуратнее пишет код, который старается делать простым и качественным.
Решает более сложные задачи, требующие длительной работы, свободно и на продвинутом уровне владеет как минимум 2 языками программирования и различными технологиями. Middle способен обосновать и доказать правоту своих решений.
Это уже эксперт в своей деятельности. Он опытен, способен анализировать и предвидеть свои и чужие ошибки, эффективность будущей программы или сложность поставленной задачи.
Senior уверен, что справится с задачей за конкретное время, может быстро найти ошибку и исправить ее. Этому специалисту доверяет команда и знает, что на него можно положиться.
Кроме улучшения своих навыков, программист может уйти в смежные области. Например, заняться дизайном или маркетингом и работать в этом направлении. Опытным программистам доступны такие должности, как архитектор программного обеспечения, менеджер IT-проектов, IT-директор предприятия и т. д.
Разделение программистов на группы есть не только в плане их профессионализма и опыта, но и в зависимости от направления деятельности.
Работники делятся на прикладных, системных и веб-программистов.
Прикладные ответственны за разработку, написание и обслуживание программ и приложений для конкретной задачи. Продуктами их деятельности могут быть игры, офисные и бухгалтерские программы, редакторы‚ мессенджеры, ПО для систем аудио- и видеонаблюдения или систем пожаротушения и т. п. Еще они занимаются переработкой существующих программ под требования и потребности той организации, на которую работают.
Системные программисты – это разработчики операционных систем, интерфейсов различных баз данных, сервисов. Они работают с сетями, обеспечивают функционирование и работу созданных ими систем. Эта специализация программистов считается самой малочисленной.
Веб-программисты создают и продвигают интернет-платформы, разрабатывают контент и пишут программную составляющую для сайтов, настраивают динамические веб-страницы и интерфейсы для работы с базами данных.
При поиске работы часто встречается такое разделение. Работодатели выделяют те языки, которыми предлагают пользоваться специалистам. Например, PHP-программист, Java-программист, программист C++ и т. д.
Могут быть программистами баз данных, frontend-разработчиками, backend-разработчиками, fullstack-разработчиками, техниками-программистами, системными инженерами и т. д. Ежегодно появляются все новые должности, например, набирает силу профессия программиста умного дома.
Можно сделать вывод, что программист – достаточно обширный термин. А областей применения этого специалиста очень много.
Требования при приеме на работу
Умения, знания и навыки – это первое, на что обращают внимание организации, предлагающие работу. В первую очередь специалист должен знать языки программирования. И чем больше, тем лучше.
Также кандидат на должность обязан соответствовать следующим требованиям:
Заключение
Теперь вы многое знаете о деятельности программиста: чем он занимается, сколько зарабатывает, плюсы и минусы работы и какое образование нужно.
Программистом может стать только по-настоящему увлеченный информационными технологиями человек. Ведь IT-сфера постоянно меняется, обновляется и совершенствуется, поэтому надо тратить много времени на то, чтобы вникнуть в новую информацию и технологии.
И тех, кто собирается пройти один онлайн-курс и на этих знаниях строить свою карьеру, ждет большое разочарование.
Успешным программистам нравится сам процесс программирования. Они не боятся ошибаться, чтобы в конце концов достичь совершенства.
Чем же занимаются программисты, и как объяснить это остальным?
Наверное, у каждого программиста возникала ситуация, когда совершенно не знакомые с IT люди просили его объяснить, в чём же состоит суть его профессии. Так уж сложилось, что у большинства людей понятие «программист» ассоциируется либо с замкнутым гиком в очках и свитере, либо с неким гениальным красноглазым подростком-хакером — но при этом никто не знает, чем именно он занимается.
Как рассказать им об этом, не пугая страшными терминами и фрагментами кода?
Под катом я воспроизведу такой рассказ, а также развенчаю несколько мифов о программировании.
— Чем занимаются программисты? Это не так-то просто рассказать… Ответьте мне для начала: как в двух словах можно описать, например, суть профессии хирурга?
— Хирург проводит операции.
— Да, отличное описание! Ну а, скажем, футболиста?
— Играет в футбол!
— Угу, а хирург «занимается хирургией». А если без однокоренных слов?
— Пинает мяч?
— Вот это точно. А что же делает программист, кроме как «разрабатывает программы»?
— …
— Программист пишет код. Исходный код своей программы, составленный на каком-то специальном языке программирования. Точнее говоря, сначала он продумывает структуры своих данных, потом составляет алгоритмы для работы с этими структурами — ну а затем уже представляет это в виде кода.
— Что ещё за «структуры данных»? Разве он не управляет компьютером, не нажимает кнопки?
— Эх.
Миф №1: программист работает с компьютерами
Попробуйте донести до людей, что программисту для написания кода, в общем-то, совсем не нужен компьютер. Он нужен лишь для проверки корректности кода, для его тестирования — но писать сам код и составлять схемы алгоритмов вполне можно и на бумаге (хотя на экране монитора, конечно, это делать удобнее). Разработчик же просто записывает на этой бумаге набор каких-то инструкций, команд или конкретных данных (числа, текст). А кто этот набор исполняет — компьютер, телефон или особо умный робот, не так уж и важно. Программист работает с данными, а не с машинами.
— Ну как, понятно?
— То есть, программист просто сообщает машине, что бы он хотел сделать — а она это исполняет?
— Ну да, примерно.
— Так же, как начальник отдаёт распоряжения подчинённым?
— Вроде того.
— А если машина захочет исполнить это как-то по-другому?
— В смысле?
— Ну, что-то ей не понравится. Или просто исполнять не захочет.
— Так, давайте уясним раз и навсегда, что.
Миф №2: машина умеет думать
Почему-то немалое число людей реально считает, будто компьютер обладает каким-то интеллектом. На самом деле — это просто набор железок, которые думать не умеют. Они умеют лишь хранить числовые данные. Размагничен какой-то участок такой железки — значит, это ноль. Намагничен — единица. Плюс, ещё они могут складывать и вычитать эти единицы, образуя более сложные числа (о двоичной системе счисления лучше не стоит упоминать). Больше компьютер сам ничего делать не умеет, только хранить числа и оперировать ими. Это бездумный болван, который лишь выполняет команды программиста.
— В общем, код любой программы представляет собой набор команд, а компьютер их тупо исполняет.
— То есть, он не понимает сути самих команд? Но как он воспринимает текст, который я ввожу на экране?
— Когда ты крутишь педали на велосипеде — понимает ли он, что ему сейчас нужно поехать вперёд?
— Нет, но ведь едет. Поскольку его цепь преобразует вращение педалей во вращение колёса.
— Именно! Также и компьютер преобразует введённый тобой текст в набор чисел.
— Каким образом?
— У каждого символа текста есть свой числовой код, который знает компьютер. Это называется кодировкой. Например, английская «a» кодируется числом 97, а знак равенства — числом 61.
— Поэтому машина и может понимать текст, который мы ей сообщаем?
— Нет, она «понимает» не смысл. А лишь то, каким образом этот текст хранить, и как к нему обращаться.
— Выходит, сначала мы вводим текст, затем компьютер разбивает его на символы, а каждый символ уже представляет в виде числа?
— Верно. Сложные структуры представляются в виде более простых, которые и «понимает» машина.
Скажите мне, из чего состоит жилой дом?
— Ну… Из этажей.
— А из чего состоят этажи? И так далее.
— Этажи — из стен. А стены — из кирпичей. А кирпичи…
— Вот числа для компьютера — это то же, что и кирпичи для дома. Символы — это стены. Отдельные предложения — этажи. А книги — целые дома! Но у программистов есть преимущество перед строителями.
— Какое?
— Строитель не может строить целыми этажами, он вынужден всегда класть кирпичи. Даже если некий сверхмощный подъёмный кран позволит ему строить готовые этажи, он не сможет строить им целые дома или жилые кварталы. А программист сможет! Раз он уже «обучил» машину понимать конечный текст — то, по сути, он «обучил» подъёмный кран строить готовый дом за одно действие.
— То есть, программист может использовать всё более и более сложные структуры данных?
— Да. Поэтому первая из составляющих его работы — представить понятные человеку данные (текст, изображение, звук) в виде объединения более простых данных, уже понятных компьютеру. Разработчик практически «с нуля» составляет структуру, которая должна полностью описывать понятную человеку вещь — причём таким образом, чтобы эта структура была легко расширяемой и изменяемой (ведь в программу часто приходится вносить какие-то новые возможности).
— Хех! Выходит, что он строит резиновые дома из съёмных панелей!
— Примерно так. Однако, ещё ему придётся не только описать, что же ему нужно построить — но и как всё это построить. То есть, придумать алгоритм. Это вторая из составляющих его работы.
— Программист придумывает алгоритм на каждое действие?
— Именно. Поэтому алгоритмов получается очень много. Но его работу облегчает то, что одни действия могут содержать в себе другие, уже описанные им ранее.
— И здесь ему на помощь приходит язык программирования?
— Не совсем.
Миф №3: язык программирования нужен для составления алгоритмов
Нет, язык — это всего лишь инструмент. Как гитара для музыканта. Само по себе умение играть на гитаре вовсе не гарантирует славы — потому что люди, как правило, восхищаются самой музыкой, а не умением быстро и чётко дёргать струны. С другой стороны, вряд ли кто придёт посмотреть на плохого гитариста, какую бы замечательную композицию он не исполнял. Также и с ЯП: знание его синтаксиса и связанных с ним нюансов очень важно, равно как и умение писать красивый и ясный код. Однако, если человек не умеет составлять алгоритмы и структуры данных — то он не может называться хорошим программистом.
Компьютер не понимает язык программирования напрямую. Как и ранее, он представляет каждую команду языка в виде набора «простейших» команд (сохранить число, обнулить число, прибавить к нему единицу), которые он способен исполнить. «Понимает» язык программист, а машина его лишь исполняет. По сути, любой язык программирования — это набор команд, служащих для общения с нею.
— Правда, многие из нынешних языков программирования уже содержат «в себе» набор заранее составленных алгоритмов, которые разработчик может использовать в качестве готовых. Поэтому язык всё же немного облегчает процесс составления алгоритмов.
— То есть, если один программист составил какой-то алгоритм, то его тут же могут использовать другие?
— Да, и это происходит постоянно. Это одна из причин, почему отрасль IT так быстро развивается. Однако новые алгоритмы приходится составлять самому.
— А составь какой-нибудь прямо сейчас!
— Легко. Классический пример: у вас есть книга, в ней 1000 страниц. Вам нужно открыть в ней, к примеру, 875-ю страницу. Как бы вы стали это делать?
— Ну, просто пробежал от первой до 875-й, только и всего.
— Угу, и придётся тебе глядеть на номер каждой страницы. А представь, если все их уголки слиплись — сколько времени тогда пройдёт? А вот мне достаточно перебрать лишь 3 страницы!
— Как?
— Вначале я выберу страницу, которая находится посередине книги, то есть 500-ю. Потом посмотрю: в какую из образовавшихся половин должна попасть искомая страница?
— Во вторую. А дальше что?
— То же самое. Интервал с 500-й по 1000-ю я снова поделю надвое, открыв центральную страницу. Получится интервал от 750-й страницы до 1000-й, в нём я опять выберу центральную. Какой будет номер?
— 750 плюс 125… Так это же и есть 875!
— Вот видишь. Всего 3 действия! Даже если я буду не совсем точен при выборе центральной страницы, я всё равно найду нужную намного быстрее тебя. Этот алгоритм носит название «дихотомия». Хотя в реальности программисты используют куда более сложные алгоритмы.
— И ты можешь записать его на бумаге?
— Конечно. Где там моя ручка?
— Ну как, алгоритм ясен?
— Хм… Да, и впрямь ясен.
— Сейчас он записан в виде, уже слегка похожем на реальный программный код.
— А в чём отличия?
— В реальном коде все слова будут написаны на английском, а также будет заранее описана структура «книга» (помните, что я раньше рассказывал про структуры данных?). Плюс, для действий «ищем» и «удаляем» тоже будут составлены свои алгоритмы. Но в целом — всё то же самое.
— И ты занимаешься этим изо дня в день?
— В основном.
— И тебе не скучно?
— Ничуть!
Миф №4: программирование — это скучно
Конечно, разработка вполне может наскучить, если заниматься только рутинными и однообразными делами. Например, составлением очень простых алгоритмов, но в большом количестве. Или монотонным поиском ошибок в чужом коде. Но это же касается и любой другой работы — рутина везде убивает творческий процесс. А творчества в программировании немало, написание кода похоже на написание художественной книги. Только, в отличие от большинства писателей, программист сначала сам создаёт свой собственный мир (структуры данных) — а уже потом наполняет его сюжетом (алгоритмами).
Временами это действительно чистое творчество, где разработчик сам устанавливает собственные правила. Несмотря на то, что в мире данных и алгоритмов всё строго и логично, в нём присутствует своя красота. Любой программист может привести десятки примеров очень красивого кода, и ещё больше примеров уродливого. Программисты, как и все люди, тоже ошибаются: если где-то в исходном коде допущена ошибка, то задуманные алгоритмы могут работать неправильно. Поэтому код часто превращается в некий детектив — в котором идёт поиск очередного коварного бага, мешающего исполнению алгоритма, или нарушающего структуру данных…
— В шутку можно сказать, что в итоге получается какой-то детектив в выдуманном мире, выраженный с помощью языка программирования.
— А убийца в этом детективе — дворецкий?
— Ага, нулевой указатель. Бывает так, что весь отдел день-другой ловит особо назойливый баг, и каждый программист из отдела берёт на себя какой-то участок кода. Получается целое расследование, с наказанием виновных и награждением сопричастных…
— Хм, а это и впрямь интересно звучит!
— Вот видишь.
— А, скажем, я могу хоть немного научиться программированию?
— Да, конечно! Я знаю один сайт специально для этого.
Как строится работа программиста
Достижения во всех областях не были бы возможны без мощного развития вычислительной техники. Целые армии электронщиков и программистов изо дня в день работают над дальнейшим усовершенствованием компьютеров, улучшая уже привычные их функции и внедряя и распространяя совсем новые.
Сфера применения компьютеров значительно расширяется. Это требует все большего объема работ по программированию. В результате расходы на него достигают более 90% от общей стоимости вычислительной техники – и доля их продолжает расти, а профессия программиста в наши дни стала одной из самых популярных.
Какими же качествами нужно обладать, чтобы стать признанным профессионалом в этой сфере? Чему научат в вузах? Что придется осваивать самостоятельно?
Часто приходится слышать, что человек, увлекающийся компьютерами, прочитав несколько книг, посвященных вопросам программирования, успешно пишет несколько программ на одном-двух языках. После чего считает себя профессионалом в этой сфере и недоумевает: чему же еще его могут научить?
Где и чему учат
Остановимся на специальности «Прикладная математика», так как она дает общие теоретические принципы программирования, обширную математическую базу для решения поставленных задач, а другие специальности все-таки готовят специалистов по их автоматизации. После окончания института студент получает квалификацию «инженер-математик». Студенты изучают практически все распространенные языки программирования (высокого и низкого уровня), уделяют внимание специальным языкам (предназначенным для решения узкопрофильных задач), а также знакомятся с пакетами готовых программ, которые в дальнейшем могут использовать в своих разработках (графические системы, СУБД, САПР и т. д.). Изучение этих предметов вырабатывает системное мышление, позволяет оценить проблему в комплексе – и подобрать наилучший вариант ее решения, применяя все полученные навыки.
Этапы работы
1. Любой процесс программирования начинается с постановки задачи.
Хорошо, когда программист – работник крупной фирмы или член группы разработчиков, таких же профессионалов, как он сам, а задачу перед ним ставит его коллега. Они будут разговаривать на одном языке и достаточно быстро поймут друг друга. Но если с заказчиком придется общаться самостоятельно, то надо приготовиться к длительной работе. Клиент чаще всего не в состоянии внятно объяснить, чего он хочет от новой программы, что должно в ней быть и как этому следует выглядеть на экране и в печатном документе. Наоборот, очевидное для заказчика программисту даже в голову не приходит. Так что на этом этапе последнему приходится выступать в какой-то степени в роли психолога, так как надо прояснить все непонятные вопросы, а потребитель, для которого они уже ясны, просто не считает нужным на них останавливаться – и раздражается, когда снова и снова уточняются непонятные формулировки. Кроме того, если люди друг друга поняли неправильно, вся остальная работа будет просто впустую затраченным временем. Этап завершается составлением технического задания, в котором максимально подробно описывается вся дальнейшая работа программиста.
В рамках этого этапа программисту часто приходится быстро освоить предметную область, о которой он раньше в лучшем случае только слышал. Сегодня надо рисовать географические карты, завтра придется моделировать биологические процессы, послезавтра – автоматизировать бухгалтерию и т. д. Да, узкопрофильными задачами чаще занимаются выпускники соответствующих вузов, в которых сейчас почти во всех есть специальность по информационным системам и автоматизации для конкретной области. Но неизвестно, где придется дальше работать. Поэтому человек, готовящийся стать программистом, должен уметь быстро находить необходимую для себя информацию в книгах.
Тут важно, чтобы не получилось как в известной шутке:
2. Далее следует определить, какая техника понадобится для автоматизации поставленной задачи.
Возможно, что мощности оборудования, имеющегося в распоряжении заказчика, не хватит для нормальной работы программы. Тогда надо дать рекомендации о закупке новых компьютеров с требуемыми характеристиками. Для чего, даже если вы уже давно закончили учебу, вам обязательно быть в курсе всего происходящего в области компьютерной техники, которая обновляется со скоростью, не виданной в других областях. Таким образом, непрерывное самообразование опять выходит на первый план.
3. Все вопросы прояснены – можно приступать, собственно, к написанию программы.
Этот процесс требует смирения и предельной точности. Команды компьютера формулируются абсолютно полно и четко. Машины могут делать только то, что им сказано, и потому выдаваемые им приказы не должны содержать ни малейшей двусмысленности. Поэтому этот этап начинается с разработки алгоритма, где излагается вся последовательность действий машины. При этом хорошенько продумайте все возможные варианты развития событий, опишите все возникающие ситуации: для этого и была предварительно внимательно изучена предметная область. Чем полнее алгоритм отслеживает стандартные и нестандартные ситуации, тем лучше будет работать программа в дальнейшем – и не зависать при каждом «удобном» (непредусмотренном) случае.
Не говоря о стандартных математических методах, для рационального написания алгоритма надо применить все свои навыки логического мышления, которое вырабатывается за годы решения математических задач. Почему все? Ведь вы не просто лично решаете задачу, а планируете такую последовательность команд, которая позволит компьютеру самому искать решение в каждом конкретном случае.
На этом же этапе программист определяется и с языком программирования, если это уже не сделано до него. Разные языки приспособлены для решения разных задач и при этом имеют свои достоинства и недостатки. Получив в процессе учебы представление о них, специалист должен выбрать оптимальный вариант как для себя лично, так и для других (программу, возможно, придется изменять и дорабатывать другому человеку) – а также не забыть о возможностях техники.
4. После написания программы начинается, как ни странно, самый трудоемкий этап – ее отладка.
В 90% случаев программа сработает не так, как задумывалось изначально. Обязательно найдется что-то непредусмотренное ситуация – и чтобы понять, в чем дело, приходится, задавая различные исходные условия, проходить все этапы шаг за шагом десятки раз, выявляя в лучшем случае непредвиденные ситуации, а в худшем – неправильное решение задачи. Человек, занимающийся такой работой, должен обладать завидной усидчивостью, терпением, спокойствием. Если этих качеств у вас нет, подумайте, стоит ли вам браться за программирование. Ведь вам будет очень сложно доводить дело до конца. Или вы остановитесь в своей профессиональной деятельности на маленьких задачках, заниматься которыми, конечно, тоже нужно – однако они не дадут интереса для ума и не принесут большой материальной отдачи.
5. Пусть все шаги успешно сделаны – останется последний: объяснить заказчику, что написанная программа – как раз то, что тот хотел.
В лучшем случае, если вы справились с постановкой задачи и на всех этапах работы контактировали с заказчиком (или постановщиком задачи), замечаний будет немного. Маленькие доработки – и программа готова.
В худшем… Придется привлечь все свои спокойствие и терпение и, набравшись горького опыта, начать сначала. При условии, если с вами захотят иметь дела.
Так что если вы решили, что программирование – это дело вашей жизни, то вас ждут МИРЭА, МГИЭМ и другие вузы. Но не забывайте, что высокооплачиваемым профессионалом вы сможете сделать себя только сами и учиться придется всю оставшуюся жизнь (или по крайней мере до пенсии).