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

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

И так, как стать программистом с нуля, самостоятельно? С чего начать свое обучение?

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

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

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

Преимущества и недостатки самостоятельного обучения (в домашних условиях)

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

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

Преимущества самостоятельного обучения:

1. Огромное количество практических знаний.

2. Возможность зарабатывать начинающим программированием.

3. Настрой на перспективу и более ответственное обучение.

4. Дешевый способ стать программистом.

Недостатки самостоятельной учебы:

1. Очень сложно стать профессионалом за короткое время.

2. Трудности в обучении, так как некому подсказать.

3. Большое количество времени уходит на поиск информации и ее анализ.

Профессиональное обучение в университете

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

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

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

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

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

Итак, вы хотите стать программистом и думаете, какой бы язык программирования стоит изучить первым. Сразу хочется сказать, что не стоит смотреть на сторону Паскаля, которого так любят в школе преподавать и Бейсика, который ещё остался со времён СССР. Конечно, можно изучить их для основ, чтобы понимать, как вообще всё устроено, но это трата времени. Например, если взять язык Python , то он и лёгкий, как Паскаль, но в то же время и мощный. Вообще, где используется Python. Этот язык часто используют при разработке сайтов, а именно: серверной части сайта. Да и вообще, не только сайтов. Взять только приложение Instagram, или игру World of Tanks, там тоже используется Python! Конечно, об этом языке не так много пишут, поэтому он ещё не получил такой популярности. Новички ведь как думают, чем популярнее язык - тем он лучше. На самом деле не так, ведь в программировании всё зависит от целей. Например, перед вами стоит цель: создать игру под мобильные платформы. В таком случае, конечно, лучше начать изучать Java, но этот язык сложный, и стоит начать с чего-то простого, например, Python. Питон является скриптовым языком, а иметь в арсенале скриптовый язык всегда надо, так как он пригодится везде! Стоит заметить, что популярность этого языка с каждым годом растёт. Многие сайты переходят с PHP на Python. Так как у Python и синтаксис приятней и работать легче, чем с PHP. Такие гиганты как: Yandex, Вконтакте, Google - давно уже перешли на Python. Скоро Питон займёт место PHP и станет самым популярным языком для веб-разработки. PHP держится только по той причине, что многим проектам лень переписывать тонну кода с одного языка на другой.

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

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

Распределение количества вакансий по зарплате в Москве и Московской области. Источник: Яндекс.Работа

102 000 рублей в месяц – средняя зарплата по Москве и МО для разработчика игр

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

Шаг второй - вдумчивый

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

Базовым языком для данной профессии является C#, а для создания всех возможных и невозможных чудес необходим Unity. Не так уж и много!

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

Поэтому для первых шагов стоит выбрать что-нибудь попроще, например JavaScript. Ведь работа должна приносить не только деньги, но и удовольствие!

Шаг третий - теоретический

Теперь самое время перейти к активным действиям! Если спросить на форумах, как лучше это сделать, то вам в один голос ответят: учитесь сами. Но о подводных камнях предупредит не каждый. Так насколько удобен этот путь?

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

Со всеми возникающими вопросами (а они обязательно возникнут) вам придётся разбираться самостоятельно. Правда, не владея темой, даже правильно сформулировать вопрос не так-то просто.

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

Программирование - это почти интимный процесс, в который не хочется пускать посторонних. Как сотворение мира, где всё повинуется только вам!

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

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

Читать: 8 мин.

Правда ли, что программирование - ну самая востребованная специальность в мире? Кто такие системные и прикладные программисты? Сколько лет нужно учиться на программиста? В какой вуз и колледж поступить, чтобы стать программистом?

Говорят, что в мире есть 10 видов людей. Те, кто понимает двоичный код… и те, кто не понимает .
Юмор программистов

Программирование зародилось в XIX веке, и до середины XX века, когда случился бурный рост информационных технологий, создание программ для машины было сродни искусству. Программирование было уделом избранных. Сегодня же профессия программиста распространена и очень востребована. В 2017 году в мире насчитывалось 18.2 млн разработчиков программного обеспечения, из них 1.3 млн - в России.
Давайте посмотрим, какое будущее у профессии программиста. И что ему угрожает.

Описание профессии


Где работать

Компании-разработчики (сервисы Booking.com, Mail.ru, Yandex, Unisender)
IT-отделы и отделы digital-маркетинга организаций (Сбербанк России, Газпром, Тинькофф банк)
Системные интеграторы (Крок, Softline, Техносерв, Ланит, Ай-Теко)

Карьерные возможности

Из-за бурного роста сферы IT и дефицита разработчиков ПО, работать программистом можно начать еще в институте. Со 2-3 курса можно устроиться junior-разработчиком и начинать движение по карьерной лестнице. И при этом получать достойную для студента зарплату в 30-50 тысяч рублей.

Сами программисты оценивают длительность каждой ступени следующим образом:
Первые полгода-полтора года реального опыта вы junior
При активном обучении следующие 1-3 года работы вы middle
А программист с опытом работы 4-6 лет – это senior

Но, конечно, стоит помнить, что границы условны, и более активный и любознательный разработчик сможет освоить все навыки senior-developer за 3 года.

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

Оплата труда (диапазон зарплат)

Зарплата программиста напрямую зависит от специализации и квалификации. Наименее оплачиваемые должности – это junior-разработчики, которые только учатся. А наиболее оплачиваемые на рынке труда – архитекторы ПО и системные инженеры, на которых лежит ответственность за продукт или проект в целом. Поэтому диапазон зарплат программистов может быть очень широким:

    30 000 – 260 000 рублей
Перспективы профессии (востребованность)

Сейчас отрасль IT в целом и программирование в частности находятся на пике востребованности. Компании конкурируют за квалифицированных специалистов. В перспективе ближайших 5 лет программистов ждет благополучная жизнь и высокие зарплаты, потому что молодых кадров станет немного меньше. Придет период демографической ямы из-за низкой рождаемости в начале 90-х гг.
Но рынок IT ждет несколько опасностей. Во-первых , обучение программированию сейчас начинается уже практически с детского сада. Самые известные обучающие языки - это Scratch от MIT и Blockly от Google. Вероятно, навык программирования будет настолько же распространен, как знание английского языка, то есть будет входить в "джентльменский набор" при приеме на работу. А если им владеет почти каждый, то и ценность работы снижается.
Во-вторых , IT-образование сейчас дает почти каждый колледж и вуз. После дефицита рынок может "насытиться" профессиональными программистами, и их зарплаты упадут.
В-третьих , есть страны, в частности Индия, где IT-образование развивается еще быстрее. И в определенный момент услуги программирования насытят мировой рынок, как сейчас произошло с товарами, произведенными в Китае. С индийскими программистами трудно будет конкурировать в цене.

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

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

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

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

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

Сформулируйте вопрос правильно, в стиле «я хочу работать в компании Х, потому что я слышал, что там очень круто, а еще там работает большинство моих друзей», и вы получите половину ответа. Скажем, при такой постановке вопроса, вы могли бы посмотреть вакансии компании Х, и, по требованиям, предъявляемым к кандидатам, понять, какие навыки вам понадобятся. Или, вы могли бы попытаться устроиться в эту, или похожую, компанию стажером за смешные деньги и всему научиться на месте. Сейчас это обычная практика. Из-за нехватки специалистов в отрасли многие компании охотно берут на работу студентов на полставки. Часто на этой же работе можно написать дипломный проект.

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

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

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

Однако выбор «высокоуровневой» ниши не означает, что вы можете ничего не знать об ассемблере , Си, C++, устройстве операционных систем и так далее. И наоборот. Хороший Python-программист знает, как найти узкое место в своей программе и при необходимости переписать ее на Си, а крутой сишник знает, как сэкономить время, сгенерировав кусок шаблонного кода скриптом на Python, после чего протестировать его еще одним скриптом на Python.

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

Саморазвитие — это отдельная большая тема, которой я надеюсь когда-нибудь посвятить отдельный пост, но в первую очередь это означает чтение книг. Не бложиков и не новостных сайтов, хотя это тоже полезно, а именно книг (о программировании, а не фэнтези). Возьмите за привычку читать по пути на работу и с работы , перед сном, после сна, во время еды, в душе… ! Некоторые книги о программировании довольно объемны, поэтому я настоятельно рекомендую приобрести хороший планшет (мне лично для чтения нравятся планшеты с диагональю 10") и читать книги с него.

О чем должны быть эти книги? Ну, в первую очередь, неплохо бы читать нечто, связанное со спецификой вашей работы. Но не только. Читайте книги об алгоритмах, операционных системах, СУБД, системах контроля версий , просто книги о разработке (тут вспоминаются, к примеру, Спольски, Макконнелл, Брукс, Фаулер…). Они пригодятся вам независимо от вашей работы и выбранной ниши. Также изучайте новые языки программирования. Как я уже когда-то писал, это редко оказывается пустой тратой времени .

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

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

«Как понять, смогу ли я стать программистом?»

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

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

Переходим на следующую стадию. Поставь среду разработки для С++ или С# или еще какого-нибудь языка. Справился и каждый успешно пройденный шаг тебе доставлял удовольствие – хороший признак. Двигайся дальше.

Найди описание, как создать в установленной тобой среде на выбранном языке первое приложение, Hello World, - это классика. Сделал? Отлично.

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

Повысить Понизить

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

Повысить Понизить

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

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

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

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

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

В конце спроси себя: «Смогу ли я стать программистом»? Если твой ответ «Да, смогу», то ничто тебя не остановит.

Повысить Понизить

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

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

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

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

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

Повысить Понизить

Для начала вам нужно понять, что считать профессией программиста. Программирование давно перестало быть уделом избранных, способных мыслить байт-кодами и в уме следить за аллоцированной памятью. Сегодня в мире есть много современных языков, синтаксис которых максимально близок к простому английскому. К примеру, User.find_by(name: "Вася").destroy в Ruby (on rails). Знания этих команд достаточно для того, чтобы писать небольшие сайты, блоги, интернет-магазины. Если вы хотите работать на этом уровне, то вам достаточно выбрать понравившийся динамический объектно-ориентированный язык (Ruby, Python) и пройти курс по нему, или прочитать книгу, их достаточно много для каждого языка. Также можно попробовать себя в фронтенд-разработке, выучить JavaScript а затем освоить фреймворки к нему.

Если вы хотите писать более сложные системы, необходимы знания абстрактной логики, их можно получить изучая высшую математику в институте (в идеале дискретную, но, на самом деле, матанализ тоже весьма неплохо развивает мозги). Можно читать книги по дискретной математике и алгоритмам (Стивен Скиена «Алгоритмы. Руководство по разработке», Томас Кормен «Алгоритмы. Построение и анализ», Род Хаггарти «Дискретная математика для программистов», Дж. Андресон «Дискретная математика и комбинаторика») и просто практиковаться в программировании. Также очень полезно было бы выучить низкоуровневый язык, например С (Керниган, Ритчи «Язык программирования С») – для общего понимания принципов работы программ.

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

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

Если говорить про простейшую разработку web сайтов, то тут не должно быть никаких сомнений, справится каждый. Если же вы хотите пойти дальше, но при этом считаете, что математика и логика это совсем не про вас, то можете попробовать игровые сайты для разработки алгоритмов:
https://www.codingame.com/
https://www.codewars.com/
На них надо решать простейшие (и не очень) алгоритмические задачи на любом понравившемся вам языке программирования. Не могу сказать, что это очень полезно для обучения реальному программированию, но если вам понравятся эти игры, то вам точно понравится заниматься серьезной разработкой.

Повысить Понизить

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

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

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

Повысить Понизить

Сегодня сложно найти профессию более перспективную, технологичную и финансово стабильную, чем работа программиста. При этом, даже несмотря на высокие зарплаты (в разы выше, чем «средняя по региону»), отрасль испытывает кадровый голод. Как говорил Адам Смит, «спрос рождает предложение» - но все не так просто.

Кадровый голод на рынке уже не тот, что был десять лет назад. Сфера ИТ очень сильно повзрослела, пережила этап, когда на серьезные позиции брали эникейщиков. Перед будущими программистами стоят новые, сложные вызовы - спектр «первичных» задач этой профессии примитивизируется, а с развитием технологий, все чаще отдается на откуп искусственному интеллекту и автоматизации.

Профессиональный «голод» обретает новые характеристики. Чтобы преуспеть, нужно владеть фундаментальной базой: качественным алгоритмическим фундаментом, сильной математикой, быть ответственным и готовым постоянно учиться. Если все это у вас есть – Google, Amazon, Facebook и Attack Killer готовы пригласить вас на собеседование прямо сейчас!

Повысить Понизить

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

Но лучше переформулировать вопрос в «смогу ли я стать хорошим программистом?» На мой взгляд, хорошим программистом можно стать, если:
1. Любите программирование и испытываете удовлетворение от самого процесса продумывания и написания кода.
2. Вам нравятся качественные и удобные программные продукты, и вы хотите разрабатывать именно такие.
3. Испытываете интерес к развитию IT, даже если не все тренды вам нравятся.
4. Обладаете развитым критическим мышлением и способностями к анализу.
5. Можете работать в состоянии потока и концентрироваться на одной задаче часами.
6. Вам не все равно, чем вы занимаетесь и с какими людьми работаете.
7. Готовы работать в команде для достижения общей цели, даже если не любите общаться с людьми.