Каким лучше быть программистом. С чего начать обучение программированию

Инструмент 23.05.2019
Инструмент

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

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

В уме я всегда держал, что буду работать программистом. Так в итоге и получилось.

Объявление о работе я нашел в

Работу Java-программиста я начал активно искать на пятом курсе, но сначала решил пройти стажировку в какой-нибудь компании. Объявление о стажировке я увидел в паблике МАИ в ВК. Про «Инфосистемы Джет» я, честно говоря, слышал впервые. Нашел информацию о компании в интернете, мне все показалось интересным, и я оставил заявку на их сайте.

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

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

Я прочитал всего одну книгу по программированию

Можно сказать, что я самоучка.

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

До того как я начал серьезно учиться программировать на Java, я прочитал всего одну книжку о программировании. Это был курс «С++ за 21 день».

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

Почему я выбрал Java?

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

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

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

Много ответов на свои вопросы я нашел в этом телеграм-канале.

В сети мало русскоязычных источников по программированию. Смиритесь с этим

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

Конечно, в программировании без знания английского на хорошем уровне – просто никуда. Так что тем, кто знаком с английским на уровне Google.Переводчика, я могу посоветовать только одно: сначала прокачайте свой английский. Все остальное – потом.

Конечно, не все так грустно: на русском языке есть «Инструменты для разработчика Google». Но начинать в любом случае нужно не с этого.

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

С чего я начал «прогать»

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

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

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

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

  • Stackoverflow.com.

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

  • Репозитарий с исходниками Github.com.

Он очень помог учиться на чужих примерах.

  • YouTube

Там есть много скринкастов, которые очень быстро позволяют разобраться в какой-то конкретной технологии.

Свое первое приложение я разработал за месяц

Короче говоря, приложение я сделал буквально за месяц. Самыми полезными источниками знаний стали Developer.android.com и все тот же Stackoverflow.com. Самое интересное, что рутинный процесс выкладывания приложения в Google Play занял целых два месяца. Хотя, может быть, все продолжалось так долго, потому что после разработки мой запал немного подостыл. А немного позже я разработал веб-версию приложения, прочитав книгу Beginning Java EE 7.

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

Вдобавок я не хочу ни в коем случае умалять значение университетского образования и говорить: «Зачем все это нужно? Вот, посмотрите, все получилось и так». Нужно. Университет на самом деле дает очень много и, может, самое главное – воспитывает привычку учиться.

И все же: программировать можно научиться самому. Теперь я это точно знаю.

Ирина Давыдова


Время на чтение: 13 минут

А А

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

Так или иначе – все начинают с нуля. И прежде чем с этого самого нуля начать – задайтесь вопросом, действительно ли вам нужна эта профессия?

Суть работы программиста – основные специализации, плюсы и минусы работы

Суть работы программиста зависит от специализации и компании.

Впрочем, иногда программист – и «швец, и жнец, и на дуде игрец». Но это, как правило, в маленьких фирмах, начальники которых экономят на специалистах.

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

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

К плюсам профессии можно отнести следующие преимущества:

  1. Очень даже достойная зарплата.
  2. Высокий спрос на хороших специалистов.
  3. Возможность получения престижной работы без образования.
  4. Возможность зарабатывать удаленно, сидя дома на диване.
  5. Возможность работать удаленно на зарубежные компании.
  6. Творческая профессия (правда, нередко творчество зависит от пожеланий заказчика).
  7. Комфортные условия, которые обеспечивают крупные компании своим специалистам (бесплатные напитки/булочки, специальные места для отдыха и спорта, и проч.).
  8. Возможность получения «опциона». То есть, пакета акций компании. Правда, только после отработки определенного срока в компании.
  9. Расширение кругозора. По мере развития себя в профессии приходится знакомиться с самыми разными сферами жизни и вникать в самые разные системы – от делопроизводства и бухгалтерии до проч.

