Рубрики
Без рубрики

Итак, вы изучаете язык программирования, отлично! Но как вы начинаете кодировать?

Как избавиться от уверенности ученика программирования и стать профессионалом? Вот описание моего личного путешествия, шаг за шагом. Помечено как начинающие, java, программирование, обучение.

Каждый раз, когда я посещаю r/programming, в обязательном порядке появляется сообщение программиста, которое гласит: “Я прошел курсы Sololearn, прочитал книги по программированию и закончил учебную программу по CS. Я даже понимаю большинство шуток о программировании. Итак, я уже достаточно хорош?”.

Обычно, когда я вижу эти посты и говорю: “Нет, это не так. Думаете ли вы в коде так же, как на своем родном языке? Если нет, то идите и перечитайте “Думайте как программист”.

Путь к свободному владению языком программирования долог, и конечной точки нет, в конце концов вам нужно отказаться от тестов по CS, разрабатывать свои собственные продукты и (я знаю, что вы этого ждали) искать работу.

Как избавиться от уверенности ученика программирования и стать профессионалом? Вот описание моего личного путешествия, шаг за шагом.

Шаг 1. Завершайте базовые проекты на выбранном языке

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

Создайте игру в крестики-нолики на языке вы учитесь

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

  • Создайте игровое поле из девяти плиток
  • Назначьте размещение X игроку, а размещение O — компьютеру
  • Добавьте всплывающее окно, которое спрашивает игрока, где он хочет поставить крестик
  • После того, как игрок поставил крестик, компьютер размещает Заказ
  • Определите победителя ##Создайте игру “Палач” (с графическим интерфейсом или без него) Эта задача разделена на две части — перевод основной логики игры в код и создание удобного интерфейса, чтобы сделать игру приятной для игроков. Для начала давайте обрисуем правила игры:
  1. Создайте список букв по 5-6 букв в каждой и сделайте так, чтобы для каждой игры , отображается случайная запись
  2. Попросите участников игры угадать буквы выбранного слова
  3. Если игрок угадывает правильную букву, используйте ее, чтобы заполнить соответствующий пробел
  4. Если игрок делает неверное предположение, дайте ему знать, сколько попыток у него есть, пока человек не будет повешен

После внедрения вышеприведенных принципов в свой код сосредоточьтесь на создании конечного продукта. Поскольку программирование – это не творчество, а функциональность, использование готовых пакетов графического интерфейса очень уместно. Для Java я обычно использую Swing — доступны десятки элементов интерфейса.

Проведите свое исследование

Если эти примеры проектов слишком просты, в Интернете есть множество примеров, которые помогут вам отточить свое мастерство программиста. Вот список платформ, которые являются обязательными для студентов-программистов.

  • Code gym – это курс обучения Java, который предлагает десятки Java-игр для начинающих и учащихся среднего уровня.
  • ZetCode делится набором удивительных 2D-игр на Java (вы можете либо просмотреть код нескольких существующих проектов, либо получить практический опыт разработки игр с практическими проблемами).
  • Codingame – один из моих любимых практических проектов, доступный более чем на 25 языках, потому что он учит начинающих разработчиков брать на себя ответственность. По сути, платформа позволяет программистам вносить свой вклад в создание глобальной игры, начиная с того места, где остановились ваши коллеги. ## Шаг 2. Используйте платформы coding challenge, чтобы убедиться, что вы уверены в применении языка программирования в реальном мире, посвятите заключительные этапы обучения разработке программного обеспечения получению как можно большего практического опыта в области программирования. Хорошей новостью является то, что существует множество полезных ресурсов, которые бросают вызов разработчикам с головоломками и практическими задачами. Вот мои любимые из них: ## 1. Код тренажерного зала (Java) Я преподаватель Java и энтузиаст — вот почему я особенно радуюсь обсуждению новых проектов. Прямо сейчас Code Gym – это первая платформа, на которую я обычно направляю студентов. Во—первых, этот ресурс ориентирован только на Java – таким образом, восприятие языка командой разработчиков является очень глубоким.

Помимо этого, я нахожу, что кривая обучения, которую предлагает CodeGym, чрезвычайно хорошо структурирована – все практические задачи сгруппированы в зависимости от того, на какую концепцию они нацелены. Вы можете найти десятки задач по синтаксису Java, а затем перейти к коллекциям, приведению типов, ООП и другим концепциям.

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

2. Coderbyte (JS, Java, Python, Objective-C, Swift и другие)

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

3. Codechef (поддерживает 35 языков программирования: C+ C++, Java, Python и др.)

Если вы хотите ввести дружескую конкуренцию в процесс обучения, обязательно попробуйте Codechef. На этой платформе регулярно проводятся соревнования по программированию и предлагается широкий спектр задач для Java, Python, C и других популярных языков. Вы можете написать и проверить правильность своего кода с помощью встроенного редактора инструментов (с довольно удобным интерфейсом, если вы спросите меня).

