Блог им. AlexeyPetrushin

Как просто изучить программирование

1) Неск недель (может месяцев) разобраться с базовыми конструкциями языка и базовыми структурами данных, связанный список, граф. Любой учебник, не больше 100 страниц, лучше если в нем есть картинки. Может быть скучновато, но это недолгий этап. Проверкой что вы эго закончили будет упражнение построить и сравнить два графа (см картинку), одинаковые они или нет, это полстраницы кода.

Как просто изучить программирование

2) Дальше, выполнить 1-4 интересных визуальных задачи. Визуальных ключевой момент поскольку у людей визуальная система ведущая и если ее задействовать то все будет получаться легче, проще и лучше. 

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

Как просто изучить программирование

После этого можно перейти к реальным задачам, или если будет желание выполнить еще несколько интересных визуальных задачек. Например 1) сгенерировать и отрисовать картинку с лабиринтами. Или 2) постройте пару гистограм/графиков на SVG. Главное чтобы был визуальный контроль того что вы делаете и визуальное понимание конечной цели. 

Можете также освоить минимум HTML & CSS даже если они вам напрямую не нужны, они очень простые и это хороший способ представить результаты визуально.

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

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

jgthms.com/javascript-in-14-minutes/

jgthms.com/web-design-in-4-minutes/

Языки:

— Java / C# — старые, но по прежнему занимают позиции N1 по распространению, числу вакансий и по баблу, банки, бизнес софт и т.п. Если цель устроится на работу, то они то что надо.
— Python / JavaScript — одни из самых легких в изучении, вакансий тоже море, по деньгам наверно поменьше чем на Java / C#
- С / C++ — специальные инструменты, изучать их можно только если точно знаешь зачем они тебе нужны.
— Ruby / Swift / Kotlin / Go  и т.п. специальные инструменты, изучать можно только если знаешь зачем они тебе.
★18
27 комментариев
Звучит примерно как «для того, чтобы устроиться шофером автобуса, прочитайте ПДД и выучите, что педаль газа правее, а тормоза левее»
Вот только для устройства на реальную работу кроме операторов if/for/while нужно знать системные объекты и библиотеки, ООП, шаблоны проектирования, кучу фреймворков, SQL, базовые протоколы вроде HTTP, про О-нотацию спросят. А там вылезет блокирующая и неблокирующая многопоточности, лямбды, необходимость уметь в Git и собирать проект с помощью какого-нибудь инструмента…
avatar
Ив Ив, А вы опытный программист) сами то как учились?
avatar
Lilu, я учился просто — кружок информатики во Дворце Пионеров с новейшим чудом советской техники БК-0010, затем красный диплом инженера-программиста военного вуза, немножко послужил научным сотрудником в НИИ Минобороны, но кормили там плохо, поэтому ушел в «свободное плавание» на гражданку )
avatar
> нужно знать системные объекты и библиотеки, ООП, шаблоны проектирования, кучу фреймворков, SQL, базовые протоколы вроде HTTP, про О-нотацию спросят

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

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

Вопросы по многопоточность будут только если не новичек, новичку никто не будет многопоточность спрашивать.
avatar
Alex Craft, я вообще-то как раз работаю в крупной IT-компании, в том числе периодически беру стажеров в свой отдел программной разработки (Java, Kotlin). Так вот без знания основ ООП, модификаторов видимости, Collections, особенностей работы со строками и массивами, понимания equals/hashCode, обработки исключений и прочая, ни мне, ни коллегам из смежных департаментов, джуниоры не нужны.
avatar

Ив Ив, Ваша компания не единственная, есть другие.

Где то на 150тр/мес требуют больше знаний чем в другой компании на 300тр/мес.

Кроме того, ооп, коллекции и т.п. после 5-10 собеседований, если вдруг человек не пройдет, он просто посмотрит эти вопросы, и пройдет на 11ом.

avatar
Alex Craft,… чтобы вылететь на испытательном сроке? ) Ну, тоже вариант.
avatar
Alex Craft, + он просто судит по своим требованиям и не задумывается, что в большинстве других компаний по-другому.
avatar
Ив Ив, на синьора да ) 
avatar
какбэ то, что подошло Вам может не подойти остальным 99% желающим изучить программирование… Или это не Ваша метода?
avatar
Kolya_Margin, моя. Я так все изучал/аю, не только программирование.
avatar


