Каждый раз, когда я посещаю r/programming, в обязательном порядке появляется сообщение программиста, которое гласит: “Я прошел курсы Sololearn, прочитал книги по программированию и закончил учебную программу по CS. Я даже понимаю большинство шуток о программировании. Итак, я уже достаточно хорош?”.
Обычно, когда я вижу эти посты и говорю: “Нет, это не так. Думаете ли вы в коде так же, как на своем родном языке? Если нет, то идите и перечитайте “Думайте как программист”.
Путь к свободному владению языком программирования долог, и конечной точки нет, в конце концов вам нужно отказаться от тестов по CS, разрабатывать свои собственные продукты и (я знаю, что вы этого ждали) искать работу.
Как избавиться от уверенности ученика программирования и стать профессионалом? Вот описание моего личного путешествия, шаг за шагом.
Шаг 1. Завершайте базовые проекты на выбранном языке
Мне грустно видеть, как многие студенты-программисты осваивают язык как набор абстрактных понятий, совершенно не зная, что с ним делать за пределами класса. Вот почему я неустанно подчеркиваю важность простых и понятных проектов, которые делают уверенного программиста — вот мои любимые из них.
Создайте игру в крестики-нолики на языке вы учитесь
Сама по себе игра проста, но влияние проекта на развитие вашего понимания логики программирования поразительно. Вот правила, которым следует следовать при кодировании:
- Создайте игровое поле из девяти плиток
- Назначьте размещение X игроку, а размещение O — компьютеру
- Добавьте всплывающее окно, которое спрашивает игрока, где он хочет поставить крестик
- После того, как игрок поставил крестик, компьютер размещает Заказ
- Определите победителя ##Создайте игру “Палач” (с графическим интерфейсом или без него) Эта задача разделена на две части — перевод основной логики игры в код и создание удобного интерфейса, чтобы сделать игру приятной для игроков. Для начала давайте обрисуем правила игры:
- Создайте список букв по 5-6 букв в каждой и сделайте так, чтобы для каждой игры , отображается случайная запись
- Попросите участников игры угадать буквы выбранного слова
- Если игрок угадывает правильную букву, используйте ее, чтобы заполнить соответствующий пробел
- Если игрок делает неверное предположение, дайте ему знать, сколько попыток у него есть, пока человек не будет повешен
После внедрения вышеприведенных принципов в свой код сосредоточьтесь на создании конечного продукта. Поскольку программирование – это не творчество, а функциональность, использование готовых пакетов графического интерфейса очень уместно. Для 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”