4. LeetCode (C, C#, C++, Python, Ruby, Java и JS)

Если вы собираетесь искать работу программиста, не пропустите LeetCode. Эта платформа – реальное решение для практики кодирования в реальных условиях и подготовки к собеседованиям с работодателями.

LeetCode поддерживает семь языков программирования — C, C#, C++, Python, Ruby, Java и JS. Вы можете изучить два режима платформы — задачи, сгруппированные по темам, или “Имитационное интервью” — режим, в котором вас засыпают вопросами по кодированию, касающимися всех аспектов языка, и у вас есть ограниченное количество времени, чтобы ответить на проблему.

5. Онлайн-судья сферы (более 45 языков программирования, включая Haskell, Ocaml и эзотерические)

SPOJ – одна из крупнейших платформ для практики программирования, с более чем 20 тысячами задач программирования. Sphere Online Judge также регулярно проводит хакатоны, позволяя разработчикам встречаться лицом к лицу и совершенствоваться вместе.

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

Шаг 3. Попросите коллег о помощи

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

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

Таким образом, когда вы получите свою первую работу программиста, у вас не возникнет проблем с тем, чтобы сделать офис своим вторым домом. Где вы можете связаться с программистами? Я просмотрел форумы и каналы связи, которые я проверяю, чтобы связаться с коллегами — надеюсь, это поможет.

Каналы Reddit

Общее программирование:

  • r/программирование
  • r/обучение программированию
  • r/код вместе
  • r/инструменты программирования
  • r/gamedev
  • статьи r/progrr
  • r/webdev
  • r/dailyprogrammer ### Языки программирования:
  • Java: r/java, r/javahelp
  • JavaScript: r/javascript, r/LearnJavaScript
  • Быстрый: r/быстрый
  • Цель-C: r/цель c
  • PHP: r/php
  • Python: r/python, r/learnpython
  • C#: r/csharp
  • C: r/c_программирование ## Слабые каналы ### Общие сведения
  • Разработчики хэштегов — крупнейший программный канал на Slack.
  • European Dev Explorer — полезный канал для разработчиков, которые рассматривают возможность переезда в европейскую страну — охватывает рынки труда, стоимость жизни, налоги и т.д.
  • Угловой JS Чат — место, где лучшие разработчики Angular делятся кейсами и отвечают на вопросы по кодированию.
  • DevOps Chat — одно из самых занудных сообществ Slack, в основном посвященное глубоким концепциям DevOps. ### Языки программирования:
  • #рубин
  • #php
  • #питон
  • #node.js
  • #перейти ## Другие платформы Вот другие известные форумы, на которых обычно общаются как начинающие, так и продвинутые программисты:
  • StackOverflow — платформа безраздельно властвует среди одноранговых форумов. Здесь вы можете получить как ответ на теоретический вопрос, так и практические советы, а также обоснованную обратную связь по вашему коду.
  • SitePoint — еще один популярный форум среди веб-разработчиков и дизайнеров. Помимо того, что вы разбираетесь в разработке, общение на SitePoint поможет понять коллег из других отделов (UI/UX, маркетинг и т.д.).
  • Новости хакеров — форум номер один для хакеров, освещающий последние новости отрасли, отвечающий на вопросы и делящийся опытом работы. ## Шаг 4. Делитесь своими проектами в Интернете, заведите привычку форматировать код и файл Readme каждого завершенного вами проекта комплексно, чтобы сотрудник не испытывал затруднений при его чтении. Если у вас еще нет учетной записи на GitHub — заведите ее немедленно (для меня большое количество проектов на Github – это то, что отличает студентов-программистов от профессионалов).

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

  • Подробно опишите проект в файле Readme, чтобы дать сотрудникам представление о вашей работе
  • Избегайте вставки готовых фрагментов кода StackOverflow или Github. Переписывание – это нормально, но прямое использование того, что написали другие, – нет, поскольку вы не сможете подробно объяснить работу кода
  • Тщательно назовите все объекты и переменные. Начинающим разработчикам свойственно создавать переменные со странными именами, предназначенными только для внутреннего использования, в строках “0hy1”. Такая практика именования может показаться более быстрой, однако она делает ваш код чрезвычайно непонятным и сложным в обслуживании в долгосрочной перспективе
  • Оставляйте комментарии, чтобы убедиться, что другой программист поймет проект. Поскольку в какой-то момент вы будете работать в компании, оставлять комментарии для руководства коллегами, которые возьмут на себя управление проектом, является обязательной практикой. Вот почему лучше выработать привычку комментировать свои действия на ранней стадии и публично делиться только прокомментированным кодом
  • Модульное тестирование ваших проектов. Все знают, что модульное тестирование – это работа разработчика, поэтому сотрудники привыкли ожидать этого от кандидатов на работу
  • Придерживайтесь согласованной структуры и стиля кода на протяжении всего проекта ## Заключение Как вы можете видеть, изучение языка программирования – это только начало вашего пути в программировании. Хорошая новость заключается в том, что все, что ждет вас в будущем, весело и увлекательно, поскольку вы наконец-то можете создавать реальные решения, искать оплачиваемую работу и с гордостью называть себя разработчиком.

Чтобы преодолеть разрыв между обучением и профессионализмом, сосредоточьтесь на использовании теоретических знаний для решения практических задач, создавайте свои проекты в Интернете и делитесь ими, а также не забывайте посещать онлайн—сообщества разработчиков – Stack overflow, темы Reddit и каналы Slack. Начните писать здесь…

Оригинал: “https://dev.to/selawsky/so-you-learn-a-programming-language-great-but-how-do-you-start-coding-2icm”