Минусы:

  • Работа «сутки напролет» — обычное дело для данной профессии.
  • Данная работа для многих людей будет скучной и однообразной.
  • Интересы специалиста и заказчика не всегда совпадают, и то, что очевидно для программиста, как правило, совершенно не объяснить клиенту. Это приводит к конфликтам и стрессам.
  • Не редкость – авральные режимы работы.
  • Необходимость постоянно развиваться, изучать новое, успевать эволюционировать вслед за IT-сферой. Всего за несколько лет программы устаревают, и приходится писать новые.

Видео: Как стать программистом?

Необходимые личные и деловые качества, профессиональные умения и навыки для работы программистом – что необходимо знать и уметь?

Главные качества хорошего программиста

Хороший программист должен…

  1. Любить свою работу. И не просто любить – болеть ею.
  2. Любить учиться и учить с нуля.
  3. Быть очень трудолюбивым, усердным и терпеливым.
  4. Быть готовым к постоянной рутинной работе.
  5. Уметь работать в команде.

Какие знания нужны будущему программисту?

Начинать следует с изучения…

  • Английского языка.
  • Устройства компьютера и физики всех процессов.
  • Языков программирования.
  • Методик разработки ПО.
  • Методик тестирования ПО.
  • Систем версионного контроля.

Язык программирования – с какого начать?

Также нужно будет изучить…

  • Java. Более популярный, чем Питон, и неплохой выбор для начинающего. Но более сложный, чем Питон.
  • PHP. Заточен под «веб», но будет полезен любому новичку.
  • C и C#. Весьма сложные языки, можно оставить их на потом.
  • Ruby. Хороший вариант для второго языка.
  • Django. Он научит программировать правильно. По сложности схож с Питоном.

Многое зависит от выбранного направления.

Например…

  1. Веб-программисту будут полезны знания HTML, CSS и JavaScript.
  2. Для десктоп-программиста — API и фреймворки.
  3. Для разработчика мобильных приложений — Android, iOS или Windows Phone.

Где обучаться на программиста с нуля – учебные заведения России, курсы, дистанционное обучение, онлайн-обучение?

Если у вас нет знакомых, которые могут обучить вас с нуля профессии программиста, то у вас есть несколько вариантов обучения:

  • Самообразование. Самый сложный путь к программированию, который лежит через изучение сайтов, приложений, книг и проч.
  • Университет. Если вы только закончили школу и мечтаете получить престижную профессию программиста, поступайте на соответствующий факультет. Основные знания вы все равно будете получать путем самообразования, но «корочка» поможет вам быстрее приблизиться к заветной цели. ВУЗы выбирайте технические, изучив заранее программы обучения.
  • Персональный учитель . Если вы сможете найти наставника среди программистов, самообучение будет более быстрым и эффективным. Ищите наставников на онлайн-форумах, на айти-тусовках, тематических конференциях и проч.
  • Курсы. Обучить вас тому или иному языку программирования смогут на простых курсах, которые можно найти даже в маленьких городах. Например, «Образовательный IT-портал GeekBrains», « Специалист» при МГТУ Баумана , «Компьютерная Академия ШАГ» , МАСПК .

Получить высшее образование по специальности программист можно в…

  1. МИФИ.
  2. Российском экономическом университете Плеханова.
  3. Московском государственном строительном университете.
  4. МГТУ Баумана.
  5. Государственном университете управления.

Видео: 7 ошибок начинающих программистов

Полезные онлайн-ресурсы и книги для обучения работе программиста

  • habrahabr.ru (статьи на IT-тематику, информация по самым разным темам). Этот ресурс известен каждому программисту.
  • rsdn.org (книги, актуальные вопросы, полезный форум, восполнение пробелов в знаниях, материалы на русском языке).
  • sql.ru (отличный удобный форум, полезная литература и даже предложения по работе).
  • theregister.co.uk (новости из IT-сферы).
  • opennet.ru (новости, полезные статьи, форум и проч.). Ресурс для профессионалов.
  • driver.ru (библиотека драйверов). Полезный сайт для новичков.

