@coredecoder
В самом начале пути

Какой путь изучения программирования выбрать?

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

Б1: РЫНОК ТРУДА И ПЕРСПЕКТИВЫ.

Б1.1. Какая специальности в программировании наиболее открыты и дружелюбны к джуниорам?
Каковы перспективы развития?

Б1.2. На какие специальности можно выучиться до джуниора за наиболее короткий срок?

Б1.3. В общих чертах, что должен знать и уметь джуниор? До какого уровня учиться?

Б1.4. Каковы шансы устроиться джуниором в сферу C++? И, с учётом сложности языка, стоит ли мне рассматривать эту сферу в свои года?

Б2: ОСНОВЫ ПРОГРАММИРОВАНИЯ\БАЗА.

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

Б2.1. Хотел бы узнать наиболее полный список действительно нужных тем и дисциплин computer science.
И хотел бы узнать лучшие источники (курсы\книги) знаний по этому списку.
Идеально, если это цельная программа в одном месте.

Б2.2. Покрывают ли потребность в теории курсы Introduction To Computer Science от MIT и Harvard? Стоит ли их проходить?

Б2.3. Что ещё из теории помимо основ computer science нужно программисту?
К примеру, есть тематика "введение в программирование" и "software developing" - нужно ли изучать ещё и эти темы или в них тоже самое, что и в computer-science?

Б2.4. Хотел бы узнать наиболее полный список действительно нужных математических дисциплин для программиста? И лучшие курсы\книги для изучения этого?

Б3: ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

Б3.1. Сколько языков нужно знать джуниору?

Б3.2. С какого языка следует начать обучение? Наиболее перспективный и гибкий (используется в различных сферах и специальностях) и лучший для изучения? И какой язык к нему следует добавить в дальнейшем?

Б3.3. Посоветуйте самые качественные проработанные курсы\книги для изучения рекомендуемых языков.(можно на английском и можно платные)

Б3.4. Насколько сильно версии одного и того же языка отличаются друг от друга? Как долго времени занимает изучение новой версии языка?

Б3.5. Что вы можете сказать о курсах Treehouse?

Б3.6 Стоит ли мне начать изучения с языка C++? Я наслышан о том, что он достаточно сложен и это наводит на мысли, что я могу очень долго провозиться с ним.

Заранее большое спасибо всем, кто окажет помощь!

PS Тем, кто также находится в процессе обучения - пишите на почту ferrummagnum@gmail.com Сможем делиться опытом и наработками. Буду рад общению!
  • Вопрос задан
  • 27102 просмотра
Пригласить эксперта
Ответы на вопрос 14
sM0kfyz
@sM0kfyz
Frontend dev.
Б1: РЫНОК ТРУДА И ПЕРСПЕКТИВЫ.

Б1.1. Веб

Б1.2. Веб

Б1.3. Пока не пройдете интервью. Что нужно учить там же и узнаете.

Б1.4. Шансы есть. Язык старый - специалистов много. Хотя язык сложный, но зарплаты почему-то меньше, чем в вебе или мобильной разработке.

Б2: ОСНОВЫ ПРОГРАММИРОВАНИЯ\БАЗА.

Для большинства задач в вебе это не надо. Если хотите большего, то изучайте другие ресурсы. Но это риск забросить все.

Б3: ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Б3.1. Один язык.

Б3.2. В зависимости от выбранной области, информацию ищите в интернете. Второй язык можете вообще не учить до конца жизни, если не понадобится.

Б3.3. Самое лучшее - документация к выбранной технологии.

Б3.4. Изучение 1-2 недели. Понимание - несколько лет.

Б3.5. Для веба freecodecamp.com Можете стартовать прямо сейчас, а то искать лучший язык можно бесконечно.

