Что делать чтобы стать программистом. Профессия программист

Привет всем! Меня зовут Константин Ботнарь. Уже почти 8 лет преподаю программирование. А началось все, когда я был аспирантом и читал лекции своим ровесникам в одном из одесских вузов. Теперь преподаю в Компьютерной школе Hillel, веду курс Introduction о том, как стать айтишником с нуля. Хочу немного развеять мифы вокруг самой востребованной профессии 21 века и рассказать, кто такие программисты и чем они занимаются.

Выпускники выходят в свободное плавание

Тыжпрограммист, или Что такое особый склад ума

Пожалуй, это самый распространённый миф. Говорят разное: что у программистов как-то по-другому устроен мозг, что они – отчуждённые и замкнутые. И без этого успешным профессионалом не стать.

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

  • Уметь работать в команде. Независимо от того, с чего начинать: веб-программирование, создание мобильных приложений, верстка и многие другое – это командная работа. Поэтому без этого – никуда.
  • Понимать, что такое приоритет и как правильно его расставлять. Даже в самой престижной компании программистам часто падают задачи в стиле «Сделай сейчас, а это еще вчера нужно было, а вот здесь – быстро и только подправить». Структурирование задач – один из важнейших навыков крутого проггера.
  • Обладать феноменальной усидчивостью. Нет, в офисе от звонка и до звонка сидеть не придётся, а вот проводить много времени за ноутбуком или компьютером – точно. Именно поэтому айтишников и считают нелюдимыми: просто пока все отдыхают, большинство из них предпочитает поработать.
  • Не бояться совершенствоваться и учиться новому. Языки программирования устаревают, нужно учить новые, мобильные приложения создаются на новых платформах, каждый день появляются десятки сервисов. Если хочется стать хорошим программистом – нужно быть гибким и готовым прокачивать свои навыки.
  • Любить свой компьютер. Здесь и добавить больше нечего. Ваша машина – это основной рабочий инструмент.

Уже эти навыки могут принести стабильный и неплохой доход. А что если добавить сюда еще профессиональные навыки и образование?

Что нужно знать программисту

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


Будущие программисты

В деталях – истина

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

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

К чему нужно быть готовым, начиная :

  • Даже простые задачи иногда требуют огромного количества времени. Конечно, потом их можно будет решать гораздо быстрее, но поначалу придётся очень напрягаться для поиска решения проблемы.
  • Как программировать – важно не не упасть, а суметь подняться. Любая неудача на пути, слетевший код, пропуск переменной – это просто ступенька к успешному будущему. И даже если сайт лёг, то нельзя его бросить и просто уйти. Нужно поднять свой багаж знаний и опыта и найти ту самую переменную.
  • С чего начать программирование: помнить, что с первого раза вряд ли получится. Ни хороший сайт, ни удобное мобильное приложение, ни даже чат-бот. Ошибки в программировании – это абсолютно нормально, и я бы даже сказал, что полезно. Мои лучшие выпускники тратили на поиски решения и реализацию своих проектов по несколько сотен часов. И писали правильный код. Зато потом для них эта задача была чем-то сравнимым с ребусом в детских книгах.

Алгоритмы – это важно

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

Вот такое отношение к вещам называется алгоритмическим мышлением. Узнали себя? Поздравляем! Тогда путь программиста с нуля – как раз для вас! Осталось только добавить необходимых знаний и опыта.

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

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

Программист: ожидание и реальность

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

В сфере IT одиночке выжить не так-то просто. Помните, чем раньше сможете выйти из своей комнаты и продать свой проект, тем быстрее поднимитесь по карьерной лестнице.

В программировании самое сложное – начать, поэтому хочу будущим web-программистам дать простой, но очень значимый и важный совет: не бойтесь новых начинаний.

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

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

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

Занимайтесь любимым делом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

От Google

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

Пройдите курс по направлению «Computer Science»

Выучите объектно-ориентированный язык программирования

Объектно-ориентированное программирование сейчас является стандартом в промышленном программировании, поэтому и хорошая зарплата вам гарантирована. Примерами таких языков являются C++, Java, Python. Курсы для новичков можно найти , и , а для продолжающих обучение и . Несколько полезных сборников ссылок и книг для изучения , .

Осваивайте другие парадигмы и языки

Расширяйте свой программистский кругозор, не стоит ограничиваться одним ООП, осваивайте другие парадигмы, учите другие языки , пробуйте себя в разных сферах. Например, если вы хотите разрабатывать веб-приложения, то однозначно стоит обратить внимание на CSS, HTML, JavaScript, PHP, Ruby. Хотите экзотики? Посвятите немного времени Haskell, Clojure, Prolog. Курсы для получения новых можно найти и . Отдельно советуем обратить внимание на ресурс Codecademy . Обратите внимание на нашу подборку .

Тестируйте код

Развивайте логическое мышление, выучите дискретную математику

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

Знайте алгоритмы и структуры данных

Разберитесь, как устроены операционные системы

Любая программа взаимодействует с ОС, поэтому выработайте понимание того, как устроены операционные системы , хотя бы на базовом уровне. Отличный на YouTube.

Выучите UX-дизайн

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

Разберитесь в машинном обучении???

Разберитесь, как работают компиляторы

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

Работайте над своим проектом

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

Участвуйте в open source-проектах

это поможет вам развить навыки работы с чужим кодом, да и в конце концов вы просто будете приносить пользу человечеству. Идеальным местом для open source-деятельности является GitHub .

Работайте над проектами вместе с другими программистами