avatar
cdb/2.1, вы пропустили часть пути. Прежде чем изучающий нарисует облако слов, он перепробует 10-20 вариантов. У него не получится решить эту задачу с 1 раза, нужно будет сделать несколько попыток. С каждой попыткой он будет знать больше и больше.

К слову, именно так и учатся рисовать. Рисуешь сову каждый день по нескольку раз. И через месяц или два, когда нарисовал 50 или 100 сов, 101 получится похожей на настоящую.
avatar
Alex Craft, я пропустил весь путь. Есть много закоулков, которые проходят в вузах и не проходят самоучки. Например производительность алгоритмов или паттерны программирования. Непонимание специализации определенных инструментов и конструкций приводит к витиеватым реализациям и просто плохому коду. И по этому болоту можно долго и упорно ходить… и думать что ты вот уже стал программист. Ну да, программисты и хреновыми бывают, дело такое. Смартлаб жеж мы как-то пилим 
avatar
Очень странные рекомендации. 
avatar
Хороший программист — это в первую очередь хороший инженер. Что включает в себя абстрактное мышление, умение понимать и составлять алгоритмы да и вообще просто хороший кругозор в смежных областях.

А зазубрить базовые конструкции языка и научиься решать тестовые задачки из учебника — это еще совсем не программирование...
avatar
Union_Jack, в точку! Любое техническое/физматобразование для IT бесконечно полезнее всех инфоцыганских курсов «Учим программировать за месяц, трудоустройство гарантировано» вместе взятых.
avatar
Ив Ив, именно. Еще чем полезно высшее техническое — там в начале идет математика. Она не столько нужна в программировании (хотя без сомнения некоторые ее разделы необходимы), но еще и усиливает логику и мышление.

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


avatar
Union_Jack, хороший программист это тот который быстро и эффективно решает поставленную задачу. Большинство типовых задач программирования это сборка из кубиков лего и использование готовых алгоритмов. И, за редкими исключениями, чем меньше программист будет использовать своих изобретений и инноваций, чем больше простых и готовых решений, тем лучше будет продукт.
avatar
Alex Craft, это называется говнокодер. 
И дальше простого рядового исполнителя он не вырастет 
avatar
1. Как показали несколько лет преподавания, если у человека есть интерес к программированию, ему не нужно рассказывать, что в каком порядке и по каким книгам изучать. Сам разберется и все освоит. Потыкается по книгам, статьям, курсам и разберется. А если человеку не интересно, то ничто не поможет. Программирование — это ведь не про заучивание алгоритмов и функций, а про умение их использовать.
2. Для обзорной статьи для новичков вы бы лучше больше внимания уделили выбору подходящего языка. Абзац в конце и предложения попутно выучить HTML с CSS — это, простите, не серьезно. Человек же будет впервые учиться программированию, без опыта. Может ему хочется сайт сделать или игру для своего iPhone. Или, раз уж мы на смартлабе, бота для торгового терминала.
avatar
DyxVetra, работать с интуитивно понятной визуальной задачей будет проще, особенно если человек имел мало опыта с абстрактными вещами.
avatar
Alex Craft, конечно, полностью согласен про сложность. Проблема в том, что человек может начать учить один язык, а потом в какой-то момент понять, что он не подходит для интересных ему проектов. Это как учить в школе Паскаль или Бейсик в 2021-м году, а потом узнать реальное положение дел :) Согласитесь, подобные новости не прибавляют мотивации в изучении нового языка с нуля.
avatar
Вот опять этот автор всех в ИТ завлекает. Я нужду не пойму. Это делается писанина ради писанины, чтобы набрать себе постов и рейтинга, или зачем?  
avatar
Это описание «как научиться писать код», а не «как изучить программирование». А это две большие разницы.
avatar
Как просто изучить программирование

Просто — никак. За несколько недель это будет полный отстой. Несколько лет очень плотных занятий включающих чтение огромной кучи книг и документации, а также практики, желательно в реальных проектах. Если хочется в архитектуре разбираться то еще лет 10-15. Ну и не надо забывать, что у каждого направления (Web, облачные технологии, «кровавый энтерпрайз», высоконагруженные системы, обработка данных, графика,  игры, мобильные системы, нейросети, встроенные и киберфизические системы и еще куча всего) есть своя специфика, на освоение которой тоже нужны годы.
avatar
Напомнило руководство как изучить c++ за 21 день

avatar

теги блога Alex Craft

....все тэги



UPDONW
Новый дизайн