Б3.6 Нет.
Ответ написан
Комментировать
@MadHarper
Твоя цель сейчас - как можно скорее устроиться на работу. Можно до бесконечности изучать программирование самым усердным образом, но ты так никогда и не будешь на 100 ÷ готов к реальному программированию. Только на реальных боевых задачах, только в окружении более опытных коллег возможен реальный а не мнимой рост. Отсюда вывод - любой популярный яп. Хотя и тут есть нюансы. Очень не рекомендовал бы скажем питон. По причине из постулата выше - трудно будет найти работу. Я рекомендую php. Все кто пишут про него плохо ничего просто про него не знают. Как тот 4-месячный джуниор выше. Неприятен он ему видишь ли. Может точку с запятой ему не нравится ставить, может какая другая ерунда. Но точно объективного ничего тут не жди. И этим своим мелочным субъективизмом сбивает тут людей с толеу. По факту же современный php это хороший, быстрый (!) язык, с полноценным (не как в старых версиях) ООП. И он становится с каждой версией все лучше и лучше. На нем пишутся как сайты визитки, так и солидные энтерпрайз проекты. И вакансий много. Второй вариант - java. Но если не считать мобильной разработки, то это язык для энтерпрайз проектов. Соответственно одного только знания джавы никак не достаточно. Нужно знать и понимать много еще всяких спрингов или EE. И на работу джуном устоится труднее. А нам что надо? Правильно, как можно скорее начать работать профессионально. Но если есть в себе уверенность что пройдешь этот путь, что хватит настойчивости и терпения - все окупится.
Короче, беспроигрышных вариантов два - php и java. Но следует помнить, по какому пути не пойдешь сам язык займет меньшую часть времени твоей подготовки.
И в завершении скажу - прекращай маяться выбором, гуглением по теме "что выбрать". Завязывай тратить на это время. Начни программировать. Вот прямо сегодня.
Ответ написан
Комментировать
@akamap
Подумай ещё раз, а оно тебе надо? Сам перешёл в разработчики после 30, но я в ИТ со школы..
Коммерческая разработка - это не фан, а в большинстве случаев - рутина, дедлайны и пр. т.п. Не стоит идти в отрасль, если представления об этой профессии чересчур романтизированы (под воздействием фильмов, статей, рекламы), т.е. в ожиданиях: красивый код, большие деньги, успех. Разочарование придёт очень быстро, как в одном стихотворении: Ты увидишь, что Цель - далека и пуста, А Дорога - пребудет всегда.. Я часто вижу это разочарование на лицах вайтишников, которые к нам приходят на стажировку. Будь к этому готов. А по технической части вопроса - смотри рынок.. Удачи!
Ответ написан
EvGenvinU
@EvGenvinU
Программист
Здравствуйте!

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

Есть два вида программистов:
1. Программист-теоретик. Человек искренне верит, что существует книга, которую стоит лишь прочесть и он станет полноценным разработчиком, которого с удовольствием возьмут на работу. Потом он понимает, что еще надо пройти курсы, а там еще пару книг и еще пару курсов, а еще найти наставника.
2. Программист-практик. Человек, который видит проблему, задает себе вопрос, как решить эту проблему и формирует ответ.

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

Подсказка:
--Практик.

?? Спросите себя, какие проблемы вы хотите решать.
== Хочу писать сайты.

?? Как решать конкретную проблему.
== Все есть информация. Сайт это информация, отображает эту информацию браузер. Значит надо выяснить, как браузер это делает и какую информация он умеет отображать, как форматировать эту информацию.

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

?? Актуализируйте знания по инструментам и решениям проблем.
== Подпишитесь на известных программистов. Изучите современные инструменты облегчающие жизнь разработчика. Прежде чем пробовать новые технологии хорошенько подумайте и проведите исследование. На основе результатов делайте выводы о эффективности внедрения. Если прирост КПД большой, то смело применяйте. Используйте качественные редакторы кода. И как всегда задавайте себе вопросы. Формируйте критерии и ищите по ним.

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

Главное, не стесняйтесь спрашивать у Гугла. Умение задавать корректные вопросы оттачивается только на практике :-)