Это поможет вам научиться работать в команде, что является неотъемлемым навыком в современном мире, а еще вы сможете научиться у них чему-то новому.

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

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

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

1. Web-программисты — самое простое направление деятельности. Включает в себя:

  • Верстальщик, создающий шаблоны (дизайн сайтов);
  • Серверный программист, создающий скрипт сайта.

2. ПО Программисты (средний уровень сложности) разделяются на:

  • Разработчика софта;
  • Разработчика системных программ.

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

Сколько нужно учится?

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

Какие знания и качества нужны?

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

Из школьной программы особенное внимание необходимо уделять следующим предметам:

  1. Высшая математика. Помимо умений осуществлять обычные вычисления, это один из немногих школьных предметов, который заставляет думать, анализировать, развивать абстрактное мышление и выстраивать личные умозаключения. Именно такими навыками должен обладать человек;
  2. Английский язык. В данном случае необходим как минимум «средний уровень со словарем». В идеале это хорошие знания языка технической направленности и умение переводить тексты по специализации. Ведь в большинстве своем придется изучать и использовать документацию, приобретать различное программное обеспечение, а также договариваться с иностранными контрагентами именно уверенно владея английским языком;
  3. Информатика (теория программирования). Необходимо иметь понимание о типах данных и основах работы с базами данных, основных операторах и языках программирования (в школьной программе это Pascal и C++), а также основах объектно-ориентированного программирования;
  4. Физика. Многие полагают, что для овладения профессией программиста знание этого предмета является абсолютно бесполезным. Но это мнение можно назвать ошибочным. Ведь данное направление работы может быть вплотную связано с физикой. Например, создание симулятора космического или морского корабля, а также компьютерных игр с максимально приближенными к реальности. Могут стать необходимыми знания о падении и преломлении света, создание реального движения и заносов автомобиля при различных погодных условиях, реалистичность отображения воды, дыма либо огня и т.п.

Нужные качества для работы:

  1. Владение неординарным и логическим мышлением;
  2. Математический склад ума;
  3. Умение распоряжаться временем (не забывая о постоянном самообучении);
  4. Навык разделять одно большое задание на подзадачи;
  5. Умение правильно выбирать себе цель и иметь стремление к ее достижению;
  6. Умение трудиться в большом коллективе. С большими проектами в одиночку не справиться, а мелкие проекты не особо востребованы. Необходимо обсуждать с более опытными коллегами непонятные вопросы и заполнять пробелы в знаниях;
  7. Умение быстро обучаться. Технологии не стоят на месте. Поэтому помимо имеющейся работы над своими проектами нужно постоянно следить и быть в курсе последних изменений в сфере информационных технологий.

Минимальные знания и навыки

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

  • Изучить основы компьютерной грамоты с помощью дистанционных курсов «Coursera» или «Udacity»;
  • Получить знания в программировании хотя бы на одном языке (Python, С++, Java);
  • Изучить другие языки (PHP, Java Script, HTML, CSS);
  • Научиться тестировать код;
  • Научиться понимать алгоритмы и структуры данных;
  • Получить знания по дискретной математике;
  • Изучить особенности работы операционных систем;
  • Получить знания об искусственном интеллекте;
  • Научиться создавать компиляторы;
  • Получить знания по криптографии и параллельному программированию.

Приступая к практической работе, вышеупомянутые специалисты советуют:

  • Создать собственный сайт, сервер либо робота;
  • Провести разработку части крупной системы, разобраться в документации и кодах, провести отладку программы;
  • Начать работу над большим проектом в команде. Это позволит учиться быстрее и привыкать командному взаимодействию;
  • Постоянно улучшать свои знания и навыки;
  • Начать работу по обучению других.

Где получить необходимые знания?

Получить необходимые теоретические и практические знания в области программирования самостоятельно можно несколькими способами:

  1. Обучение по книгам и журналам. Этот вариант можно назвать стандартным и проверенным многими годами. Однако чтобы сэкономить на покупке «бумажного носителя» можно скачать с Интернет-ресурсов наиболее подходящую информацию по вопросам программирования. Многие практики утверждают, что восприятие изучаемого материала лучше происходит именно с бумажных источников. А необходимость прописывать вручную множество различных кодов позволит приобрести некую уверенность в себе и избавит от пассивного способа написания программных кодов типа «копировать — вставить»;
  2. Обучающие видео-курсы. Являются хорошей альтернативой книгам и журналам. Книги, в большинстве своем написаны скучным и не всегда понятным языком, без возможности задать интересующий вопрос ее автору. В случае просмотра видео-уроков все на порядок легче. Главное, что необходимо — повторять все те действия, которые показываются на мониторе. А в случае возникновения трудностей и непонятных моментов, на форуме всегда можно задать свой вопрос автору. Еще одним положительным моментом такого обучения является самостоятельное выполнение ряда действий, описанных в уроке. Да, это происходит в виде четкого повторения операций, осуществляемых в видеоролике. Но именно эта процедура постепенно вырабатывает способность самостоятельного создания скриптов, приложений и программ.

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

Заключение

Изменения в IT — технологиях и, в том числе, в языках программирования происходит все время. Необходимо пытаться идти в ногу со временем, изучать различную литературу, посвященную конкретному направлению работы. Постоянный поиск различных способов решения задач будет способствовать повышению профессиональных знаний. Общение с коллегами либо просто людьми, имеющими отношение к программированию, позволит быстрей находить правильные способы выполнения поставленных задач.

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