Ресурсы для обучения:

  1. ocw.mit.edu/courses (свыше 2000 курсов на разные темы).
  2. coursera.org (более 200 курсов, бесплатно).
  3. thecodeplayer.com (пошаговые руководства для новичков).
  4. eloquentjavascript.net (ресурс для введения в Java Script).
  5. rubykoans.com (для всех, кто изучает Ruby).
  6. learncodethehardway.org (изучение Python, Ruby, C и др.).
  7. udemy.com (платные и бесплатные курсы).
  8. teamtreehouse.com (свыше 600 уроков).
  9. webref.ru/layout/learn-html-css (для освоения HTML и CSS).
  10. getbootstrap.com (изучение возможностей Bootstrap).
  11. learn.javascript.ru (изучение frontend и Javascript).
  12. backbonejs.org (для фронтенд-разработчиков).
  13. itman.in/uroki-django (для изучения Django).

Бесплатные сайты для обучения в помощь новичкам:

  • ru.hexlet.io (8 бесплатных курсов по C и PHP, JavaScript и Bash).
  • htmlacademy.ru (18 бесплатных курсов для верстальщиков).
  • codecademy.com (популярные курсы по языкам, инструментам и проч.).
  • codeschool.com (более 60 курсов (13 – бесплатных) по HTML/CSS и JavaScript, Ruby и Python, iOS и Git, и пр.).
  • checkio.org (для изучения Python и JavaScript).
  • codingame.com (обучение через видео-игры, 23 языка программирования).
  • codecombat.com (изучение JavaScript, Python и пр.). Обучающая игра, доступная и для тех, кто пока еще не владеет английским языком.
  • codehunt.com (обучение поиску ошибок в коде).
  • codefights.com (обучающая платформа, через турниры на которой можно «загреметь» на собеседование в приличную IT-компанию).
  • bloc.io/ruby-warrior# (изучение Ruby, а также искусств/интеллекта).
  • theaigames.com (развитие навыков программирования – увлекательный игровой онлайн-тренажер для программиста).
  • codewars.com (сборник обучающих интерактивных задач для тех, кто обладает минимумом знаний).

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

Как быстро найти работу программиста и начать зарабатывать – советы бывалых

Естественно, устроиться в нормальную компанию без опыта работы вы просто не сможете.

Поэтому…

  1. Читайте книги, изучайте сайты и самообразовывайтесь, но уже сейчас начинайте писать свои самые 1-е строчки кода.
  2. Сами создавайте и усложняйте себе задачи по пройденному материалу.
  3. Ищите свои первые проекты, пусть даже и за «смешные деньги», записывайте себе в «резюме».
  4. Ищите работу на русскоязычных биржах фриланса (ru) и на англоязычных биржах (upwork.com) тоже – там больше шансов ее получить.
  5. Начинайте с маленьких проектов, которые вам по плечу.
  6. Не упускайте и вариант open source (в таких проектах всегда не хватает людей).
  7. Помогайте «за копеечку» (или даже бесплатно, для опыта) знакомым программистам. Пусть они дают вам несложные задания.

  • Обязательно пишем: свой опыт работы, список языков и технологий, которыми вы владеете, образование и контакты.
  • Не впихиваем в резюме весь перечень своих качеств и талантов. Даже, если вы виртуозно играете на баяне, писать об этом в резюме не стоит.
  • Оформляйте резюме с учетом креатива, но уместного.
  • Не стоит заполнять пункты вроде «ваши цели и амбиции» или «кем я вижу себя через 5 лет». Достаточно написать, чем вы занимались ранее и чем хотели бы теперь.
  • Не пишите о языках и технологиях, которые вам известны только по названиям. В резюме следует писать лишь те, в которых вы плаваете, как рыба в воде. Для всего остального есть волшебная фраза – «был небольшой опыт».
  • Если вы профессионально владеете Delphi, не забудьте упомянуть, что знаете также C#, jave или иной язык, потому как просто «программист дельфи» никому по сути не нужен (дельфи – это азы, с которыми знаком каждый выпускник).
  • Не упоминайте работу, которая была не по специальности. Это никому не интересно. Также никому не интересно, есть ли у вас водительские права или автомобиль. Вы же не курьером собираетесь устраиваться.