Помните, что умственный труд программиста сравним с физическим трудом шахтера. Ответься себе на вопрос: "А оно мне надо?".
Ответ написан
Комментировать
@Namynnuz
Привет, всем! Мне 28 лет и я решил начать изучение программирования
Привет, 28. Это, конечно, не 42, но первые результаты, при условии, что у тебя есть определённые способности и стремления, проявят себя в лучшем случае лет через пять.
Какая специальности в программировании наиболее открыты и дружелюбны к джуниорам?
Каковы перспективы развития?
Никакие. В этой области +5 лет сосутся очень жёсткие дяди из Пакистана и всё ещё из Индии. Без реально роста, но говнокод они лепят отменный. Тебе с ними и через десять лет не сравниться (и не надо, пожалуйста).
На какие специальности можно выучиться до джуниора за наиболее короткий срок?
Зависит исключительно от тебя и твоих способностей.
В общих чертах, что должен знать и уметь джуниор?
Зависит от конкретного места, куда ты пойдёшь устраиваться.
До какого уровня учиться?
До какого можешь, до такого и учишься. Предела нет. Даже через десять лет в, казалось бы, вдоль и поперёк изученной технологии ты можешь узнать и изучить такую прорву новой информации, что стажёру и не снилась в страшном сне.
Каковы шансы устроиться джуниором в сферу C++?
Ниже, чем в случае более современных языков.
И, с учётом сложности языка, стоит ли мне рассматривать эту сферу в свои года?
Года ничто — опыт всё.
где-то было много и было не ясно нужно ли столько изучать.
Изучай всё, до чего можешь дотянуться.
Хотел бы узнать наиболее полный список действительно нужных тем и дисциплин computer science.
Берёшь курс MIT и смотришь, чем они учат-учили последние 20 лет. Вот это всё: знание, понимание, умение — отправная точка для начала поглядывания в область CS со стороны стажёра, который так, покурить на в соседнее здание зашёл.
Покрывают ли потребность в теории курсы Introduction To Computer Science от MIT и Harvard?
Покрывают ли потребность в операции на гипофизе пространный пересказ бухого философа на тему «Хирургия 18 века для идиотов»?
Что ещё из теории помимо основ computer science нужно программисту?
Всё, до чего сможешь дотянуться. Чем больше знаешь — тем меньше надо будет изучать на местах, тем шире будет твоя область применения. Если ты сможешь выдержать конкуренцию.
Хотел бы узнать наиболее полный список действительно нужных математических дисциплин для программиста?
Берёшь, допустим, топовый российский вуз и изучаешь досконально дисциплину Прикладная Математика. Наверное, для большинства формошлёпов в самых типичных ситуациях этого может и хватить.
Сколько языков нужно знать джуниору?
Чем больше, тем лучше. Чем глубже, тем лучше. Нельзя взять какую-то область или языка и оставаться в ней до конца жизни. Иначе ты очень сильно будешь ограничивать себя. Не говоря уже о прямой деградации межушного ганглия до уровня адинэсников...
С какого языка следует начать обучение?
Тот, который тебе больше всего понравился. То есть ты взял, потыкал его, поискал книжки, почитал первые 100 страниц каждой, посмотрел код проектов на github и ты почувствовал, что «палочка выбрала тебя».
Посоветуйте самые качественные проработанные курсы для изучения рекомендуемых языков
Нет таких.
Насколько сильно версии одного и того же языка отличаются друг от друга? Как долго времени занимает изучение новой версии языка?
Напрямую зависит от языка/фреймворка и как авторы подразумевали обратную совместимость.
Стоит ли мне начать изучения с языка C++?
Возьми что-то более современное, чтобы не насиловать себя непонятными тебе ограничениями.
Ответ написан
Eujene
@Eujene
Айти или не айти?
На Reddit недавно залили следующую статью https://m.vk.com/@myironcomp-programmirovat-s-nuly... тут очень подробно расписали как учить яп.

С++ не учу. Язык сложный и требует больших затрат для вхождения
Ответ написан
@Dim1urg3r
Привет, у меня такая же ситуация, как и у тебя, только мне 24, и я, закончив магу по экономике, понял, что хочу другого, это было 4 месяца назад. Отвечу на твои вопросы, учитывая свой скромный опыт.
Б. 1 - тут однозначно веб, причём фронт-енд, количество стажировок и вакансий на бэк-энд для новичков намного меньше по крайней мере в моем городе (и там в основном php), а мне после питона этот язык неприятен.
Б. 2 - я тоже пытался узнать, что же идеально нужно знать, какие идеальные книги и курсы есть. Их нет, один может зайти мне, а тебе покажется нудным и глупым, здесь только пробовать самому. Мне очень зашли курсы на курсере, но там хорошие курсы на английском. Совет из своего опыта - начать лучше с русского, я знаю английский хорошо, но по началу нужно вникнуть быстро, а на чужом языке это не так плюс потом небольшая трудность в различии терминов из-за перевода.
Б. 3 Для введения в программирование я начал с питона, и, скорее всего, буду советовать всем начинать с него, различия версий не мешают понимать код на разных версиях после изучения основ. Некоторым кажется неправильно начинать с динамически типизированного языка, но питон со строгой типизацией, а значит различие в типах данных ты точно поймёшь, вообще я считаю питон лучшим языком, потому что сейчас я изучаю джава скрипт, и это ужа... странный язык)

