Эта статья впервые появилась в блоге Codementor.

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

Не бойся! (๑ • ̀ ㅂ • ́) و✧

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

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

Примечание 2. Если вы хотите стать интерфейсным веб-разработчиком, этот список может оказаться для вас не таким полезным. Однако, если вы планируете перейти к полноценному веб-разработчику, эта статья может оказаться вам полезной.

Как дисциплинировать себя

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

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

Простой интерфейс Wunderlist позволяет легко установить повторяющуюся задачу, добавить примечания к задаче и многое другое. Бесплатная версия позволяет добавлять до 25 подзадач, что довольно удобно. Естественно, вы также можете организовать разные списки для различных целей, не связанных с программированием, и иметь список только для целей / задач программирования.

Вы можете установить приложение Wunderlist на свой телефон и рабочий стол (Mac / Windows), чтобы оно синхронизировалось с обеих сторон - таким образом, и ваш телефон, и ваш компьютер будут пилить вас по этому поводу. Для Linux нет приложения, но вы все равно можете использовать список в браузере и заставить его отправлять вам уведомления на рабочем столе (вам нужно сначала включить его, установив время напоминания для задачи).

Ресурсы для практики кодирования

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

CodinGame

Удовольствие - всегда лучшая мотивация, и геймеры наверняка найдут этот сайт весьма привлекательным. Интерфейс очень приятный и поддерживает все популярные языки программирования, такие как Python3, Java, C #, JavaScript, Ruby и т. Д. Фактически, упражнения даже поддерживают более нишевые языки, такие как Rust, Haskell и Scala. На сайте вы можете решать головоломки, от простых до очень сложных, создавать собственных AI-ботов для борьбы с другими ботами и соревноваться с другими членами сообщества посредством «столкновения кода».

CodeChef

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

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

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

Reddit’s r / DailyProgrammer

Доска Reddit / r / dailyprogrammer - также хорошее место, где можно найти задачи по программированию, над которыми можно поработать. В настоящее время существует более 200 испытаний для каждого уровня сложности, которые вы можете найти в их архивах, и он по-прежнему обновляется новыми испытаниями каждую неделю.

Вы также можете прочитать: 9 основных советов о том, как решить проблему программирования

Проектные идеи Мегалист

Программирование слишком скучно для вас? Ознакомьтесь с этим списком идей для программных проектов с более чем 10 тысячами звезд на GitHub - обязательно найдется что-то, что вы, надеюсь, заинтересуете. Вы также можете проверить решения других людей, если действительно застряли.

После того, как вы выполнили задачи программирования из списка, вы всегда можете обратиться к списку из 750+ проектных задач Rosetta Code, чтобы получить больше вдохновения, и каждая задача имеет решение на множестве разных языков программирования.

Ресурсы для улучшения ваших основ CS

Программистам-самоучкам часто не хватает правильного понимания фундаментальной информатики, например, того, как работают алгоритмы или структуры данных или почему решение лучше / эффективнее. Короче говоря, из этого ответа на Quora: Алгоритмы подобны глаголам, а структуры данных - существительным.

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

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

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

Курс алгоритмов Академии Хана

Если вы увлечены изучением алгоритмов и искали в Google, как улучшить свои знания о компьютерных алгоритмах, вы, вероятно, увидите, что люди рекомендуют книгу Введение в алгоритмы Кормена, которая является бестселлером №1 на Amazon. для алгоритмов программирования. Хотя вы не должны запоминать алгоритмы, упомянутые в книге, вы будете знать о существовании этих алгоритмов, которые будут вам очень полезны в долгосрочной перспективе.

Проблема в том, что эта книга совсем не подходит для начинающих, особенно если математика не ваша сильная сторона. К счастью, в Khan Academy есть очень красивый, бесплатный и удобный для начинающих курс, который познакомит вас с алгоритмами. И он разработан с помощью Кормена, автора книги Введение в алгоритмы. В конце концов, вы можете захотеть прочитать книгу, а если вы работаете над проблемами в ProjectEuler, вы, вероятно, захотите нанять наставника, который поможет вам решить их, если вы застряли.