Перспективы карьеры программиста и зарплата программистов

Средняя зарплата программиста в крупных городах страны – от 50000 до 200000 рублей .

По России в целом – от 35 тысяч до 120000 .

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

От стажера до руководителя IT-отдела – путь не такой уж долгий, а зарплата на самом верху может достигать и 4000 долларов ежемесячно. Ну а потом можно двинуться и в руководители крупного проекта (прим. – по разработке ПО), а тут уже зарплата превышает 5000 долларов.

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

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

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

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

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

Как же так получается, что компьютеры способны понимать программы, написанные программистами? Что для этого нужно и как вообще можно стать программистом?

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

  1. Пользовательский уровень.
  2. Знание основ программирования.
  3. Углубленное изучение языка программирования; работа в реальных коммерческих проектах.
  4. Работа в команде программистов над сложными системами.

Давайте рассмотрим особенности каждого из этих четырех этапов.

Пользовательский уровень

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

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

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

Как правило, пользователи работают с программами, запускаемыми под операционной системой Windows(OS, operation system, можно сказать, что это самая главная программа в любом компьютере). Существует огромное множество, как других операционных систем, так и других типов компьютеров. Самые популярные из альтернатив - это OSX (MacOS) и Linux.

Вне зависимости от того, чем именно вы решите заниматься в жизни, вам всегда пригодится умение искать нужную информацию в сети Интернет, пользоваться различными сетевыми сервисами — от электронной почты до платежей онлайн. Прошли те времена, когда для решения какой-то одной конкретной задачи нужно было штудировать тома учебной и справочной литературы. Кроме поисковых сервисов (google.com,yandex.ru) в Интернет существует масса сайтов, построенных по типу вопрос-ответ (лучший для программистов — stackoverflow.com). Это революционный и самый эффективный способ найти решение конкретной проблемы, потратив минимум времени.

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

Знание основ программирования

Как начать программировать?

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

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

Старая шутка гласит: «Выбирай тот язык программирования, на котором практикует ближайший к тебе гуру (авторитетный опытный профессионал), который всегда может помочь советом». Другой совет состоит в том, чтобы выбрать язык программирования, используя который, вы будете чувствовать себя счастливым . А если серьезно, то не важно, какой именно язык вы выбираете, чтобы освоить азы структурного программирования. Основная ваша задача на этом этапе - это понимание таких вещей как алгоритм, код, данные. Вы должны уметь работать с числовыми и строковыми переменными, массивами, использовать циклы, условный оператор, подпрограммы в формате процедур или функций, корректно программировать ввод и вывод данных. Судя по демонстрационным вариантам ЕГЭ по информатике 2012 года, основными учебными языками программирования остаются Бейсик (BASIC), Паскаль (Pascal) и Си (С). С таким же успехом в этот список можно добавить Питон (Python) и Руби (Ruby). Вы не выбираете один язык программирования раз и навсегда. Напротив, плох тот программист, который знает только один язык программирования. Со временем к вам придет осознание того факта, что такое разнообразие языков и сопутствующих им технологий существует не случайно. Дело в том, что в реальной жизни выбирать тот или иной язык программирования нужно в зависимости от поставленной задачи.

Можно изучить основы программирования самостоятельно.