Отдельные советы - как только что-то изучил надо либо сразу пытаться применить на СВОЁМ примере, либо, если ты понимаешь, что ты можешь это сделать по-другому или обойтись без этого, то просто знай, что есть и другой способ.
Посмотри количество стажировок в твоём городе на том же hh ру. Например, у меня много отличных стажировок на джаве, и я пожалел, что не изучил этого до того, как начал свой путь.
Такие сайты как хабр, тостер, стаковерфлоу реально помогают, а ещё больше поможет реальное общение с состоявшимся программистом.
Желаю тебе удачи, потому что знаю какого тебе будет))
Ответ написан
AlexZaharow
@AlexZaharow
O Keep Clear O
Нужно по капле выдавливать из себя раба.
Программирование - это образ мышления. Думать умеешь? - значит догадаешься. Вот это и есть главное правило. Приготовься к тому, что нужно будет много думать, очень много. В программировании много взаимосвязей. Нужно развить в себе навык видения конечного результата и свою роль в нем. Без этого ты не сможешь работать.
Скажу один секрет, о котором вообще никто не пишет, но если понравится программировать, то поймёшь (не каждый секрет можно понять сразу) - обработка ошибок. Пользователь всегда ждёт, что программа предупредит его о том, что он, пользователь, делает что-то не так. Поэтому, очень много времени в программировании уходит на обработку ошибок. По моим ощущениям процентов на 90 работа программиста - обработка ошибок. А уж в сетевом программировании без этого никак.
А так будет как везде - никто не будет тебе ничего разжёвывать, возиться как с писаной торбой и т.д. Учись решать проблему самостоятельно, веди дневник (очень рекомендую), технический, конечно, со скриншотами и описанием: проблема, скриншот, решение - скриншот + текст, скриншот, скриншот, скриншот (поищи хороший скриншотер). Периодически перечитывай записи.
Поставь цель - каждый день узнать минимум что-то новое, что тебя удивит. Удивился - записал! День прошёл не зря. Больше одного раза удивился - супер. Опять записал. За год накопишь хорошую базу.
Совершенствуйся в инструментах, но не зацикливайся, узнавай новинки. Возможно, что однажды сам начнёшь писать себе инструменты.
Лично мне программирование нравится тем, что даёт возможность общаться с разными людьми разных профессий. И вместе мы делаем что-то новое. Здорово.
Ответ написан
Комментировать
Zifix
@Zifix
Barbatum
Б1.1. Специальности в программировании не существует.
Б1.2. Чем ниже порог вхождения у языка, тем быстрее можно получить инструментарий достаточный для работы.
Б1.3. Знать язык программирования, ООП, структуры данных.
Б1.4. Джуном на плюсах устроиться при желании шансы близкие к 100%, а стоит ли — сами решайте.

Б2.4. Математика абсолютному числу программистов не нужна, ее учат, чтобы прокачать мышление. Обычно это линейная алгебра, аналитическая геометрия, булева алгебра, тервер, матан.

