Обучение программированию с нуля: с чего начать изучение в домашних условиях
Каждый раз, с трудом преодолевая жизненные преграды, хочется взять и перекроить этот мир под себя. К сожалению, мы не рождены творцами этой вселенной. Тем, кто хочет удовлетворить свои амбиции создателя, остается лишь виртуальный мир.
Хотя для творения здесь понадобится не столько волшебство и знание рун, сколько знание основ программирования. Поэтому для всех начинающих творцов виртуальной реальности мы поведаем о том, как научиться программировать.
Что нужно знать «чайнику»
Как бы ни хотелось этого признавать, но в реальности программирование является не таким уж волшебным делом. Создание кода порой можно сравнить с хождением босыми ногами по морскому дну, устланному острыми каменными обломками.
Чтобы стать программистом, нужно быть не только умным, но еще терпеливым и настырным. Обучение программированию всегда сопровождается головой болью, красными от недосыпания глазами и отрешенным взглядом. Именно по нему можно легко узнать программиста.
Многие начинающие обучение считают написание кода чуть ли не самой романтической профессией. Особенно увеличилось количество желающих познать программирование после просмотра фильма «Матрица». Именно главный герой этой картины Нео подтолкнул многих к становлению на путь постижения программных наук:
Но большая часть начавших изучение бросают его уже через несколько недель. И основной причиной этого является неправильно выбранное направление обучения, методика или даже учебник по программированию.
Особенности обучения программированию на постсоветском пространстве
После развала СССР все отечественные ВУЗы долгое время даже и не пытались перекроить свою систему обучения под потребности современного рынка. Не являлись исключением из этого правила и технические ВУЗы.
Программирования как отдельной отрасли и специализации не существовало как таковой. Его основы преподавались лишь как привязка к другим инженерным дисциплинам. И даже те крохи знаний, которые давались студентам в этой области, не соответствовали современным стандартам и утратили свою актуальность еще 20-30 лет назад.
В странах бывшего СССР основным языком программирования, преподаваемым в технических ВУЗах, был Бейсик.
Ситуация кардинально не изменилась и через 10 лет. Лишь некоторые учебные заведения, учуяв веяния нового времени, в начале двухтысячных года начали перекраивать свое обучение под мировые стандарты. И только с этого момента программирование стало восприниматься как отдельная профессия и специализация обучения:
В это же время стали появляться различные специализированные коммерческие курсы и учебные заведения. Но качество преподавания и даваемых в них знаний находились на крайне низком уровне. Не хватало грамотных профессионалов, способных обучить новичков не только теоретическим знаниям, но и практическим навыкам программирования.
А это в профессии программиста является наиболее важным аспектом. Поэтому большинство из сегодняшних гуру российской IT-индустрии начинали свое обучение программированию с нуля самостоятельно.
В некоторой мере такая тенденция сохраняется и по сей день. Хотя в наше время количество профессионалов, занимающихся преподаванием, заметно возросло.
С какого языка начать изучать программирование
Постижение программных наук характеризуется не только тяжелым обучением, но и его началом. Новичку порой трудно не только начать самостоятельное обучение, но и определиться с координатами отправной точки процесса. Поэтому мы постараемся помочь вам обойти все эти трудности:
Прежде чем ломать зубы об гранит науки, следует определиться, с чего начать изучение программирования. На первых этапах очень трудно определиться со специализацией. Поэтому начнем с подбора первого языка.
Чаще всего выбор падает на язык программирования C (си). Именно с него большинство новичков во всем мире начинают свое обучение. На основе C было создана основная часть программных языков, и во многом они наследуют его структуру и синтаксис.
Изучая C, вы постигаете основы не одного языка программирования, а сразу нескольких.
Рассмотрим особенности этого языка, делающего его оптимальным для изучения:
- Простая для понимания основа – часть встроенных возможностей языка для простоты вынесена в отдельно подключаемые библиотеки. К таким элементам относится большая часть математических функций и методов для работы с файловой системой;
- Оптимально подогнанная система типов – благодаря простому набору типов данных и строгой типизации уменьшается риск допущения ошибок в процессе написания программного кода;
- Направленность C на процедурный тип программирования, при котором соблюдается четкая иерархия всех элементов кода;
- Доступ к памяти машины с помощью указателей;
- Минимальное количество поддерживаемых ключевых слов;
- Поддержка области действия имен;
- Поддержка пользовательских типов данных (объединения и структуры).
Проще говоря, C – это то, с чего следует начинать новичку перед тем, как научиться программированию на других языках.
Программы (компиляторы) для программирования
Для обучения программированию недостаточно одного лишь желания и наличия компьютера с выходом в интернет. Для написания программ на C вам потребуется специализированное программное обеспечение – компилятор.
Компилятор – специальная программа, переводящая программный код в форму, понятную для компьютера.
Вот несколько специализированных компиляторов с поддержкой языка C:
- Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:
- Borland C++ — бесплатный компилятор, идеально подходящий для начинающего обучение. В отличие от предыдущего инструмента, отличается ясным и понятным интерфейсом. Поэтому его освоение не вызовет особых трудностей даже при самостоятельном освоении азов программирования:
- Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:
Что касается специализированной литературы, то советовать книги определенных авторов мы не будем. Тут, как говорится, выбирайте, что душе угодно. Потому что в большинстве случаев подбор самоучителя по программированию – это индивидуальный процесс. Используйте тот источник, который больше подходит именно для вас.
Да и в интернете можно найти очень много информации. Например, на нашем сайте специализированной литературе по IT тематике посвящен целый раздел.
Тенденции на рынке программирования
После освоения основ программирования у многих сразу появится вопрос, куда двигаться дальше. Уже на этом этапе обучения следует задумываться о выборе основной специализации в области программирования. Вот те, которые больше всего востребованы на современном рынке:
- Веб-программирование – здесь понадобятся знания PHP, CSS и HTML;
- Разработка приложений под мобильную операционную систему Android – данная платформа построена на основе Java. Поэтому потребуется знание основ этого языка;
- C# (си sharp) – дальний потомок C. На основе C# построена веб-технология ASP.net от Microsoft.
И последний совет всем начинающим. Перед тем, как приступить к обучению программированию с нуля, следует запастить терпением. А также: таблетками от головной боли, кофе, чаем и побрить череп наголо. Потому что во время постижения программных наук, обучающиеся часто вырывают волосы со своей головы вместе с корнем. Удачного старта!
www.internet-technologies.ru
10 способов научиться программировать самостоятельно | Статья
25 апреля 2015, 09:30
Программирование — один из ценнейших навыков для карьерного роста, саморазвития и создания чего-нибудь удивительного. Десять советов для тех, кто только начинает своё путешествие в мир программирования, от Lifehacker.
Читать далее
Выбранное направление в учёбе будет зависеть в большей степени от того, почему именно вы хотите научиться программировать и сколько времени вы готовы уделять этому процессу. Если вы хотите стать программистом, первое что следует сделать — это записаться на профессиональные курсы (Google скомпилировал список навыков и курсов для тех, кто хочет стать инженерами-программистами). Если вы хотите создавать игры и веб-сайты для развлечения в свободное время, лучшим выбором являются интерактивные курсы. Bloc создал сравнительную таблицу курсов в зависимости от загрузки, стоимости и причины изучения программирования.
Не существует лучшего языка программирования, и как только вы выучите один, вам будет нетрудно освоить и второй. Так что не стоит зацикливаться на выборе первого языка. Тем не менее, считается, что некоторые языки даются новичкам легче, чем другие.
Язык, с которого стоит начать, зависит от причины изучения. (К примеру, если вы хотите создать приложение под iOS, вам лучше начать с изучения Swift). Если вы со всей серьёзностью отнеслись к намерению программировать, можно начать с языка C. Хотя выбрав Python, вам будет проще влиться в струю программирования. Приводим инфографику для сравнения нескольких популярных языков программирования.
Независимо от выбора языка или метода обучения, вам следует начать с самого начала. Когда Дэвид Сински (David Sinsky) научился программировать за восемь недель, он, к примеру, потратил одни выходные на изучение основ Python, а другие — на Django. Взяв учебник, он удалял написанный код и снова проходил обучающий материал с нуля. Начните с основ и будьте терпеливы к себе. Взяв первый проект в программировании, разделите его на несколько этапов. И если один из способов обучения вам не подходит, не опускайте руки — попробуйте другой.
Сейчас даже малыши учатся программированию. Несмотря на то, что многие программы для детского обучения весьма просты, некоторые из них (например, Scratch) подходят для любого возраста. Не имеет значения, сколько вам лет, даже детские анимационные приложения могут научить основам программирования (у edX есть новый курс обучения по Scratch).
Бесплатные онлайн тренинги и проекты (Codecademy, Hour of Code и др.) могут помочь вам в написании первой программы. Учебные пособия от Khan Academy, Codecademy, Code.org и других познакомят с основами программирования и всем необходимым для создания игры, сайта или другого проекта. Найдите нужный источник в зависимости от языка программирования, воспользовавшись Bento. Это хорошая отправная точка, однако дальнейшее обучение вам нужно взять на себя.
Онлайн-курсы по программированию предполагают более обширную образовательную подготовку по сравнению с сайтами, предлагающами онлайн-тренинги по одному языку. Такие курсы предназначены для обучения основным навыкам в течение нескольких месяцев на занятиях университетского уровня. Я большой поклонник гарвардского онлайн-курса CS50 (его можно пройти бесплатно). Существуют также другие возможности. Вы даже можете получить образование университетского уровня, выбрав один из 15 онлайн-курсов.
Если вы застряли на какой-то проблеме или вам нужно найти ответ на свой вопрос, не стоит забывать о справочниках. На GitHub можно найти огромную коллекцию из более чем 500 бесплатных книг по программированию. Также доступна коллекция электронных книг, охватывающая 24 языка программирования.
Иногда лучшим способом обучения являются игры. В то время, как многие учебники по программированию обучают вас программировать простые либо сложные игры, некоторые обучающие сайты сами являются играми: Code Combat и CodinGame — инструменты, используя которые вы можете весело провести время.
Сообщество программистов полно людей, готовых помочь следующему поколению программистов. Hack.pledge() — сайт, который поможет вам найти наставника. Либо вы сами можете стать наставником для кого-то другого. Преподавание изученного поможет вам лучше запомнить информацию.
Переписывая чужой код, исследуя каждую строчку на предмет ошибок, вы сможете лучше понять общую картину. Благодаря открытым исходникам кода, вы имеете возможность узнать всё, что угодно — продолжайте учиться, используя инкрементально-хакерский подход. Только не забудьте поделиться своим кодом, если вам удастся улучшить часть ПО.
dev.by
Как стать программистом с нуля самостоятельно
С чего начать учится программированию с нуля чайнику?
В этой статье я постарался подробно разобрать, можно ли стать программистом с нуля самостоятельно и какие варианты есть для того, чтобы освоить программирование самостоятельно и начать зарабатывать на этом.
UPD: Тем, кто ищет, с чего начать изучать программирование с нуля в 2018 (или пока только собирается и приступит в 2019 :)), сильно повезло благодаря книге Якова Крамаренко «Введение в разработку программного обеспечения». Я искренне рекомендую с ней ознакомится — она стоит того, чтобы обновить статью №1 по рейтингу Google и отзывам читателей для тех, кто изучает программирование самостоятельно.
Постарался дать самый лучший — на мой взгляд — путь. Предупреждаю — он не из легких! Дальнейшее прочтение может стоить вам многих часов интересных занятий 🙂
Скажу сразу — если вы решите изучать программирование только самостоятельно, не вкладывая денег — придется потратить больше времени. Рассчитывайте на освоение новой специальности минимум через год, если занимаетесь обучением параллельно с другой работой.
Если вы найдёте, чем дополнить эту статью, чтобы сделать её полезнее для людей — напишите в комментариях.
С чего начать изучение программирования
В этой статье собраны лучше практики, исходя из моего опыта, если вы хотите самостоятельно освоить программирование. Всё это по прежнему актуально с парой дополнениий.
Книга по веб-программированию для начинающих
В 2018 появилась книга «Введение в разработку программного обеспечения» Якова Крамаренко. Для изучающих программирование с нуля — возможно лучшая книга, с которой стоит начать. Книга освещает начальные шаги в веб-разработке, не затрагивая серверной части. Яков в доступной форме рассказывает про HTML, CSS и Javascript, которые необходимы, если вы изучаете веб-программирование.
Поэтому теперь у вас есть выбор — дочитать до конца эту статью и воспользоваться моими рекомендациями, или начать с книги Якова 🙂
Ви можете розпочати вчити програмування українською or start learn programming in English — все варианты доступны! Главное начать 🙂
Для тех, кто только начинает освоение программирования я считаю это хорошим вариантом. Книга доступна бесплатно, хотя она стоит того, чтобы заплатить автору!
Бесплатный онлайн-курс для изучения программирования
Также я очень рекомендую Гарвардский курс по основам программирования CS50: https://cs50.harvard.edu/.
Версия 2016 года есть в переводе: https://courses.prometheus.org.ua/courses/Prometheus/CS50/2016_T1/about.
Лучше пройти курс на английском. И язык прокачаете, и информация посвежее. Хотя сильно курс не менялся — только в 2017 вместо PHP начал использоваться Python.
Прохождение курса займёт время, но даст довольно полное понимание, которое сложно иначе получить самостоятельно.
Дальше — мои оригинальные рекомендации, актуальные и сегодня.
Каким программистом стать?
Первоначально нужно решить, какое направление программирования вас интересует. Если речь идет о изучении разработки с нуля и вы хотите начать скоро зарабатывать на этом, то на мой взгляд варианта два: разработка для мобильных устройств или веб-разработка.
Лучший выбор в такой ситуации — на мой взгляд — начать изучать веб-разработку. Здесь ниже порог входа для новичков и есть возможность раньше начать выполнять несложные заказы.
Поэтому дальше я буду рассказывать о том, как самостоятельно изучить веб-разработку и начать программировать под веб.
Как самостоятельно стать программистом с нуля
Если бы я начинал с нуля изучать веб-разработку самостоятельно (понимая, что без вложения денег это более долгий путь), то сам себе я бы порекомендовал такой путь:
1. Разобраться в HTML и CSS
Хороший курс для базового освоения HTML и CSS: https://learn.shayhowe.com/html-css/ (English) или https://webref.ru/layout/
По возможности я рекомендую все материалы читать на английском — он 100% понадобится вам в работе программистом.
После этого стоит посмотреть на возможности Bootstrap, который стал стандартом де-факто для ускоренной разработки веб-приложений: http://getbootstrap.com/
Этого будет достаточно для следующих шагов.
Возможно на этом этапе вы захотите остановиться и изучить CSS подробнее. Это даст вам возможность работать верстальщиком — человеком, который делает из дизайна статическую HTML страницу, после чего программист ее оживляет, реализуя логику проекта.
На этом тоже можно зарабатывать — как на фрилансе, так и работая в ИТ-компании, которая специализируется на веб-разработке.
Но раз мы решили стать программистом — двигаемся дальше!
2. Познакомиться с jQuery
Для этого я рекомендую книгу «jQuery — учебник для начинающих»:
http://anton.shevchuk.name/
Если понравилось — можно продолжить разбираться с frontend и начать изучать Javascript.
Если следом пойдет https://angularjs.org/ или http://backbonejs.org/ — то это путь во фронт-енд разработку. Хорошая специальность, тем более, что такие знания пригодятся любому программисту, который выбрал веб-разработку.
Мой совет — пока остановиться на jQuery и двигаться дальше.
3. Освоить серверный язык программирования
Тут выбор большой. Самые перспективные языки программирования — Ruby, Java, Python, Node.JS (Javascript для сервера).
Самым простым языком программирования для начинающего будет Python. Если вы изучите Python, а затем фреймворк Django для веб-разработки — у вас будет все необходимое для самостоятельной реализации довольно сложных проектов.
Хороший вариант — язык программирования Python и Django
Плюс — Python и Django научат вас «правильному» программированию. Python стабильно входит в ТОП5-10 самых востребованных языков, а хорошие специалисты в Python одни из самых высокооплачиваемых программистов. Python одновременно простой и понятный для начинающих программистов язык программирования, и при этом используется во многих крупных компаниях и на больших проектах.
Вообщем я люблю Python и рекомендую начать с него.
Для самостоятельного освоения прочтите «Python для детей» Джейсона Бриггса или посмотрите:
Язык программирования Python за 10 минут
Язык программирования Python — подробно для начинающих
Среди других материалов рекомендую Learn Python The Hard Way. книгу «Простой Python. Современный стиль программирования». И, конечно The Python 2 Tutorial и The Python 3 Tutorial.
Django — возможно лучший фреймворк для веб-разработки
Лучший инструмент на все случаи жизни очень сложно найти. Django имеет все шансы стать таким инструментом для веб-разработки.
Я точно рекомендую познакомится с ним.
С чего начать для изучения Django:
Начните с официальной документации, там очень хороший tutorial: https://docs.djangoproject.com/en/2.1/intro/
Затем посмотрите http://www.tangowithdjango.com/
Tango with Django — это хорошая возможность подтянуть английский и одновременно получить понимание того, как устроены веб-проекты и как всё работает.
Вариант №2 — PHP и WordPress
Другой путь — начать с PHP и работы с популярными CMS. Если вы изучаете программирование сами и хотите быстро начать работать — начните с PHP.
Многие считают PHP «не совсем настоящим» языком программирования и для этого есть основания. PHP редко используется в крупных веб-приложениях и заточен только для веб — использовать его в других областях не получится.
С другой стороны — PHP лидирует по количеству запущенных в мире сайтов. На нем основаны самые популярные CMS (системы управления сайтами).
Для старта рекомендую книгу: «Изучаем РНР и MySQL» авторов Линн Бейли и Майкл Моррисон
После этого разберитесь с созданием тем под WordPress — это вероятно самая популярная CMS в мире, если оценивать по количеству запущенных сайтов.
Хорошо разобравшись с этим, уже можно найти работу. Под PHP и WordPress очень много сайтов, поэтому работы хватит всем.
Как начать зарабатывать программистом
Многие представляют работу программиста-фрилансера так:
Или так:
На самом деле это выглядит примерно так:
Если вы готовы к работе программиста и ищете способ зарабатывать — добро пожаловать на фриланс! Фриланс-биржи позволят вам найти простые заказы (возможно почти бесплатно на первых порах) — чтобы получить практику. Как правило, работа в ИТ-компании может быть прибыльнее, если вы просто ищете работу программиста.
Уже после пункта 2 — освоив HTML, CSS и jQuery — можно идти на фриланс биржи и брать несложные заказы, нарабатывая профиль.
Знаете английский? https://www.upwork.com/
Совсем нет, даже со словарем? http://freelance.ru/
К тому времени, когда вы сможете самостоятельно делать сайты, вам будет проще найти клиентов — будут отзывы и опыт.
Быстрый путь в веб-разработчики
Исходя из моего опыта, на изучение программирования с нуля уйдет от 6 до 12 месяцев в лучшем случае, при этом 6 месяцев — это если вам кто-то помогает.
Чтобы ускорить процесс входа в ИТ — ищите возможность пойти на тренинг (возможно понадобится не один) или найдите человека, который будет заниматься с вами. Реально без человека, который передаст вам свои знания — очень сложно, можно просидеть год за книгами и так и не начать. А со знающим человеком, который может просто рассказать о сложных вещах — намного легче.
В свое время я выбрал путь входа через тренинг. При том, что я много знал о разработке, это позволило мне за 2 месяца освоить то, на что могло уйти полгода. Ищите свой путь.
У меня есть курс программирования для начинающих, которые серьезно приняли решение начать карьеру программиста, и хотят ускорить этот процесс. Есть много других курсов. Если вы найдёте себе ментора — человека, который проведёт вас за руку — это заметно сократит ваш путь в разработчики.
Как только почуствуете уверенность в том, что можете что-то создать — ищите компанию, где сможете развиваться дальше или клиентов.
HTML, CSS, Python и Javascript — это только базовые знания, первый этап. Дальше очень важна практика, изучение алгоритмов и инструментов для разработки.
Если есть вопросы — задавайте в комментариях! Надеюсь эта статья поможет вам сделать первый шаг. Успехов!
itman.in
Как выучить программирование с нуля
Как учить программирование с нуля
1. Самостоятельно
Если вы обладаете железной силой воли и горите желанием стать программистом, то можете добиться своей цели с помощью самообразования. Это не самый простой и короткий путь: вам придётся самому разбираться в информационном хаосе и бороться с прокрастинацией. Зато вы можете учиться в удобное время за относительно небольшие деньги или же совсем бесплатно.
Начинать проще всего с интерактивных онлайн-курсов. В Сети есть множество площадок, материалы которых доступно объясняют основы программирования и задают направление для дальнейшего развития. Особое внимание уделяйте тем курсам, которые обучают на примерах реальных проектов, то есть поэтапно рассказывают, как создавать конкретную программу или сайт.
Платформа с бесплатными курсами по веб-разработке freeCodeCampЗапомните, что у вас ничего не получится без практики. Учитесь по проектно-ориентированным курсам и пытайтесь сами писать разобранные в них программы и сайты. Ищите лекции на YouTube с разбором проектов, которые вы бы хотели разрабатывать. Сначала копируйте работу других людей и анализируйте её. Затем пробуйте отходить от оригинала, экспериментируйте, изменяйте отдельные элементы, пока не сможете создавать что-то уникальное.
Помимо курсов и видеолекций, к вашим услугам официальная документация, доступная на сайтах языков, и книги. Когда разберётесь в основах, поищите свежие издания с подзаголовком Best Practices по выбранному языку программирования. Такие книги содержат лучшие приёмы разработки.
Обязательно поставьте перед собой цель создать свой проект и постоянно работайте над ним.
Это поможет закрепить полученные знания и понять, какой информации вам ещё не хватает. Ваши навыки будут развиваться вместе с проектом. Когда закончите его, работайте над новым — более сложным.
Если у вас возникнут трудности в процессе обучения или разработки, вы всегда сможете обратиться по любому вопросу к сообществам программистов вроде «Тостер» и Stack Overflow. Вам, например, помогут решить какую-нибудь задачу, выбрать хороший курс или укажут на ошибки в коде.
Сервис вопросов и ответов на технологические темы «Тостер»Оттачивать навыки удобно на специальных площадках, где можно посоревноваться с другими программистами, решая с помощью кода различные практические задачи. В числе таких сервисов — Codewars, TopCoder и HackerRank.
Если почувствуете, что ваше развитие зашло в тупик, или захотите ускорить обучение, попробуйте следующие варианты.
13 советов тем, кто изучает программирование самостоятельно →
2. С помощью ментора
Ментор — персональный наставник, который указывает на ошибки, предупреждает о подводных камнях, помогает прокладывать курс обучения. Полезная рекомендация, полученная в нужный момент, может избавить вас от многих проблем и сэкономить массу времени. Поэтому ментор никому не помешает.
Узнайте, есть ли среди ваших знакомых разработчики. Возможно, кто-нибудь из них захочет вам помогать. Если таких людей вы не знаете, можете поискать их в сообществах программистов. К примеру, на том же «Тостере». Только услуги менторства стоят недёшево, а за просто так тратить много времени на незнакомых людей никто не желает.
3. У преподавателей «живых» курсов
Дистанционные и очные курсы с преподавателями, которые обучают программистов с нуля, стали невероятно популярными за последние годы. В рамках этого формата вам также предстоит очень много работать самостоятельно. Зато вы будете заниматься по профессионально подготовленной программе, а решения задач будет проверять живой человек. К недостаткам курсов можно отнести высокую стоимость обучения.
Популярные русскоязычные онлайн-площадки, которые занимаются системной подготовкой программистов: «Нетология», GeekBrains и Loftschool.
Если предпочитаете заниматься очно, можете поискать образовательные центры, которые обучают программированию в вашем населённом пункте. К сожалению, такие заведения чаще всего присутствуют только в больших городах. В качестве примера можно привести компьютерную академию «ШАГ», у которой есть филиалы в нескольких странах.
4. В университете
Если у вас много времени в запасе и вы уверены, что хотите связать жизнь с программированием, можете изучать компьютерные науки в университете. Но имейте в виду, что традиционные учебные заведения отстают от прогресса, так что современные языки программирования и прочие технологии вам придётся осваивать самостоятельно.
С другой стороны, университет даст фундаментальные знания математики, алгоритмов и других областей, которые помогут вам стать высококлассным программистом. За годы усердной учёбы вы сформируете правильный тип мышления, благодаря которому будете схватывать всё на лету в профессиональной сфере.
Как выбрать направление и язык
В ИТ-индустрии можно выделить несколько направлений, в каждом из которых используют свой набор языков. Перечислим основные направления в порядке возрастания сложности:
- Веб-разработка. Популярные языки: JavaScript, PHP, Python, Ruby.
- Мобильная разработка. Популярные языки: Java, Swift.
- Разработка игр и программ для настольных компьютеров. Популярные языки: C++, C#, C.
- Big Data, машинное обучение. Популярные языки: Python, R, Scala.
На что обратить внимание при выборе
Чтобы сделать правильный выбор направления и, в частности, языка, учитывайте следующие факторы: сложность освоения и количество обучающих материалов в Сети, ваши личные предпочтения (что именно хотите разрабатывать) и востребованность языка на рынке труда.
График востребованности языков на международном рынке труда / research.hackerrank.comВостребованность языка в вашем регионе легко проверить на сайтах для поиска работы. Просто откройте раздел для разработчиков ПО и посмотрите количество доступных вакансий.
ИНФОГРАФИКА: Какой язык программирования учить первым →
Если не можете определиться
Если вы в замешательстве, присмотритесь к JavaScript — языку, на котором написан почти весь веб. Многие организации и программисты советуют новичкам выбирать именно этот язык в качестве первого.
Например, основатель образовательного ресурса freeCodeCamp Квинси Ларсон рекомендует JavaScript всем начинающим. Ларсон приводит очень простые аргументы:
- JavaScript относительно легко освоить. А чтобы написать что-то и запустить на этом языке, достаточно иметь редактор кода и браузер.
- JavaScript — самый востребованный язык на международном рынке труда и у него большие перспективы. В экосистему JavaScript инвестируют крупные компании вроде Google, Microsoft и Facebook.
- У JavaScript очень широкая сфера применения: от сайтов и браузерных игр до мобильных приложений.
Кроме того, вокруг этого языка сформировалось крупное сообщество разработчиков. Высокий интерес к JavaScript обеспечивает огромное количество курсов, книг и другого образовательного контента.
Что ещё должен знать программист: математика и английский?
Любому программисту не помешает глубокое понимание математики. Для таких направлений, как разработка игровой графики или большие данные, математический ум — это необходимость. Но что касается веб-разработки и создания несложных программ, то в большинстве случаев без математики можно обойтись. Хотя среди профессионалов на этот счёт нет единого мнения.
А вот понимание английского, хотя бы на уровне беглого чтения документации, обязательно для всех программистов. Официальные документы и большая часть образовательных материалов появляются в первую очередь на английском языке. Книги часто устаревают ещё до того, как выходит перевод. Кроме того, знание английского открывает перспективы для работы со всем миром.
Как выучить английский язык: всё самое интересное и полезное →
Как получить первый опыт и первую работу
Чтобы найти первую работу в качестве программиста, вы должны иметь портфолио. Это созданный вами проект, а лучше несколько, которые демонстрируют все ваши умения разработчика. В программу большинства курсов входит разработка проектов, которые могут войти в ваше портфолио.
Очень ценным пунктом в резюме будет наличие опыта работы, особенно командной разработки. Но где его взять, если вы ищете первую работу?
- Выполните несколько заказов на биржах фриланса. Это могут быть «Фрилансим» или Upwork. Предлагайте свои услуги бесплатно, тогда к вам придут первые заказчики.
- Найдите единомышленников и создайте с ними общий проект. Люди объединяются для таких целей почти на каждой образовательной площадке, где есть курсы по программированию.
- Выберите курсы, организатор которых помогает с трудоустройством. Например, в GeekBrains после обучения открывается доступ к стажировкам от разных компаний, в том числе — оплачиваемым. GeekUniversity и «ШАГ» гарантируют трудоустройство своим выпускникам.
Перед собеседованием не забудьте поискать в Сети списки задач и вопросов, которые часто задают соискателям.
lifehacker.ru
Как стать программистом с нуля самостоятельно
Как стать программистом с нуля самостоятельно? С чего начать учится программирование чайнику?
Мы подготовили подробную инструкция, как освоить программирование и писать оптимизированный, понятный код.
Как учить программирование с нуля?
1. Самостоятельно
Если вы обладаете железной силой воли и горите желанием стать программистом, то можете добиться своей цели с помощью самообразования. Это не самый простой и короткий путь. Вам придётся самому разбираться в информационном хаосе, зато вы сможете учиться в удобное время и совсем бесплатно.
Начинать проще всего с интерактивных онлайн-курсов. В сети есть множество площадок, материалы которых доступно объясняют основы программирования и задают направление для дальнейшего развития.
Особое внимание уделяйте тем курсам, которые обучают на примерах реальных проектов, то есть поэтапно рассказывают, как создавать конкретную программу или сайт.
Платформа с бесплатными курсами по веб-разработке freeCodeCampЗапомните, что у вас ничего не получится без практики. Учитесь по проектно-ориентированным курсам и пытайтесь сами писать разобранные в них программы и сайты. Ищите лекции на YouTube с разбором проектов, которые вы бы хотели разрабатывать. Сначала копируйте работу других людей и анализируйте её. Затем пробуйте отходить от оригинала, экспериментируйте, изменяйте отдельные элементы, пока не сможете создавать что-то уникальное.
Помимо курсов и видеолекций, к вашим услугам официальная документация, доступная на сайтах языков и книги. Когда разберётесь в основах, поищите свежие издания с подзаголовком Best Practices по выбранному языку программирования. Такие книги содержат лучшие приёмы разработки.
(!) Обязательно поставьте перед собой цель создать свой проект и постоянно работайте над ним.
Это поможет закрепить полученные знания и понять, какой информации вам ещё не хватает. Ваши навыки будут развиваться вместе с проектом. Когда закончите его, работайте над новым — более сложным.
Если у вас возникнут трудности в процессе обучения или разработки, вы всегда сможете обратиться по любому вопросу к сообществам программистов вроде «Тостер» и Stack Overflow.
Вам, например, помогут решить какую-нибудь задачу, выбрать хороший курс или укажут на ошибки в коде.
Оттачивать навыки удобно на специальных площадках, где можно посоревноваться с другими программистами, решая с помощью кода различные практические задачи. В числе таких сервисов — Codewars, TopCoder и HackerRank.
2. С помощью ментора
Ментор — персональный наставник, который указывает на ошибки, предупреждает о подводных камнях, помогает прокладывать курс обучения. Полезная рекомендация, полученная в нужный момент, может избавить вас от многих проблем и сэкономить массу времени. Поэтому ментор никому не помешает.
Узнайте, есть ли среди ваших знакомых разработчики. Возможно, кто-нибудь из них захочет вам помогать. Если таких людей вы не знаете, можете поискать их в сообществах программистов. К примеру, на том же «Тостере». Только услуги менторства стоят недёшево, а за просто так тратить много времени на незнакомых людей никто не желает.
3. У преподавателей «живых» курсов
Дистанционные и очные курсы с преподавателями, которые обучают программистов с нуля, стали невероятно популярными за последние годы. В рамках этого формата вам также предстоит очень много работать самостоятельно. Зато вы будете заниматься по профессионально подготовленной программе, а решения задач будет проверять живой человек. К недостаткам курсов можно отнести высокую стоимость обучения.
Популярные русскоязычные онлайн-площадки, которые занимаются системной подготовкой программистов: «Нетология», GeekBrains и Loftschool.
Если предпочитаете заниматься очно, можете поискать образовательные центры, которые обучают программированию в вашем населённом пункте. К сожалению, такие заведения чаще всего присутствуют только в больших городах.
4. В университете
Если у вас много времени в запасе и вы уверены, что хотите связать жизнь с программированием, можете изучать компьютерные науки в университете. Но имейте в виду, что традиционные учебные заведения отстают от прогресса, так что современные языки программирования и прочие технологии вам придётся осваивать самостоятельно.
С другой стороны, университет даст фундаментальные знания математики, алгоритмов и других областей, которые помогут вам стать высококлассным программистом. За годы усердной учёбы вы сформируете правильный тип мышления, благодаря которому будете схватывать всё на лету в профессиональной сфере.
Как выбрать направление и язык
В индустрии информационных технологий можно выделить несколько направлений, в каждом из которых используют свой набор языков. Перечислим основные направления в порядке возрастания сложности, обратите внимание что мы выбрали самые популярные и распространенные языки программирования:
- Веб-разработка: JavaScript, PHP, Python, Ruby.
- Мобильная разработка: Java(Android), Swift, Objective-C(IOS).
- Разработка игр и программ для настольных компьютеров: C++, C#, C.
- Искусственный интеллект, машинное обучение: Python, R, Scala.
На что обратить внимание при выборе?
Чтобы сделать правильный выбор направления и, в частности, языка, учитывайте следующие факторы: сложность освоения и количество обучающих материалов в Интернете, ваши личные предпочтения (что именно хотите разрабатывать) и востребованность языка на рынке труда.
График востребованности языков программирования на международном рынке труда / research.hackerrank.comВостребованность языка в вашем регионе легко проверить на сайтах для поиска работы. Просто откройте раздел для разработчиков ПО и посмотрите количество доступных вакансий.
Если не можете определиться
Если вы в замешательстве, присмотритесь к JavaScript — языку, на котором написан почти весь веб. Многие организации и программисты советуют новичкам выбирать именно этот язык в качестве первого.
Например, основатель образовательного ресурса freeCodeCamp Квинси Ларсон рекомендует JavaScript всем начинающим. Ларсон приводит очень простые аргументы:
- JavaScript относительно легко освоить. А чтобы написать что-то и запустить на этом языке, достаточно иметь редактор кода и браузер.
- JavaScript — самый востребованный язык на международном рынке труда и у него большие перспективы. В экосистему JavaScript инвестируют крупные компании, такие как Google, Microsoft и Facebook.
- У JavaScript очень широкая сфера применения: от сайтов и браузерных игр до мобильных приложений.
Кроме того, вокруг этого языка сформировалось крупное сообщество разработчиков. Высокий интерес к JavaScript обеспечивает огромное количество курсов, книг и другого образовательного контента.
Что ещё должен знать программист: математика и английский?
Каджому программисту не помешает глубокое понимание математики. Для таких направлений, как разработка игровой графики или большие данные, математический ум — это необходимость. Но что касается веб-разработки и создания несложных программ, то в большинстве случаев без математики можно обойтись. Хотя среди профессионалов на этот счёт нет единого мнения.
А вот понимание английского, хотя бы на уровне беглого чтения документации, обязательно для всех программистов. Официальные документы и большая часть образовательных материалов появляются в первую очередь на английском языке. Книги часто устаревают ещё до того, как выходит перевод. Кроме того, знание английского открывает перспективы для работы со всем миром.
Как получить первый опыт и первую работу
Чтобы найти первую работу в качестве программиста, вы должны иметь портфолио. Это созданный вами проект, а лучше несколько, которые демонстрируют все ваши навыки разработчика. В программу большинства курсов входит разработка проектов, которые могут войти в ваше портфолио.
Очень ценным пунктом в резюме будет наличие опыта работы, особенно командной разработки. Но где его взять, если вы ищете первую работу?
- Выполните несколько заказов на биржах фриланса. Это могут быть «Фрилансим» или Upwork. Предлагайте свои услуги бесплатно, тогда к вам придут первые заказчики.
- Найдите единомышленников и создайте с ними общий проект. Люди объединяются для таких целей почти на каждой образовательной площадке, где есть курсы по программированию.
- Выберите курсы, организатор которых помогает с трудоустройством. Например, в GeekBrains после обучения открывается доступ к стажировкам от разных компаний, в том числе — оплачиваемым. GeekUniversity и «ШАГ» гарантируют трудоустройство своим выпускникам.
(!) Перед собеседованием не забудьте поискать в Интернете списки задач и вопросов, которые часто задают работодатели.
Присоединяйтесь в наш Telegram-канал чтобы быть в курсе всех последних новостей из мира Apple, Samsung, Microsoft, Google и других инновационных компаний.
cumgeek.com
Как я сам научился программировать за 8 недель / Хабр
Для многих, кто никогда не программировал, обучение программированию кажется невероятно сложной задачей. Как бы то ни было, спасибо тому огромному количеству ресурсов, которые недавно стали доступны в Интернет и являются бесплатными — самообучение программированию никогда еще не было таким простым.Я начал изучать программирование в начале этого года, и могу сказать по своему опыту, что изучение достаточного количества материала, чтобы создать свой собственный прототип не такая уж и сложная задача, как вам кажется. В самом деле, если вы хотите иметь рабочий прототип в течение двух месяцев, не прибегая к использованию отгулов, это абсолютно выполнимая задача.
Ниже я описал простой путь от ничего не зная о разработке программного обеспечения до обладания рабочим прототипом за восемь недель, который примерно повторяет шаги, которые я выполнил.
Получение начального понимания языка программирования Python и общих методов программирования (2 выходных дня):
- Learn Python the Hard Way. Несмотря на название, это довольно простой способ, он делает изучение основных понятий очень легким, и большинство уроков займет менее 10 минут. Тем не менее, я обнаружил, что данный способ не работает для некоторых, более сложных тем, так что я рекомендую остановиться после урока 42 и двигаться дальше.
- Google’s python class. Читайте заметки и / или смотрите видео и делайте все упражнения, пока вы не будете выполнять их правильно — не подсматривая в ответы. Борясь с упражнениями, которые я постоянно делал неправильно было очень полезным для меня в качестве полученного опыта, и я узнал бы гораздо меньше, если бы я просто посмотрел на ответы и пытался убедить себя, что я понял упражнение.
Эти два ресурса немного взаимозаменяемы. Я рекомендую делать первые несколько уроков из обоих чтобы увидеть, какой вам больше нравится. После того как вы закончили один из них, просмотрите в другом те понятия, которые усвоились не в полной мере, это хороший способ получить дополнительную теорию и практику.
Получение начального понимания веб-фреймворка Django (1 выходной):
- Пройдите Django учебник.
- Удалите весь код, который вы создали в процессе выполнения шагов из учебника.
- Пройдите учебник еще раз, заново.
В первый раз я прошел учебник от начала до конца просто следуя инструкциям, шаг за шагом, без полного понимания, что каждый шаг делает, так как все было в новинку.
Во второй раз я не был так сосредоточен на новизне концепции и смог сосредоточиться на понимании того как все части взаимосвязаны.
Получение более глубокого понимания Python / общих концепций программирования (4-8 выходных дня):
Опять же, я хотел бы рекомендовал попробовать каждый из них и посмотреть, какой вам понравится больше. Я делаю оба, но это, наверное, перебор.
Практика построения простых веб-приложений (2 выходных дня):
- Выполняйте упражнения из Django в примерах. Эти упражнения не так строго ведут ученика, как учебник Django, но они предлагают хороший способ, чтобы начать разрабатывать свои собственные простые веб-приложения.
Создайте свой прототип (2 выходных дня):
Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?
Следующие шаги:
Само собой разумеется, что существует огромная разница между относительно беглым объемом знаний, необходимого для создания простого прототипа (в разрезе данного поста) и объемом знаний и опыта, необходимые, для того чтобы стать действительно квалифицированным инженером-программистом.
P.S. Ниже приведены несколько другие потенциально полезные ресурсы — пожалуйста, оставьте ссылки в комментариях, если у вас есть предложения по другим ресурсам, которые обучают программированию:
Оригинал: How I Taught Myself to Code in 8 Weeks
habr.com
Программировать с нуля. «Сейчас» — самое подходящее время, чтобы начать
(Иллюстрации к статье А.П. Ершова «Программирование — вторая грамотность»)
Стив Джобс не написал ни строчки кода, Билл Гейтс — написал. Пол Грэм — первоклассный программист, Питер Тиль — юрист по образованию, сооснователь PayPal и владелец Palantir (написал ли он что-нибудь?), а Илон Маск в детстве написал свою игру и успешно её продал.
Никита truesnow из #tceh сказал мне, что на курсе «Врубаемся в Ruby» они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?
На ум сразу пришел бомж-программист, но после успеха с его приложением он предпочёл остаться «дзен-монахом». Есть ли еще примеры? Вдохновляющий пример, что научиться кодить может каждый — слепой программист. Когда я прочитал статью на Хабре «Смотря на код с закрытыми глазами», то понял, что нет преград, кроме собственных отмазок.
А у меня для вас есть три истории из моей жизни. Просто три истории.
История первая — ламер
Слово «ламер» я прочитал в «Компьютерре». Там давалось такое определение: «Ламер — отнюдь не безграмотный человек, не умеющий (как бы это помягче выразиться?) программировать». Окрылённый истиной я побежал и рассказал об этом друзьям-одноклассникам, но они предпочли поиграть в футбол, вместо того чтобы освоить суперспособности. Забавно, что потом все они зарабатывали программированием деньги, а я нет. Через неделю я записался в краевую станцию юных техников (КСЮТ), где был кружок по программированию. Там для новичков давали qbasic. А боги прогали на C.
Так вот как-то один из «богов» подозвал меня к монитору и спросил: «Так сможешь?». И показал прогу, которая ждала, когда пользователь введёт в командной строке любой символ, а потом поворачивала его на 90 градусов. Я был ошеломлен.
Наверное, меня это так зацепило, что я решил — во что бы то не стало, выучить все что можно, и стать самым крутым программистом. Заряда хватило на годы. Этот случай я позабыл, прошло несколько лет, и, вспомнив о нем, я написал не больше десятка строк на basic`e минут за 20. Программа работала идеально.
Вывод. Личные отношения с падаванами очень важны. Возможно, ваша простенькая программа определит судьбу человека и повлияет на выбор жизненного пути.
История вторая — первый шифр
Идея пришла внезапно. Пришла так, что не смог заснуть и сел кодить. Из шифров тогда я знал только про пляшущих человечков из Шерлока Холмса (а это класс 8 или 9, занимался программированием полгода-год). Мне захотелось написать шифр, чтобы нельзя было так просто его вскрыть простым анализом.
Задумка была следующая: каждой букве русского алфавита мы приписываем массив из 5 символов в виде букв русского и английского языка, спецсимволы. При шифровании мы рандомно выбираем один из них. Получалась «расширенная» простая замена. Это сейчас мне понятно как его ломать, но тогда для меня была запредельная высота. Через 3-4 года я поступлю на компьютерную безопасность.
Вывод. Решать интересные задачи — это круто. Но гораздо круче придумывать и находить задачи самому.
История третья — триумф BASIC`а
Я уже 2 года «занимался» программированием. И тут в школе появилась… информатика. Меня почему-то отправили в слабую группу. Как узнал позже, моё лицо не понравилось преподавательнице и она посчитала, что я тупой. Мои друзья ворвались в кабинет к директору и сказали, что я занял призовое место на краевой олимпиаде по программированию. Начались, разборки, но мне было так пофиг, что я остался в слабой группе, где учили вводить цифры в Exсel. За первую неделю я сдал всю программу и спокойно ходил играть в Diablo 2 в компьютерный клуб.
А на олимпиаде был забавный случай. Разрешённые языки — C, Pascal, а я то был прожжённым бейсичником. Выкрутился. Задачу принимали в виде exe’шника, а я подсуетился и нашёл бейсик, который кует exe’шники. Программы проходили тесты, а сами тесты принимались на серваке. Одна задача была сугубо вычислительная. Давались координаты центров и радиусы двух окружностей. Требовалось выдать взаимное расположение окружностей в текстовом виде: пересекаются, касаются, одна в другой, совпадают, и прочие.
С формулами было возиться лень, и недавно я как раз разбирался с графикой. Задачу решил графически, рисовал окружность одним цветом, а потом «сканировал» попиксельно по второй окружности, втыкаюсь ли я в уже окрашенный пиксель. Был большой страх, что прога не сможет работать на серваке без монитора, но все обошлось — 10 тестов из 10. На разборе задач был звездный час. Полсотни человек решили задачу один в один как автор, какого же было их удивление, когда я рассказал свой способ.
Вывод. Школа — зло. Результат — круто. Нестандартное мышление — прикольно. Обходной путь есть всегда.
Зачем взрослым учиться программировать
У меня есть три ответа на этот вопрос. Они зависят от горизонта планирования:
— Цель на 1 неделю или месяц — это вызов. Это как пробежать марафон или забраться на Эльбрус, проверить не засохли ли мозги, выйти из зоны комфорта.
— Цель на год-два — это бабло. За это время можно научиться создавать ценность и работать удаленно. Или учить других. Очень многие хотят научиться программировать.
сам поискал 8 сентября:
на русском в 1000 раз меньше:
— Цель на 5-10 лет — развитие в целом. Во-первых, вы улучшите своё мышление. Во-вторых, вы сделаете неоценимый подарок детям. Они получат несколько лет форы в изучении программирования и у вас появится много чудных моментов совместного написания программ. Для полного счастья останется научиться играть в компьютерные игры, но это вы скорее всего уже умеете.
Как научиться программировать
Есть заезженная картинка на этот счёт:
Почему-то все сразу начинают советовать Кнута, Кормена и прочее, но неподготовленный человек сможет осилить только предисловие. Если совсем проблемы с самооценкой возьмите детскую книгу и напишите игру.
Если готовы приступить по-взрослому, то есть множество ресурсов для самообучения. От Coursera (раз, два) до всяких %имя%academy (codeacademy, htmlacademy и пр)
Если намерения совсем серьёзные, могу посоветовать курс «Врубиться в Ruby».
Во-первых, есть живой преподаватель с хорошим бэкграундом в разработке. Виталий Куреннов, 6 лет пишет на Ruby и больше года обучает всех желающих этому навыку, работал над Ruby проектами для Nokia и Avaya.
Во-вторых, есть группа единомышленников, работая бок о бок с которыми, у вас многократно повысятся шансы дойти до победного конца и освоить программирование до того уровня, когда оно начнет приносить прибыль.
— Никита, почему именно Ruby?
— Все просто, мы нашли очень хорошего преподавателя.
Про Ruby
Попробовать сделать первые шаги можно прямо сейчас, займет всего 5-10 минут.
Нашел шикарный ресурс с геймификацией и сразу из браузера tryruby.org
За 5 минут выполняем несколько заданий, получаем ачивку и переходим на следующий уровень.
А зомбяк не хотите ли? railsforZOMBIES.org
Про Lisp
«Однако я не думаю, что смогу убедить кого-нибудь (старше 25) выучить Lisp.» Пол Грэм, «Побеждая посредственность»
Начитавшись Грэма, осваиваю Lisp.
;; Welcome to L(λ)THW!
(let ((llthw '(learn lisp the hard way)))
(format t "~{~@(~A~)~^ ~}, because ~{~A~^ ~} is easier!" llthw (cddr llthw)))
;; Common Lisp: Powerful, Expressive, Programmable, General Purpose, Multi-Paradigm.
Нашёл для себя удобную браузерную обучалку Learn Lisp The Hard Way
«За те годы, что я проработал в Viaweb, я прочитал множество объявлений о найме на работу. Примерно каждый месяц появлялся новый конкурент. Первое, что я делал после того, как проверял, доступна ли онлайновая демонстрация работы их программы, — смотрел список их вакансий. Через пару лет я научился отличать опасных конкурентов от неопасных. Чем больше отдавало IT-мэйнстримом от описания требуемых кандидатур, тем менее опасна была компания. Самыми безопасными были те, кому требовались специалисты по Oracle. О таких не стоило беспокоиться. Также мы были спокойны, если требовались разработчики на C++ или Java.Если требовались программисты на Perl или Python, это уже было слегка пугающе — это значило, что компанией или, по крайней мере, ее технической частью заправляли настоящие хакеры. Если бы я когда-нибудь увидел объявление о найме на работу Lisp-хакеров, я бы обеспокоился не на шутку.» Пол Грэм, «Побеждая посредственность»
Ещё пара советов
- Читайте Хабр. Например, вот это статья может очень помочь тем кто уже начал свой путь — «Почему научиться программировать так чертовски тяжело?» Или история успеха — «Как я сам научился программировать за 8 недель»
- Читайте Пола Грэма. Он вдохновит заняться программированием кого угодно. Даже меня. Даже на Lisp.
- Найдите единомышленников
- Найдите вдохновляющую задачу
напримерОбщие упражнения:
Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование на любом языке.
Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
Rosalind — это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.
Ruby Quiz — серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.Задачи из олимпиад по программированию:
UVa Online Judge — коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.
TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.
CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».
Timus — то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).
SPOJ — похож на UVA, с огромным числом языков программирования на выбор.
USACO содержит несколько задач на алгоритмы с руководством по их решению.Под определённые языки:
Для Prolog, Lisp и подобных языков посетите P-99 и L-99, наборы из 99 задач для повышения вашей эффективности в данных языках.
Python Challenge — объединяет загадки и головоломки, которые помогут вам серьёзно прокачаться в Python.
4Clojure — набор упражнений по программированию, специально разработанных под Clojure, Lisp-подобный язык. - Соревнуйтесь
- Играйте в Игры для программистов
- Пишите код каждый день
- Пишите о своих успехах и находках на Хабр
P.S.
Ещё интересные статьи с Хабра на тему быть/не быть программистом и как делать шаги на пути мастерства
P.P.S.
Алан Кэй делится яркой идеей об идеях. Архитектура, математика, обучение, программирование и много ещё интересного.
habr.com