В этом случае вам понадобятся учебно-методические материалы. Это может быть самоучитель или набор вводных статей в электронном виде (tutorial), которых в сети сейчас существует огромное множество даже на русском языке. Из программ вам потребуется компилятор или интерпретатор языка, который вы выбрали, и редактор исходного кода. Желательно иметь пакет программ разработчика с интегрированной средой разработки (IDE). Это специальный набор программ, который совмещает в себе и удобный редактор кода и подключенный к нему компилятор или интерпретатор. Подобные пакеты можно найти даже для очень старых компьютеров на базе операционной системы MS-DOS.

Интерпретатор - это программа, которая транслирует код вашей программы в машинный язык (самый низкоуровневый язык программирования; компьютер “железо” понимает только этот язык программирования) и тут же его выполняет шаг за шагом (интерпретирует). Компилятор - это программа, которая транслирует (компилирует) код вашей программы в специальный исполняемый формат (exe -файл под Windows ), по сути, в отдельную программу, которую позже можно самостоятельно запустить даже на другом компьютере под управлением той же или совместимой с ней операционной системы.

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

Профессиональное программирование

Между начинающим программистом, который с интересом впитывает всё новое, и специалистом, способным реализовать программное решение для какой-то реальной задачи, лежит, что называется, пропасть. Это выражается в уровне понимания происходящих процессов как создания программного обеспечения (ПО), так и его последующего внедрения и использования. Дорогу осилит идущий. Рано или поздно количество часов, потраченных на изучение учебных материалов и просмотр чужих и написание своих кодов, выльется в качественные изменения в понимании будущего специалиста. Лучшее средство для этого - разработка своего собственного программного проекта. Пусть даже на некоммерческой основе. В мире существует огромное множество подобных «открытых» проектов, библиотек, исходных кодов.

Термин открытое программное обеспечение (англ. open - source software ) обозначает статус некоторого ПО (библиотека компонентов, прикладная программа), доступного в Сети для свободного скачивания, изучения и использования. Такие программы, в зависимости от приложенной к ним лицензии, могут быть использованы любым человеком или организацией в таком же open - source проекте, в коммерческой системе или модифицированы под нужды конкретной задачи.

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

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

Вот почему в таких наукоемких сферах как IT высшее техническое образование играет одну из ключевых ролей. Оно дает вам как перспективу, так и безопасность в будущем. И речь сейчас вовсе не о формальном дипломе. Обладая широкой теоретической базой, полученной в вузе, вы сможете легко осваивать новые инструменты, языки программирования и даже целые парадигмы (функциональное программирование, логическое программирование, ООП, DSL, AI, Machine Learning). Вам будет гораздо легче найти новую работу. Богатый математический аппарат даст возможность решать сложные задачи, принимать нестандартные решения, видеть шире и дальше, со временем повести за собой людей, возглавив коллектив от нескольких программистов до мультинациональных групп разработчиков, в качестве системного архитектора (Architect), старшего программиста (Lead Developer), руководителя IT-направления (англ. Chief Information Officer, CIO) или исполнительного директора (англ. Chief Executive Officer, CEO). (СПбГУ ИТМО)

Работа в компании

Одного диплома недостаточно для того, чтобы автоматически получить место программиста в серьезной компании. В первую очередь HR’ы (англ. Human Resource, люди в компании, которые занимаются кадровыми вопросами подбора персонала) смотрят на реальный опыт кандидата, который тот должен подтвердить на собеседовании и при реализации тестового задания.

Условно позиции программистов можно разделить на 3 уровня:

  • начальный (Junior Software Developer);
  • средний (Middle Software Developer);
  • высокий (Senior Software Developer).

Причем каждая вакансия подразумевает специализацию по тому или иному языку программирования и технологии. Самые популярные и востребованные из них: Java, C/C++, .NET, PHP, Ruby, Python, Flash/Flex. Кроме того, существует градация по предметной области: программирование под Web, Enterprise-разработка коммерческих решений в сфере управления, создание игр, программирование под мобильные платформы, низкоуровневое и системное программирование.

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

