Недавно обнаружил на Habrahabr упоминание о цикле моих статей "Стать программистом после сорока".
Характерно, что пост пост был написан белорусским журналистом, который, видимо, пробует сменить профессию. Автор предположил, что я перестал писать потому, что бросил новое дело, так как профессия программиста значительно сложнее, чем это кажется со стороны, и освоить её не так просто.
Это действительно непросто. Освоить программирование и работать наравне с профессиональными инженерами, посвятившими этой специальности годы - уже по-настоящему трудно. И сложно. Но я учёбы не бросил. Когда начинаешь освоение нового дела, со временем приходит азарт и желание учиться, развиваться дальше, расти.
От простого к сложному
Когда я начинал писать эту серию материалов, я считал, что не только смогу обратить внимание читателей на новую, перспективную профессию, но и сам буду осваивать её быстрее. К сожалению, этот расчёт не оправдался. Даже минимальное продвижение в программировании давалось с невероятным трудом. Одно время я вдруг обнаружил, что практически перестал понимать книги и пособия, которые читаю. А умел я, на тот момент, лишь пользоваться самыми несложными стандартными функциями PHP, мог создавать простейшие формы, сохранять данные в текстовый файл и т.д. Но, это, конечно же, нельзя назвать программированием.
Следующим этапом стали курсы IT-академии компании "Белхард" (причем, о некоторых из них я уже писал). Вначале мы бегло прошли устройство компьютера, физические технологии хранения и передачи данных и даже освежили в памяти некоторые основы электротехники. Затем так же быстро пробежались по технологиям, лежащим в основе работы ЭВМ с данными - системами счисления, устройством регистров памяти, указателями и т.д. Отдельный небольшой курс был посвящён диаграммам UML, довольно полезному визуальному инструменту отображения структуры программ.
Какой язык выбрать?
Далее началось программирование. Правда, это пока был только язык С, на курсах, уже учебного центра "Белхард" (в "Белхарде" два таких предприятия). И давался он мне с превеликим трудом. Так как не было у меня никогда ни технического образования, ни опыта и знаний в области построения алгоритмов, то проблемы, конечно, возникли сразу же. Фактически, лишь на пятом занятии я до конца разобрался с теми задачами, которые мы проходили на первых двух. Я с завистью посматривал на своих более технически подкованных товарищей, которые разбирались с задачами намного быстрее, чем я. Фактически, закончив курс, я всё ещё не понимал многое из того, что мы проходили. И это меня удручало. Но, к счастью, через месяц "переваривания" информации и работы дома, я всё-таки смог "доизучать" курс С самостоятельно. Курс С дал нам довольно много. Мы изучили типы данных, операторы, условия, циклы, массивы, структуры, объединения. Мы научились писать небольшие программы, которые запускались в консоли.
Встал вопрос, а куда же двигаться дальше? Мне советовали пройти курс С++, но я не решился. Язык этот мне не нравится, используется он сейчас всё реже. А тратить время на что-то, что в дальнейшем не пригодится, несмотря, может быть, на то, что это полезно, не хотелось. Надо было выбрать какую-то широко распространённую технологию, которая даст мне возможность последующего трудоустройства. PHP я уже изучать не хотел. И не потому, что у PHP-специалистов зарплата гораздо ниже, чем в целом по отрасли. Я решил заняться серьёзным, настоящим программированием, а PHP - это на 80% просто работа с различными строками, перемещение их туда-сюда и т.д.
Расспрашивая спецов, изучая форумы в интернете, мы с моими новыми знакомыми (которые появились на курсах) выяснили, что таких технологий сейчас две - это C# (ACP.NET) и Java. Выбрали Javа, как более свободный и распространённый кроссплатформенный вариант. Кроме того, на Java пишутся программы под Android, который я давно уже хотел попробовать освоить. Таким образом, двое из нас (я и мой приятель по курсам С) отправились изучать Java, а один выбрал С#.
Java
Изучение Java, которое я начал в той самой IT-академии "Белхард" было более интересным, так как сулило возможность некоего (пока ещё весьма призрачного) практического применения, потому как это всё-таки был начальный курс. В основе своей синтаксис Java немногим отличается от С. Те же циклы, условия, массивы. Но в нём поддерживается и отлично развита объектная модель программирования, система классов. Используются методы, конструкторы. По счастью, мы немного касались темы классов во время обучения языку моделирования UML. Наш замечательный преподаватель Махсен, который приехал в Минск из Ирана, довольно часто, по нашей же просьбе, иллюстрирует материал диаграммами UML. И структура программы становится яснее.
Думаю, в данном материале приводить примеры кода бессмысленно. Поэтому буду двигаться дальше.
Обучение как процесс
Ловлю себя на мысли, что всё написанное мной выглядит довольно скучным и совсем не таким эмоциональным, как в первых статьях цикла. Более того, теперь я уже с трудом могу объяснить то, чем сейчас занимаюсь, людям, с программированием не связанным. Это для них выглядит непонятной казуистикой, в чём я уже убедился. Только для того, чтобы выйти на уровень новичка, требуется полное погружение и много месяцев упорного труда.
Для тех, кто ещё не пробовал изучить программирование, но собирается начать, я посоветую поиграть с визуальным языком программирования Blockli, который разработали специалисты Google. Так вы сможете немного лучше представить себе, как работает любая программа. Вкратце, алгоритм представляет собой инструкцию, которую мы даём компьютеру для выполнения неких действий. Причём, инструкция состоит из ограниченного числа операций и команд и арифметических операций, с помощью которых требуется описать все многочисленные действия ЭВМ.
Могу посоветовать посетить клуб программистов, созданный на базе "Белхарда". Это бесплатный кружок, где новичкам помогают разобраться в самых простых элементах программирования. Клуб ведёт Александр Викторович Павельев, по субботам, с 18.00 до 21.00 (тел. +375-44-7447554). У него вы, кстати, сможете записаться на бесплатную лекцию, посвященную программированию или даже на недорогой базовый курс, посвящённый основам компьютерной техники, программного обеспечения и сетей.
Ну, а желающим изучить новую профессию, хочу пожелать успехов и упорства. Это нелегко.
Эдуард ТРОШИН
Комментарии
Не в обиду: многие, освоив азы С, думают именно так. И вообще, думается, нет языка, который можно бы было "доизучить".
Тут всё-таки про курс, а не про язык, так что такое вполне реально.
C - единственный высокоуровневый язык на котором можно "сидеть" 30 и более лет не слезая с него и НЕ переучиваясь на другой язык.
Ах, ну да, ну да, извиняюсь. Автор взял программу курса C и "доизучил". Идея: не наладить ли вместо курсов выпуск программ курсов и торговать ими? :))
А если серьёзно, то я болею за нашего общего знакомого, и мне очень интересно, чем закончится эксперимент, который он поставил над собой. Дожить бы.
Не знаю, как до сеньора, но до джуниора, мы с Майком, очевидно, доживём.
Мне статья понравилась. Так и ждал Хэппи Энда. Но история, как я понимаю, все еще не закончена, ждем части 3?
ждем части 3)
Вообще-то, это будет уже седьмая статья.
Первая Вторая Третья Четвёртая Пятая Это - шестая. Следующая - седьмая. Но была ещё одна, только в PDF-версии:-). Думается, надо округлять до 10 и тогда уже заканчивать:-)