Б3.1. Достаточно одного рабочего языка.
Б3.2. Начинать нужно с Си, он дает хорошее представление о том, что вообще происходит. Потом можно учить что угодно.
Б3.3. Выберите язык и задайте отдельный вопрос.
Б3.4. Зависит от языка, например Swift регулярно ломает совместимость, а С++ нет. Переход на новую версию (утерявшую совместимость) обычно занимает пару дней. Если совместимость не ломалась, то вообще не проблема. Например, я до сих пор не использую большую часть даже С++11 и это не мешает работе.
Б3.6 Начать лучше с языка без ООП.
Ответ написан
Комментировать
@asd111
Учить по порядку:
Html, css, javascript, php, sql и проектирование БД, laravel, любая книга по алгоритмам и структурам данных.
Это примерно 3 месяца - 2 года в зависимости от темпа изучения и сможешь искать работу по php + laravel.
Ответ написан
Комментировать
@Igor_Deg
Попробую ответить нетрадиционно - исходя из своего опыта.
Хотя в сообществе IT-шников мня за такое заплюют.
Смотрите в сторону промышленной автоматизации.
Именно там меньше кода и больше эффекта, а уж драйва, когда система в сотни киловатт чудит...
К тому же ошибки видны невооруженным глазом.
Язык программирования - Ladder (основа). Учить лучше применительно к Сименсу (Step7) - его у нас много.
У Сименса было много руководств для чайника, причем на русском.
Сам подход к программированию в промавтоматике очень сильно меняет мышление.
Себя к дуракам не отношу, но мне потребовалась пара месяцев, чтобы ассимилировать концепцию.
Конкуренция на этом рынке будет поменьше, чем для классических программистов.
Совершенствование - сначала STL (так называет Сименс)
Дальше электрика/электроника, потом пневматика, затем гидравлика (умение читать схемы).
Кстати, можете посмотреть мою статью
КУДА ВЕДЕТ "НЕВИДИМАЯ РУКА РЫНКА"
Ответ написан
Комментировать
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Ухх как все сложно...

Чтобы научиться плавать нужно, для начала, зайти в воду... Стоя на берегу плавать учиться затруднительно.

Если бы я так заморачивался в своё время, то даже не начал бы.

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

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

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

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

В процессе ты так же будешь осваивать инфраструктуру, пополнять контексты, приобретать дополнительные знания.

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

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

Вот как-то так. Дорогу осилит идущий, но нужно постоянно делать следующий шаг.

Ну и напоследок - в программировании очень решает оперативная память. Нужно в голове удерживать массу фактов одновременно, иначе получается фигня. Поэтому прокачивай оперативную память...
Ответ написан
Комментировать
@MaxLich
java developer
Зависит от бэкграунда и количества времени, которым ты располагаешь для изучения программирования. Но если считать, что он нулевой, то я бы советовал примерно в таком порядке изучать:
1. Математика (высшая, вузовская; частично; если )
2. Основы CS (в том числе устройство компьютера, его работа)
3. Языки программирования (паскаль, си, дальше язык, который нужен будет для будущей работы: js, java, python, etc.)
4. SQL и базы данных (если ещё не изучил до этого)
5. Необходимые для работы фреймворки и окружение (всякие спринги, джанги, ангуляры, а из окружения: гит, джира, IDE, система сборки проектов и т.д.)
Дальше нужно смотреть вакансии, ходить на собеседования и подтягивать то, чего не хватает.
Вкратце - так.
А как изучать - моё ИМХО - лучше книги, но также могут быть эффективны интерактивные курсы (онлайн, оффлайн), разные видеокурсы и т.д. Тут каждый для себя выбирает то, что ему больше заходит (но без книг или хороших статей, а также документации - никак).
По языку - зависит от того, что выберете: веб фронт, веб бекенд, мобайл, десктоп и т.д. По популярным языкам постоянно везде публикуется статистика, так что можно что-то из них выбрать. Не думаю, что новичку стоит выбирать малопопулярный язык (с++ тоже к ним сейчас относится). Из популярных - это java, js, php, python. Мне кажется, что проще всего и быстрее всего начинать с php, хотя давно им не занимался, поэтому точно не знаю, как там дела обстоят. Кроме того, поговаривают, что он тоже популярность теряет, так что возможно это неперспективно, но новичка это не должно волновать. Главное, получить какой-то опыт коммерческой разработки, а язык и сфера не сильно важны.

ЗЫ Ещё где-то между пунктами 2 и 5 надо хорошо подтянуть английский язык (для чтения оригинальной документации, а также книг и статей на английском). В идеале - до среднего уровня, но минимум - до уровня, который лежит посередине между средним и низким (чтение текстов на инглише с нечастым обращением к словарю).
Ответ написан
@AlexSku
Программист по автоматике
C# и SQL (базы данных используются везде).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы