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

Почему сразу "идей нет"? Если я о чём-то уверенно говорю - значит, я достаточно об этом подумал, чтобы быть уверенным.

    В текущей ситуации быстрее и дешевле будет написать на HTML+JavaScript (щедро смазав дополнительными костылями). Причина заключается в том, что на данный момент не существует движущей силы, "точки притяжения", которая могла бы способствовать появлению достойной альтернативы HTML. Поэтому все мучаются с HTML. Именно мучаются. Это вам подтвердит любой честный веб-разработчик.

    Если рассуждать отстранённо, то есть пара технологий, которые по своей концепции хорошо бы подошли. Первая - это.NET и WPF. Чёткое разделение на логику и интерфейс, с возможностью добавить все плюшки, необходимые для сложных программ (строгая типизация, компиляция и человеческая отладка), набор хорошо совместимых инструментов, с разделением по задачам: клиентская логика, клиентский интерфейс, серверная логика.

Если бы вместо HTML мы имели возможность динамически загружать и компилировать WPF с динамическим подключением библиотек на C# в качестве клиентской логики - эта технология превосходила бы HTML как минимум в 10 раз по скорости работы и как минимум в 10 раз по скорости разработки.

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

Вторая технология - это Flash. Технически, он, с одной стороны, слабее, чем.NET. С другой стороны, он выбрал очень актуальные сильные стороны: очень простой, вместе с тем удобный/современный, удобен для аниматоров, сумел пролезть на 99% компьютеров. В истории Флэша были моменты, когда на нём действительно можно было делать хорошие сайты. И я говорю не о тех сайтах, где куча визуальных рюшечек затмевала любой функционал. Я говорю о платформе Flex и его аналоге WPF под названием MXML. По настоящему кроссплатформенный, почти строгая типизация (массивы не были типизированными и это плохо), разработан специально для интернета с учётом его особенностей (например, возможность динамической подгрузки приложения прямо во время его работы), разработан вокруг паттерна MVVM (разновидность MVC), разделение логики и интерфейса с динамическим поздним связыванием, которое выполняется одной строкой.

Очень медленный (основная проблема Флэша), но зато очень функциональный. Тормознутость можно было бы решить оптимизацией Flash-машины (Flash-плеера). Флэш был не очень далеко от того, чтобы стать HTML-ом 21-го века. При всех его недостатках, основа у него была хорошей, а все проблемы - исправимыми.

И что произошло дальше? Apple начал целенаправленно выдворять Flash со своих устройств и одновременно рекламировать "быстрый и эффективный HTML5", который изменит мир (что на тот момент являлось откровенным враньём, потому что тогда HTML5 был очень молод и по факту работать не мог). При том, что Flash по всем пунктам был минимум вдвое лучше, чем HTML5. И даже до сих пор Flash умеет делать многие вещи, которые недоступны в HTML (например, многопоточное программирование - слабо на JavaScript? поддержка игровых контроллеров прямо из коробки? поддержка микрофона и веб-камеры со встроенным алгоритмом эхоподавления? программируемая аппаратно-ускоренная низкоуровневая графика? (WebGL пока ещё в зачаточном состоянии)? поддержка сетевых протоколов с постоянным подключением (TCP, UDP, P2P)). Но ведь тут дело принципа. Нельзя было допустить, чтобы Flash стал действительно всеобщей средой. Сейчас Flash почти полностью умер. На мой взгляд, незаслуженно. Я бы, например, предпочёл, чтобы вместо него умерли HTML, CSS и JavaScript. Но придётся и дальше с ними мучаться.

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

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

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

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

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

Какие бывают программисты

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

Изучите одну из систем продвинутого моделирования (к примеру, UML или ORM).

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

Начните применять полученные знания.

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

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

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

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

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

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

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

    Первое, что нужно сделать – это проверить базовый уровень логики. Найди шмурдики тест, пройди его и набери хотя бы 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. Готовы работать в команде для достижения общей цели, даже если не любите общаться с людьми.