Альгозавр

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

Visualgo

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

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

Страница в Википедии о шаблоне проектирования программного обеспечения

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

Нетворкинг

Вам не обязательно быть сетевым инженером, но вы можете иметь общее представление о том, как работает сеть, поскольку это поможет вам в долгосрочной перспективе. Этот потрясающий плейлист на Youtube от Eli the Computer Guy помог более чем миллиону людей понять, как работают компьютерные сети. Он не предназначен специально для программистов, но если вы даже не знаете, что такое сети, вы, вероятно, сочтете видео Эли вполне подходящими для начинающих. Каждое видео длится примерно от получаса до часа, поэтому вы, вероятно, захотите просто инвестировать в одно видео в день или около того, чтобы медленно продвигаться к усвоению информации. Эли - довольно забавный парень, так что он сможет удерживать ваше внимание в течение такого количества времени.

40 ключевых концепций информатики, объясненные на языке непрофессионала

Этот список основных концепций информатики прост для понимания и является хорошим местом для начала, поэтому неудивительно, что это один из самых популярных постов на форуме Reddit / r / learnprogramming. Список представляет собой лишь краткое изложение терминов, и его предстоит много раз переварить, когда вы получите более глубокое понимание этих терминов. Итак, не торопитесь, читая связанные страницы Википедии.

MIT OpenCourseware для EECS

Ресурсы, которые я перечислил выше, все еще в значительной степени для новичков, которые могут разобраться в концепциях CS. Если вы хотите глубже погрузиться в информатику и разработку программного обеспечения, сайт MIT OpenCourseware - хороший ресурс, который поможет вывести основы компьютерных наук на новый уровень. Вы можете читать конспекты лекций, загружать учебные материалы и выполнять те же домашние задания и экзамены, что и на предыдущих курсах MIT. Вам нужно покупать / брать напрокат предлагаемые материалы для чтения самостоятельно и быть очень самостоятельным. По мере того, как предметы становятся более продвинутыми, вы, вероятно, расстраиваетесь, но настойчивость окупится.

Возможно, вам стоит начать укреплять свои основы с Структуры и интерпретации компьютерных программ, который является обязательным курсом для всех студентов MIT на факультете информатики. Однако большинство курсов в некоторой степени привязаны к определенному языку, поэтому лучше, если вы знаете Python, чтобы выполнить домашнее задание / экзамены по курсу Введение в алгоритмы, или Java для своего курса Элементы конструирования программного обеспечения и других курсов, связанных с программной инженерией. .

Университет открытого кода

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

Еще один способ получить более глубокое понимание информатики - пройти курс обучения в OpenCourseware, который включает курсы, которые помогут вам улучшить свои математические / логические навыки. Учебная программа связана с отличными бесплатными МООК от лучших университетов мира.

В идеале вы должны вкладывать как минимум 1-2 часа в день, чтобы завершить этот учебный план, но результат того стоит.

Ресурсы, которые помогут вам создавать приложения

Что, если ваша самая большая мотивация изучать компьютерное программирование - это на самом деле создавать вещи, и вы не хотите каждый день работать над сложными проблемами программирования?

Даже если вы не заинтересованы в создании чего-либо, вам все равно следует работать над своими собственными проектами, чтобы узнать, как на самом деле создавать продукты. Основы CS только помогут вам понять, как программно решать проблемы, но эти знания не помогут вам понять, как создать приложение, которое действительно будет решать реальные проблемы - единственный способ научиться - это что-то построить.

Я уже писал статью о том, как создать собственное приложение с нуля, но вот несколько инструментов, которые вы можете использовать, чтобы упростить этапы планирования (хотя вашим ресурсом номер один, естественно, должен быть Google 😉).

Рабочий поток

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

Draw.io

