“Как стать программистом?”

Довольно часто слышу этот вопрос. Это, бесспорно, здорово, что множество людей собираются сделать программирование своей профессией. К сожалению, универсальную инструкцию написать практически невозможно, т.к. существует огромное количество направлений (веб-разработка, системное ПО, прикладное ПО, игровое ПО и пр) и языков (C/C++/C#, Java, JavaScript, PHP, Python, Ruby, Lisp, F# и т.д.), но какие-то общие соображения для начала обучения постараюсь Вам изложить.


Стартовые данные


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

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

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


Техническая и теоретическая подготовка


Как выбрать язык программирования для изучения? Каждый язык хорош по-своему и используется в различных областях. Есть огромное количество статей в Интернете по каждому из языков. Например, можно посмотреть обзорную статью по актуальным трендам 2015 года. Выбор за Вами, возможно Вам захочется начать с чего-то “попроще”.

Итак, Вы выбрали язык программирования, изучение которого Вы хотите начать.

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

А именно — выбрать операционную систему, в которой Вы будете составлять свои первые программы (необязательно сразу бросаться в область кроссплатформенной разработки!).

Например, для C/C++/C#, F# или Java можно выбрать Windows, т.к. для этих языков есть очень мощные и удобные среды программирования (IDE, Integrated Development Environment), являющиеся, “де-факто”, промышленными стандартами (Например, Microsoft Visual Studio для C-языков, Eclipse, NetBeans или продукты от JetBrains для Java, PHP, JavaScript, Ruby, Python и других языков).

Если Вы выбрали Linux-платформу — Вы можете использовать Code::Blocks, Eclipse, NetBeans или другие IDE (есть отличная страница в Wikipedia для сравнения сред разработки для разных платформ и языков)

Довольно часто возникают мелкие задачи, когда Вам не нужны все возможности IDE, а достаточно простого и удобного редактора кода. Как вариант — Notepad++ или UltraEdit под Windows, а под Linux-платформы: Sublime Text или Bluefish. Опять же, нужно учесть что редакторов кода и различных сред разработки существует множество, а Вам нужно выбрать для себя те средства, которые комфортны именно Вам.


“Поехали!”


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

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

Для примера — хорошая книга по алгоритмам (не обойтись и без “классики” — книг Никлауса Вирта и Дональда Кнута, но последняя тяжела для чтения новичкам).

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

Можно написать какой-нибудь плагин для существующей программы/системы (например, для FAR Manager или для какой-нибудь CMS). Конечно, не забывайте читать соответствующие книги по выбранному Вами языку и смотрите обучающие сайты.

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

А далее, как почувствуете что “окрепли”, имеете в своей копилке несколько законченных проектов (необязательно коммерческих) и не боитесь тестовых заданий (примеры которых Вы, конечно же, уже неоднократно решали на досуге и в процессе обучения) — пора искать работу по выбранному Вами направлению!

Постарайтесь выбрать ту компанию, в которой у Вас будет возможность развиваться в профессиональном плане. Можно для начала пойти junior-разработчиком. Определяющим фактором тут будет являться хорошая команда — опытные товарищи помогут быстрее “залатать” пробелы в Ваших знаниях, укажут на очевидные ошибки, подскажут как правильно применять шаблоны проектирования, поддержат в ситуациях когда “ничего не понятно”. Заодно, Вы получите незаменимый опыт профессиональной коммерческой разработки — научитесь следовать определенным правилам, принятым в командах и компаниях (например, по форматированию и документированию кода), разберетесь и привыкните использовать системы управления версиями, без использования которых ни один мало-мальски серьезный проект не должен обходиться, а также познакомитесь с системами багтрекинга (отслеживания ошибок) и научитесь рефакторингу.

Осваивайте новое, «шлифуйте» уже известные Вам вещи, помните что все в Ваших руках!

05.11.15
246
1 ответ
Опубликовать в социальных сетях

Рекомендуем личную консультацию

Виталий

С/C++/C#, Pascal/Delphi, PHP, Java/JavaScript, Visual Basic, консультации по web-разработке, удаленная помощь. Дорого, профессионально и качественно.
Посмотреть всех экспертов из раздела Технологии


Комментарии

Информативно и понятно.
Профессионально.
Спасибо, Виталий Геннадьевич.
05.11.15