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

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

    Как стать программистом? Этот вопрос возник у меня внутри около 5 лет назад и, мне кажется, что некоторые ответы я всё-таки получил. Давайте я попробую собрать в кучу все грабли и камни, по которым прошёлся и попытаюсь создать единую картину.

Зачем?

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

    Очень много людей разных возрастных групп и социальных слоёв сейчас заинтересовалось вопросом «Как стать программистом?». Кого-то заинтересовали неплохие зарплаты, кто-то вдохновился успехами и громкими стартапами, других же просто тянет к работе с технологиями. Чем чётче будет понимание, что же тянет Вас в it, тем проще будет держать в узде мотивацию и разжигать её в те моменты, когда будут опускаться руки. А они будут опускаться! Путь от первого запроса в гугле «как научиться программировать» до первых довольных пользователей Вашей программы — это сотни, тысячи часов за изучением книг, видео-уроков, курсов, статей. Порой будет казаться, что ничего не получается, всё очень сложно, да и зачем я за это взялся? Но не стоит поддаваться этим приступам. Результат стоит того!

    Если бы мне сейчас поговорить с тем собой, пятилетней давности, то путь изучения сократился бы минимум в двое. Мой процесс обучения в первое время был похож на хаотичное поглощение информации. Я знал одно — хочу стать программистом, но не знал как это сделать. Под напором мотивации поступил на дистанционное в университет получать высшее образование в этой области, начал активно изучать web-программирование, учить html, css, javascript, java, sql, читать что-то по алгоритмам и дискретной математике. Сейчас ясно одно, у меня не было чёткого плана, которого я мог бы придерживаться.

Какие перспективы?

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

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

   Лучшая работа — это высокооплачиваемое хобби. По-моему прийти к этому — отличная перспектива.

Выбор направления

Очень важный этап. Тут я допустил ошибку (но потом она сыграла мне на руку — в Android всё пригодилось), начал хватать всего по-маленьку, не понимая, чем же хочу точно заниматься. Действительно, новичку трудно ответить на этот вопрос. Для правильного выбора необходимо подумать на тему — что Вам нравится? Математика, точные науки, радиоэлектроника? Тогда стоит посмотреть в сторону Си.

    Может быть Вы видите себя создателем следующей успешной социальной сети? Тут дорога в веб технологии – HTML, Ruby, JavaScript, PHP, CSS. Хотите писать распределённые системы, банковское ПО? Добро пожаловать в мир Java. Или Вам по-душе мобильные технологии, как и мне? Тут есть 2 варианта — IOS vs Android.

    Ну а если не можете определиться, то можно пойти другим путём, открыть hh.ru и провести вечер за анализом зарплат разработчиков из разных направлений.

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

  • Не слишком быстро развивается. Не хотелось гнаться сломя голову за каждым свежим веянием.

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

  • Можно создавать одному.

  • Имеет большое сообщество.

  • Позволит найти в будущем работу.

        Моим выбором, подходящим под все пункты, стала разработка под Android. До того, как познакомиться с ним, я успел «пощупать» веб, изучить алгоритмы и базы данных. Благодаря этому освоение разработки под эту платформу стало для меня одним удовольствием.

Что и как изучать?

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

    Язык. Каждый язык имеет синтаксис и семантику. Вначале Вам придётся постигнуть основы, выучить синтаксис языка, на котором пишут в выбранной Вами области. Все языки различаются своей сложностью, стоит начать с наиболее простого. В Android это Java и Kotlin. Для изучения языка стоит подобрать книги. При чтении обязательно повторять примеры и выполнять задания. Голая теория без практики даст очень маленький КПД от книги. Фундаментальные вещи по Java – это 1 том Хорстмана и «Философия Java» от Брюса Эккеля. В начале пути не стоит распыляться, выберите пару источников и сконцентрируйтесь на них. Книгу обязательно читайте с маркером или карандашом, выделяйте важные моменты, старайтесь запускать все примеры кода, вносить в них изменения и наблюдать за изменениями. Параллельно с чтением найдите канал на ютубе или видеокурс по выбранному Вами языку. Опять же, для Java – очень полезны будут видео от Григория Кислина и Ивана Головач.

    Если Вам трудно воспринимать информацию через книги, то можно воспользоваться услугами компаний, предоставляющих образовательные курсы. Сейчас в интернете несколько крупных компаний — Skillbranch, «Специалист», Geekbrains. У Geekbrains, например, них есть курсы с разными направлениями, только нужно смотреть, кто преподаватель, изучить предварительно отзывы о нём.

    Когда Вы поймёте, что язык более — менее освоен, приступайте к освоению алгоритмов. Желательно найти книгу, в которой примеры будут на том языке, который Вы начали изучать. На Java есть восхитительная вещь от Роберта Лафоре с интерактивными примерами «Структуры данных и алгоритмы Java». Очень подробно и достаточно глубоко рассматриваются основные вещи. Этой книгой можно полностью заменить полугодовой курс по алгоритмам из университета. Обязательное условие — книгу не проглатывать. Не спешить, материала в ней много и он весь будет нужен! Результатом прочтения подобной литературы должно быть чёткое представление, какие бывают структуры данных и понимание основных алгоритмов. В будущем, работая над проектами, Вы должны видеть те места, в которых можно будет использовать полученные знания. Есть более простая вещь с примерами на питоне — «Грокаем алгоритмы». Не такая глубокая вещь, как у Лафоре, но тоже стоит внимания.

    Научились писать простые вещи на языке, жонглировать строками, сортировать массивы и разворачивать списки? Следующий шаг — освоение баз данных и шаблонов проектирования. В большинстве направлений Вам придётся хранить данные. Необходимо освоить SQL, он довольно простой для понимания и везде используется. Чтение книги + работа с примерами даст необходимый уровень для начала использования баз данных в своих первых программах. Мне очень понравилась книга «understanding sql».

    На этом этапе необходимо писать что-то простое с использованием технологий, которые Вы изучили. Практика, практика и ещё раз практика. Что бы научиться программировать — нужно программировать! Смотрите примеры чужого кода,общайтесь на тематических форумах, начинайте использовать библиотеки. Какие библиотеки начинать использовать? Открывайте вакансии и смотрите, что требуют на рынке. В основном из пары десятков вакансий можно сделать вывод, куда двигаться и что использовать в проектах, что бы было потом, что рассказать на собеседовании.

    Также необходимо учить английский язык. Большинство актуальной литературы и спецификаций на нём. Английский программисту обязателен. Установите в браузере расширение — переводчик. Разговаривать не обязательно, старайтесь читать. Если чтение освоили, приступайте к разговорному. Есть замечательный курс от Дмитрия Петрова, который шёл на канале культура. 

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

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

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

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

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

    Спасибо за внимание! Буду рад Вашим сообщениям на почте pikselnsk@gmail.com


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

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