Логика вашего приложения потребует некоторой разработки, и чтобы иметь более четкое представление о том, как все работает, вы должны ее наметить - будь то блок-схема, ER-диаграмма или какая-то UML-диаграмма. Используйте инструмент для построения диаграмм, чтобы упростить этот процесс, особенно если цыплята могут поцарапать что-то более разборчивое, чем ваш почерк. Draw.io - это бесплатный онлайн-инструмент для создания диаграмм, но если вам не нравится пользоваться браузером, попробуйте Dia. Это не самый красивый интерфейс с точки зрения дизайна пользовательского интерфейса, но он мощный и хорошо работает в Windows, Linux и Mac OS.

Репозиторий API ProgrammableWeb

При создании приложения вам, вероятно, потребуется реализовать некоторую функцию, созданную другими разработчиками, чтобы облегчить вашу жизнь (например, непрактично создавать Карты Google самостоятельно), или, может быть, вы захотите получить информацию из какой-либо службы, такой как Twitter. Ваша программа взаимодействует с этими службами через их библиотечные API, и этот огромный каталог содержит более 14 000 API, из которых вы можете выполнять поиск, что очень полезно, если вы ищете решения или ищете API для изучения. Однако, если вы уже знаете, что хотите использовать, поиск в Google будет быстрее.

Если вы не знаете, как использовать API, у Codecademy есть несколько треков API, которые помогут вам начать работу с API.

WWW SQL Designer

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

Вы также можете прочитать: 7 шагов для эффективной и действенной отладки

Дополнительно

DevDocs

Научиться читать код из проектов с открытым исходным кодом на GitHub - важный шаг на вашем пути к тому, чтобы стать разработчиком. Этот сайт в значительной степени является вашей конечной точкой для изучения языка или документация по фреймворку - она ​​очень быстрая и с возможностью поиска. Просто включите или отключите нужные вам стеки, и вы легко сможете найти документацию по тому, что вы пытаетесь использовать. Этот сайт особенно полезен, если вы пытаетесь прочитать исходный код и не понимаете, что он делает.

Учебник Rest API

Если вы хотите стать внутренним разработчиком веб-приложения или какой-либо облачной службы, вам нужно будет создать API-интерфейсы для облегчения взаимодействия между сервером и клиентом (браузером). Это руководство поможет вам создать API в соответствии с лучшими отраслевыми практиками.

Кодементор

Здесь мы пообщаемся, но Codementor - это место, где вы можете получить помощь по программированию. На нашей платформе более 4000 опытных разработчиков, владеющих различными технологиями, вы можете получить индивидуальное наставничество по запросу один на один. Если вам нужен обзор кода, у вас проблемы с пониманием какой-либо концепции, вы застряли на задаче / упражнении по программированию или не можете заставить свой код работать и не понимаете почему, это, вероятно, одно из самых удобных для новичков мест. чтобы получить помощь. Если вы хотите стать лучшим разработчиком и укрепить свою уверенность в себе, Codementor также поможет вам в этом.

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

Если вы студент и не имеете дохода, и ваши родители не могут спонсировать вас, подумайте о том, чтобы получить помощь через каналы iRC или поискать в Google / прочитать ответы на StackOverflow.

Git Game

Если вы не понимаете, как использовать git, систему контроля версий, вам следует. Git позволяет вам сотрудничать в командных проектах, а также спасет вашу жизнь, если вы что-то напутали, и, откровенно говоря, у вас мало причин не использовать git в своих проектах. Эти две маленькие игры - интересный способ узнать и понять, как использовать команды git. Если вы еще не знаете, как использовать основные команды git, эта статья поможет вам понять, как использовать git и GitHub.

Заключение

Стать профессиональным разработчиком - непростая задача, и, как видно из ресурсов, многому можно научиться. Наличие прочного фундамента - это только начало. Процесс обучения никогда не остановится, потому что вам постоянно придется идти в ногу с новыми технологиями и решать новые рыночные / бизнес-задачи.

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

Многим компаниям или вакансиям не нужны гении алгоритмов, поэтому позвольте опыту формировать ваши навыки и не торопитесь.

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

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