Мой путь «в программисты»

в 14:20, , рубрики: обучение программированию, оффтоп, Песочница, Программирование, метки: , ,

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

Все ниже написанное — мой личный опыт и мнение( которое может быть и ошибочным ).

Если все еще интересно, прошу под кат

История болезни началась еще в школе. В 8-ом классе (2004-ый год). Когда мне стало интересно не только лазать по веб-сайтам, но и стало интересно создать что-то подобное. Так как знакомых/родственников программистов у меня не было, но был только компьютер с доступом в интернет, то на помощь пришел Google. Я узнал что такое HTML. Первые шаги мне помог сделать электронный учебник: «Алленова Наталья: HTML — Первые Шаги». Далее пошли эксперименты. Для написания HTML кода я использовал стандартный блокнот из Windows. Так прошло пол года.

К концу 8-ого класса я уже осознал, что на одном HTML ничего не сделаешь и что нужно использовать какой-то язык программирования (спасибо, Google!). Так как недалеко от дома находился книжный магазин, то я направился к нему, имея в руках небольшую сумму денег (порядка 10-15 долларов). Так как опыта небыло, то выбор пал на PHP, так как тогда это был наверное main stream. И бОльшая часть книг по программированию была посвящена именно ему. Это была книга Самоучитель PHP 5. Книга была написана довольно простым и понятным языком. Оглядываясь назад — PHP был не лучшим выбором для начала программирования. Сейчас я бы наверное обратил свой взор в сторону Ruby/Python. Программирование давалось мне не очень легко. Порой на нескольких главах я зависал по несколько недель. Но было чертовски интересно. Вечера пролетали незаметно. Я не «читал книгу». Я ее прорабатывал, отходил в сторону, пытался понять тонкости. Как программирования в целом, так и PHP. На это уходило намного больше времени, чем если бы было просто прочитать книгу (и большую часть забыть). Параллельно с этим познакомился с основами SQL и JavaScript.

Так закончился 8-ой класс и я дошел до середины 9-ого класса. Школа стала обременять меня, так как приходилось делать уроки и учиться, что мешало мне программировать. Написав несколько веб-сайтов и CMS «в стол» я решил, что стоит переключиться на что-то «более серьезное». «Вернуться к истокам» так сказать.

Приобрел две книги «Как программировать на С» и «Как программировать на C++» от Дейтел'ов. Засел с ними и так наверное продлилось до конца 10-ого класса. Книги были достаточно увесистыми и объёмными. Было ново и интересно (указатели, ручная работа с памятью, высокая производительность по сравнению с PHP).

После 10-ого класса я решил, что наверное стоит найти практическое применение своим навыкам. Я залез на российские фриланс сайты. Так как я был не очень активным в этом плане, то сделал наверное несколько простеньких работ, связанных с версткой шаблонов и несколько маленьких заказов связанных с программированием на PHP. Нужно сказать, что я был несколько разочарован. Заработал на этом 3 копейки. Да и мне хотелось программировать. БОльшая же часть того, что я видел на фрилансе связанным с PHP — было натягивание шаблонов на Joomla/Drupal. Я стал снова «писать в стол». Пытался достичь совершенного кода, переосмыслить то, что я делаю. (Лучше бы пару книг почитал по красоте кода).

Так закончилась школа. Начался институт. Я поступил на Информатику. Думал тогда, что «Теперь будет только то, что реально нужно, никакой ненужной шелухи». Это было весьма наивно. В университете в основном давались только те знания (в плане программирования) что я и так имел.

До конца первого курса я был весьма восторженным в плане обучения в университете и наивно верил, что «меня научат». И мало двигался вперед в плане программирования. Но на 2-ом курсе было не лучше и я понял, что если самому не двигаться, то никуда не придешь. За первые 2 года в университете я познакомился самостоятельно с несколькими PHP фреймворками и шаблонами проектированиями. Углубил свои знания SQL, JavaScript. Пересел под Linux.

Правда был и еще один плюс.
Я познакомился с Java. Язык мне очень понравился. Я много читал и практиковался. Начал изучение Java я с чтения книги David'a Eck'a Introduction to Programming Using Java. Тут же дало знать отсутствие знания английского языка. Литературы на русском нормальной и актуальной в плане Java весьма мало. Так что пришлось параллельно и свои умения в этом плане прокачивать. Далее пошло и поехало. Мне снова стало интересно, как программировать под Веб на Java. Это в принципе другой мир, еще не познанный мной до сих пор. Принципиальное отличие для меня было в том, что помимо самого языка Java приходилось узнавать еще и о существовании множества вещей, которые нужны для того что-бы «можно было начать писать код».

После 2-ого курса я устроился на работу младшим Java программистом. Где мне пришлось научиться быстро ориентировать в том, что плохо знаешь или не знаешь вообще: Maven, Ant, Ivy, Spring, Hibernate, Struts2, многопоточность.

Подводя итоги всему выше сказанному и проанализировав свой опыт, я могу сказать, что:

  • Я не читал различные толмуды о железе и устройстве компьютеров. Потому что на мой взгляд это знания полезные, но не обязательные.
  • Знание ассемблера тоже не обязательно, если ты хочешь заниматься веб разработкой.
  • Знание всех классических алгоритмов Кнута наизусть так же не обязательно. Быть энциклопедией ходячей еще не значит быть умным. Их всегда можно нагуглить. Главное уметь понимать, что какой-то твой алгоритм будет работать медленнее чем другой потому-то и потому-то (я вообще почему-то против тупого зазубрирвания всего). Приемлем он в какой-то ситуации или нет.
    Нужно постараться понять, что тебе действительно интересно, а для этого нужно эксперементировать.
  • Главное, на мой взгляд, интерес. Это как двигатель прогресса. Остальное приложится.
  • Так же очень не плохо, особенно неокрепшему уму почитать о хорошем тоне программирования. Я много говнокодил на начальном этапе и страдаю от этого до сих пор. Книга, которую пожалуй имеет смысл прочитать каждому: Чистый код Роберта Мартина.
  • Помимо того не стоит забывать о качестве кода. Существует такое понятие, как модульное тестирование. Оно же Unit тестирование.
  • Хорошо бы найти опытного программиста, который сможет подсказать, направить в нужное русло
  • Стараться иметь свою голову на плечах. Не делать все только потому что «кто-то сказал что так правильно» или «в такой-то книге написано, что так правильно». Всегда нужно исходить из конкретной ситуации. Прислушаться имеет смысл, но не значит, что нужно слушать во всем.
  • Ну и пожалуй самое главное никогда не нужно сдаваться. Если что-то не получается сегодня, то получится завтра. Путь программиста весьма не прям и тернист. Нет универсального рецепта что бы «стать программистом». У каждого он свой.

Буду рад вашим заметкам/комментариям и критике.
P.S. Получилось несколько сумбурно и порой несколько противоречиво, но надеюсь мой опыт будет кому-то полезен.

Автор: skywatcher


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js