Академическое знание в XXI веке старается не отставать от стремительно изменяющегося мира IT. Поэтому, и наши, и зарубежные вузы тесно сотрудничают с крупнейшими компаниями-разработчиками ПО. Так, например, преподаватели МГУ задействованы в школе обработки информации, занятия которой уже несколько лет организует компания Яндекс. С одной стороны, компании дают самые передовые практические навыки разработки, с другой - получают квалифицированные кадры в качестве выпускников факультетов прикладной математики и информатики.

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

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

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

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

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

С дипломом программиста можно устроиться работать на высокооплачиваемое место не только в России, но и в других странах. Или вообще начать собственный бизнес. Поэтому многие думают, что нужно сдавать на программиста. Ведь поступление на обучение подразумевает столкновение со вступительными испытаниями. В России это ЕГЭ или ГИА.

Методы получения образования

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

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

  1. Поступить в ВУЗ на соответствующее направление. Обычно на программистов обучают на математических и информационных отделениях. Например, можно обратиться в МГИМО или в МГУ. В гуманитарных университетах программирование не встречается.
  2. Закончить колледж. Тут предлагается или после 9 класса пойти учиться, или после 11. Хороший способ получения среднего профессионального образования. В некоторых училищах не требуется вообще задумываться над тем, что нужно сдать на программиста. Достаточно просто предоставить аттестат об образовании. Но на практике чаще всего учеников принимают по результатам ГИА и ЕГЭ.
  3. Пройти курсы переквалификации. Обычно не требуется никаких экзаменов. На обучение направляют или с биржи труда, или с работы.
  4. Обратиться к помощи частных учебных центров. Достаточно закончить специализированные обучающие курсы программирования. В данном случае не требуется вообще думать о том, что нужно сдавать, чтобы стать программистом. Вступительных испытаний нет, достаточно заплатить за обучение.

Куда именно пойти учиться? Это каждый выбирает для себя сам. Но чаще всего на практике встречается поступление в колледжи и ВУЗы. Именно поэтому приходится думать, что нужно сдавать на программиста.

Неоднозначность

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

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

Обязательные испытания

После 9 или 11 класса? Существует 2 обязательных предмета. Их придется в любом случае сдавать, не обязательно при поступлении на программирование.

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

Ребенок хочет освоить профессию под названием "программист"? Какие экзамены нужно сдавать после 11 или 9 класса? В обязательном порядке:

  • русский язык;
  • математика (желательно профильный уровень).

Распространенные экзамены

А что дальше? Обычно для поступления на ту или иную специальность требуется 3 предмета. Русский язык, хоть и является обязательным, но его довольно часто не принимают во внимание. То есть, он необходим для выпуска из школы. Остается еще 2 предмета.

Что нужно сдать на программиста? Чаще всего от абитуриентов требуют ЕГЭ или ГИА по следующим предметам:

  • информатика;
  • физика.

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

  • математикой;
  • русским языком;
  • физикой;
  • информатикой.

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

Прочие предметы

Есть иные предметы, запрашиваемые в сочетании с математикой. Интересно направление под названием "Программист"? Что нужно сдавать после 11 класса? Вполне вероятно, что от будущего программиста потребуют результатов ЕГЭ/ГИА по:

  • иностранному языку;
  • биологии;
  • обществознанию;
  • истории.

Теперь понятно, что нужно сдать на программиста. Именно поэтому сначала люди отдают предпочтение прохождению специализированных платных курсов. И только потом задумываются над реальным поступлением в ВУЗ или техникум на программирование.

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

С чего начать

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

Если с вами ничего из вышеперечисленного не произошло, значит, у вас есть выбор из четырёх вариантов:

  • Самообразование . Этот вариант можно использовать как самостоятельно, так и в паре с другими методами. В интернете полно , и приложений , которые помогают изучать различные языки программирования и технологии. Но это самый тяжёлый путь для начинающих.
  • Университет . Если вы оканчиваете школу и хотите быть программистом, тогда идите в университет. Если не за знаниями, тогда за корочкой. Она может послужить бонусом при устройстве на работу. Хотя и какие-то знания вы тоже получите. Но не забывайте заниматься и самообучением. К выбору вуза стоит подойти очень ответственно. Внимательно изучите программы обучения и выбирайте лучшие технические вузы.
  • Ментор . Будет очень неплохо, если вы найдёте человека, который согласится помочь вам и направит вас в правильную сторону. Он подскажет подходящие книги и ресурсы, проверит ваш код, даст полезные советы. Кстати, мы уже писали о , где вы сможете найти ментора. Наставника можно искать среди знакомых программистов, на IT-тусовках и конференциях, на онлайн-форумах и так далее.
  • Специализированные практические курсы . Попробуйте поискать в своём городе курсы, где вас обучат какому-нибудь языку программирования или технологии. Я был приятно удивлён количеством таких курсов в Киеве, в том числе бесплатных и с последующим трудоустройством.

Какой язык, технологию и направление выбрать

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

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

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

В любом случае изучите веб-технологии. Это язык разметки , стили и , который позволит сделать вашу страницу динамической. На следующем этапе изучите серверный язык (Python, PHP, Ruby и другие) и подходящие для него веб-фреймворки. Изучите базы данных: практически в каждой вакансии программиста это упоминается.

Как получить начальный опыт

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

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

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

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

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

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

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

Почему стоит выбрать Python

Давайте немного подробнее поговорим о выборе первого языка программирования. Первый язык должен быть простым и популярным на рынке. Таким языком является Python . Я очень советую выбрать именно его в качестве первого языка программирования.

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

Справедливости ради стоит упомянуть и о других языках программирования. Java может стать неплохим выбором для новичка. Этот язык популярнее, чем Python, но и немного сложнее. Зато инструменты для разработки гораздо лучше проработаны. Стоит только сравнить Eclipse и IDLE. После Java вам будет проще перейти к работе с низкоуровневыми языками программирования.

PHP - ещё один очень популярный язык. И, мне кажется, он даже проще, чем Python. Очень легко найти себе ментора или решение какой-нибудь проблемы на форуме. Всё потому, что в мире существует огромное количество PHP-программистов разного уровня. В PHP нет нормального импорта, есть множество вариантов решения одной и той же задачи. А это усложняет обучение. И PHP заточен исключительно под веб.

Языки C и C# очень сложны для новичка. Ruby - хороший выбор в качестве второго языка, но не первого. JavaScript - очень простой язык, но ничему хорошему он вас не научит. А задача первого языка программирования всё-таки научить вас чему-то правильному, задать какую-то логику.

Важен ли английский язык

Важен! Не знаете? Учите. Знаете? Совершенствуйте. Учитесь читать, писать, слушать и говорить на английском. Делайте упор на техническую литературу. Слушайте англоязычные подкасты. Читайте англоязычные учебники по программированию.

Что нужно знать, кроме языка программирования

Конечно же, кроме языка программирования и английского, нужно знать что-то ещё. А вот что - зависит от направления, которое вы выберете. Веб-программист обязан знать HTML, CSS, JavaScript. Десктоп-программист учит API операционной системы и различные фреймворки. Разработчик мобильных приложений учит фреймворки Android, iOS или Windows Phone.

Всем нужно выучить алгоритмы. Попробуйте пройти курс на Coursera или найти подходящую для себя книгу по алгоритмам. Кроме этого, нужно знать одну из баз данных, паттерны программирования, структуры данных. Стоит также познакомиться с репозиториями кода. Хотя бы с одним. Обязательно знание систем версионного контроля. Выбирайте Git, он самый популярный. Вам нужно знать инструменты, с которыми вы работаете, операционную систему и среду разработки. И главный навык программиста - уметь гуглить. Без этого вы не проживёте.

Последние шаги

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



Рекомендуем почитать

Наверх