10 способов научиться программировать самостоятельно
Содержание:
- Как научиться ИТ-навыкам
- Английский язык
- Люди
- Главные языки и технологии для старта
- Для общего развития
- Где учиться
- Для чего нужно программирование
- Евгений Кот, Frontend Team Lead, Wrike
- Специалист по развитию бизнеса (лидогенерации)
- Участие на хакатонах, конференциях, митапах
- Шаг 3. Пойми, какие виды языков программирования бывают
- Как научиться программированию
- Какие сферы программирования бывают
- Тестировщик (QA)
- Профессия IT №3. Администратор баз данных
- Сергей Шаров, CEO и сооснователь в ASOdesk.com
- Немного истории
- Как быть, если вам не хватает знаний до вакансии джуниор-программиста?
- Направления в ИТ
- Выбор языка программирования для изучения в 2021 году
- Можно ли самому научиться программированию?
- Самообучение
- Краткие итоги
Как научиться ИТ-навыкам
Самый простой способ освоить ИТ-навыки — поставить перед собой сложную задачу и решать ее
И не так важно, работаешь ты с преподавателем или занимаешься сам — нужно оттачивать умения постоянно, постепенно повышая уровень сложности задач. В обучении ИТ-навыкам работает тот же принцип, что и в фитнес-тренировках, да и в любом обучении — лучше заниматься понемногу, но каждый день, чем просидеть за компьютером сутки, а потом не садиться за него месяц
Экономика образования
Образование как проект: как ставить цели обучения и не бросить на полпути
Создавать свои проекты
Решать учебные задачи скучно, поэтому лучше задумать собственный проект: программу, которая поможет вести бюджет, видеопрезентацию, которая принесет новых клиентов на основной работе, сайт для родственника, который давно хочет заняться своим делом. И даже лучше, если этот проект будет не для себя, а для другого — сработает внешняя мотивация
Но важно понимать степень комфорта — если не получится сразу и станет стыдно перед другими людьми, то возможно вы не захотите возвращаться к этому снова
Найти подходящий формат
Заниматься одному эффективно, но сложно — не все готовы набивать шишки самостоятельно, иногда хочется воспользоваться готовыми решениями. Поэтому нужно пробовать разные форматы — например, заниматься на курсах. Плюс курсов — в низких темпах, к ним легче адаптироваться. Также в случае с курсами работает дополнительная мотивация: ты заплатил деньги, значит должен посещать занятия и стараться получить от них максимум пользы.
Еще один формат обучения — работа в команде. Несколько человек одного уровня берут проект и пытаются его реализовать. Главный плюс в том, что с проблемами и можно разобраться быстрее, чем одному. Главный минус — не все одинаково хорошо освоят навык, кому-то достанутся более простые задачи, кому-то — более сложные.
Найти наставника
В обучении важно получать обратную связь, и для этого нужен наставник: он скажет, почему у тебя получилось, или почему нет. Он может подсказать более простые решения и в принципе показать, что и как должно работать
Экономика образования
Ментор: кто это, зачем нужен наставник и где его искать
Если вы занимаетесь сами, то можете получать обратную связь на специальных форумах, но ответ может прийти не всегда вовремя. Также для такого поиска лучше изучать англоязычные ресурсы: русскоязычное сообщество более токсично, новичков скорее ругают, чем поддерживают. Еще один минус такой поддержки — советы все время дают разные люди. Один наставник всегда может построить ваш образовательный маршрут, а случайные советчики нет.
В Telegram-канале «Списать не получится» мы еще больше рассказываем о трендах в образовании и о том, как учиться в течение всей жизни и делать это с удовольствием. Подписывайтесь!
Английский язык
Если вы пишете на 1С, сразу переходите к следующему пункту. Ну а всем остальным знание английского языка пригодится, чтобы:
- лучше понимать код;
- читать мануалы;
- взаимодействовать с иностранными заказчиками.
Кроме того, английский язык позволит задавать вопросы на зарубежных форумах и stackoverflow — это иногда единственный способ получить помощь, потому что на англоязычных ресурсах люди стараются помочь, в то время как на отечественных прежде всего поднимут на смех, спросят, зачем вам это нужно и для чего вообще вы пришли в программирование, и только потом, может быть, помогут.
Так что английский для IT-специалистов — мастхэв, иф ю вонт ту би э вери гуд программер. Но если вы не дружите с языками, не беда — знания терминов будет достаточно, чтобы нормально работать.
Полезная литература:
- English for Information Technology.
- Career path Software Engineering.
- Oxford English for Information Technology.
- Professional English in Use ICT.
- Check Your English Vocabulary for Computers and IT.
Нужно: всем.
Люди
Почитайте, как специалисты из разных профессий пришли к тому, что они умеют сейчас, чем они занимались на старте и как вообще пришли в ИТ:
Как стать руководителем ИТ-команды за 5 лет. Александр Штыков: путь от контент-менеджера до тимлида.
Владимир Олохтонов о работе старшего разработчика в Авито. Путь от монтажника локальных сетей до инженера машинного обучения.
«Никто не верил, что я сама пишу код». Анастасия Никулина: о дата-сайнс, ютубе и программировании.
Главные языки и технологии для старта
Для разных профессий нужны разные навыки и языки. Но для быстрого старта достаточно этого:
HTML — на нём пишут и верстают все сайты в интернете.
CSS — помогает оформлять красиво то, что уже свёрстано.
JavaScript — для программирования разных возможностей сайта: добавления товара в корзину, формирования персональной ленты или для корпоративного чат-бота.
Python — для тех, кто хочет пойти в бэкенд или в дата-сайенс. Для обычной веб-разработки он не нужен.
Для общего развития
Обычно такое не спрашивают при трудоустройстве, но для общего ИТ-развития это будет полезно. Заодно посмотрите, как ИТ влияет на привычные вещи.
Как устроен интернет, можно ли его отключить
Где учиться
Лучше всего учиться с наставником — он поможет быстро разобраться с тем, что непонятно, и проконтролирует весь процесс погружения в профессию. В Практикуме есть бесплатная часть с обучением — попробуйте, если понравится — продолжите учиться дальше.
Подборка
Михаил Полянин
Редактор
Максим Ильяхов
Корректор
Ирина Михеева
Иллюстратор
Даня Берковский
Вёрстка
Мария Дронова
Соцсети
Олег Вешкурцев
Для чего нужно программирование
Мы убедились, что вся окружающая реальность описывается четкими алгоритмами и программами. Согласно научному консенсусу, большинство этих программ в живых организмах создано в результате эволюции. Но это вовсе не значит, что мы — люди — не можем создавать копии этих программ или абсолютно новые программы, которых раньше не существовало в природе. Конечно можем.
Где применяется программирование? С каждым годом оно охватывает всё большие области человеческой деятельности. Человек осваивает программирование автоматов и машин, которые по инструкции делают все, что нам нужно. Ученые научились программировать живые организмы, вирусы. Мы программируем растения, чтобы увеличить урожайность и защитить их от вредителей. Близки к успеху опыты по изменению генома человеческих эмбрионов, чтобы вносить улучшения в людей на стадии зародыша (лечить наследственные заболевания, выбирать мальчиков вместо девочек и т.д.).
Биоинформатика вносит свой вклад в программирование систем искусственного интеллекта (ИИ), которые распознают человеческую речь, понимают смысл слов, определяют объекты на фотографиях и видео и т.д. Из этих маленьких «кирпичиков» в будущем планируется создать «сильный» ИИ. Если он сможет самостоятельно эволюционировать, обучаясь на собранной информации, то бесконечное самообучение может привести человечество к технологической сингулярности, настоящему апогею компьютерного программирования. В этом случае созданная программа будет самосовершенствоваться настолько быстро, что станет недоступна нашему пониманию.
Технологическая сингулярность соответствует третьему закону Кларка, который можно наблюдать повсюду и в наши дни: «Любая достаточно развитая технология неотличима от магии».
Евгений Кот, Frontend Team Lead, Wrike
Если говорить про Санкт-Петербург, то сильными вузами считаются ИТМО, Политех, ЛЭТИ. Про курсы сказать труднее, их сейчас немало. Что касается фронтенд и экспертных сообществ, рекомендую сходить на несколько локальных митапов.
Там можно познакомиться с экспертами и научиться многим вещам. Например, NodeSchool, PiterJS, PiterCSS, Spb-Frontend, а также наши регулярные митапы Wrike Tech Club.
Но есть две стороны монеты: с одной стороны, образование как «корочка» без практических знаний абсолютно бесполезно. Кандидат, который ничему не научился ни в вузе, ни на курсах, вряд ли сможет принести пользу команде и компании. Но, безусловно, можно быть программистом и без какого-либо образования.
Однако в интернете представлены огромные базы материалов по всем предметам (например, та же Coursera) и зачастую их можно найти бесплатно. И вместо того чтобы тратить пять лет на изучение не совсем профильных предметов (я с ужасом вспоминаю философию и ОБЖ), можно концентрированно получать именно те знания, которые точно пригодятся на практике.
Во Wrike мы, прежде всего, смотрим на навыки и самого кандидата, а не на то, что именно он закончил.
Сейчас есть разные типы программистов, которые делятся по направлению деятельности. Есть бэкенд, есть фронтенд. Есть мобильная разработка, но есть и те, кто работает с железяками. Везде разные требования.
Если у фронтенда идет упор на визуальную составляющую (User Experience), то, например, у бэкенд-разработчика задачи лежат совершенно в другой плоскости. Но если попробовать составить портрет среднего программиста, то он обладет этими качествами:
- Способность быстро усваивать информацию и развиваться профессионально. В нашей отрасли нельзя один раз что-то запомнить и потом пользоваться полученными знаниями до скончания века. Моргнешь, и все. То, что ты когда-то знал и умел, уже становится неактуально.
- Способность строить сложные системы и просчитывать последствия решений на много шагов вперед. Это как со строительством дома: если фундамент плохой, то чердак не устоит. Но в отличие от дома программисту приходится учитывать тот факт, что заказчик может захотеть маленький гараж, причем в сжатые сроки. А потом передумать и решить, что все же хочет шикарный особняк. Если ты делаешь какой-то программный продукт, то приходится просчитывать план действий на месяц, полгода и год вперед.
- Усидчивость. Для того чтобы усвоить много информации или придумать что-то непростое, приходится подолгу сидеть на одном месте и медитировать над клавиатурой и монитором. Я бы вообще сказал, что программисту полезно уметь мечтать. Как писатель думает: «На герое была коричневая потертая шляпа», а затем рождается целая история. Программист из одного предложения бизнеса должен развернуть целый мир. Хотя порой все сводится к шляпе.
- Интерес к своему делу. Профессия у нас творческая, из-под палки много не накодишь. Ну, то есть можно, конечно, но разве это жизнь…
- Позитивное отношение. Это совет не только к программистам, но к профессии в целом. О нас ходят разные легенды, что программисты, мол, асоциальны и угрюмы. Это не так, будьте веселее!
Специалист по развитию бизнеса (лидогенерации)
Чем занимается: Постоянно ищет потенциальных клиентов, которые подходят под конкретные нужды компании на разных интернет-площадках. Узнает о требованиях потенциальных клиентов, ведет с ними постоянную коммуникацию до передачи клиента менеджеру по продажам. Работает с CRM-системой, придумывает разные скрипты, анализирует рынки, на которых работает.
Типичный рабочий день: Поиск потенциальных клиентов в LinkedIn и на других платформах, работа с CRM системой, коммуникация с потенциальными клиентами и назначение звонков с ними, анализ рынков, помощь с маркетинг активностями
Кому подойдёт: Людям с активной жизненной позицией, умеющим аргументировать свои мысли и работать с большим потоком информации.
Что нужно знать специалисту по развитию бизнеса (лидогенерации) в IT:
- Азы лидогенерации
- Базовые представления о разработке
- Сильные стороны компании
- Особенности определенных рынков
Базовый уровень знаний для старта:
- Высокий уровень английского языка (Advanced и выше)
- Мотивация на работу в сфере развития бизнеса
- Нацеленность на результат
- Аналитический склад ума и внимательность
- Способность работать в режиме мультизадачности
- Навыки тайм-менеджмента
- Гибкость, умение адаптироваться к изменениям
Недостатки:
- Заработная плата во многом может зависеть от бонусной части
- Необходимость ежедневно обрабатывать тонны информации
Достоинства:
- Востребованность на рынке труда – талантливые специалисты такого профиля на вес золота
- Безграничные перспективы для самореализации и карьерного роста
Участие на хакатонах, конференциях, митапах
Я был удивлен, но многие люди даже в IT не знают что такое хакатоны. Хакатон — это IT соревнование между командами, обычно длится субботу-воскресенье. Хакатон — это возможность узнать что-то новое в IT, получить призы за участие или победу, познакомиться с разными людьми, а значит расширить свою сеть знакомств.
Зачем знакомиться с другими людьми ? Есть взаимосвязь между успешностью человека и количеством людей в сети знакомств этого человека. Смысл взаимосвязи следующий: если у Вас нет связей, то стать успешным практически невозможно. Если связей много, то любые проблемы решаются, а значит Вы достигаете необходимых целей.
Гипотетический пример |
Нет связей |
Множество связей |
Снять квартиру |
Платите агенству 50% от месячной платы и снимаете квартиру |
Кидаете клич среди знакомых и находится кто-то кто знает кого-то сдающего квартиру |
Решить новую сложную проблему на работе |
Тратите много часов на гугление |
Обращаетесь к знакомому, который является экспертом в данной области |
Найти новую работу |
Отправка резюме по вакансиям hh |
Шанс найти работу гораздо выше когда у Вас множество знакомств в IT |
Ребенка с кем-то оставить на выходные |
Никак |
Когда есть знакомые, то есть и возможные варианты |
Правило 5 — расширяем и поддерживаем сеть знакомств
Шаг 3. Пойми, какие виды языков программирования бывают
Python
Пожалуй, самый простой язык программирования из всего списка. Минимум служебных символов, динамическая типизация, максимально понятный синтаксис. И если ты мало что понял из прошлого предложения — это повод начать обучение именно с Python. Несмотря на визуальную простоту, этот язык — один из мощнейших. На нем одинаково легко работать как с текстом, так и строить нейронные сети.
Узнай, “Почему Python — это подходящий язык для новичков”
С
Универсальный язык программирования. Популярен у программистов, потому что сочетает в себе возможности языков программирования высокого и низкого уровней. Большинство программистов используют этот язык для серьезных разработок потому, что их привлекают свобода выражения мыслей, мобильность и чрезвычайная доступность этого языка.
С++
Крайне востребованный язык почти во всех областях программирования. К примеру, если ты планируешь работать с железом, то придётся изучить библиотеки для работы с конкретными устройствами и средствами отладки.
Java
Более двух десятков лет этот язык находится в списке самых востребованных, а это уже что-то значит. Сегодня он в основном ассоциируется с разработкой приложений для Android. При помощи Java ты можешь создавать графические виджеты для веба или писать десктопные приложения. Java — великолепный язык, чтобы полноценно понять программирование.
Java Script
JavaScript сейчас везде. Это один из самых быстроразвивающихся языков современности, и он очень быстро набирает популярность. JavaScript многофункционален, на нём можно разрабатывать программы для любых платформ. Изначально использовался для создания интерактивных веб-страниц, но сейчас на нём делают и серверные, и мобильные, и десктопные приложения, и многое другое.
Swift
Swift не вполне универсален: он еще не полностью вытеснил Objective-C из приложений для Apple, но перспективы у него блестящие. С помощью Swift вы можете создавать приложения для всех продуктов Apple: macOS, watchOS, iOS и любой новой системы, если она появится.
РНР
PHP — чемпион по популярности в веб-разработке. Его широко используют в создании серверных приложений, скриптов и утилит. Вы найдёте его в сайтах многих известных компаний, например Avito, Badoo, «ВКонтакте», Wikipedia, Facebook. Иногда приходится слышать, что PHP умирает или что это ужасный язык. Не верьте — это мнение устарело.
По версии HeadHunter, работодатели чаще всего ищут backend и fullstack разработчиков.
Ruby
Один из самых молодых языков программирования и входит в десятку самых используемых. Это возможно благодаря простому синтаксису и быстрому написанию программ. Язык удобен для разработчиков, с сильной абстракцией и использованием конструкций натурального или человеческого языка.
SQL
Язык программирования, предназначенный для облегчения получения конкретной информации из баз данных. Проще говоря, SQL — это язык баз данных.
GO
Язык программирования, который был разработан корпорацией Google. Часто его еще называют «Golang» – сокращение от «Google language». Мощный, изящный и современный язык программирования, по скорости
сравнимый с C и C++, а по простоте создания кода — с Python. Используется для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах.
C#
Если ты не определился с языком, значит еще не решил, что больше привлекает: веб, мобильные или десктопные приложения. Тогда твое решение — C#, универсальный инструмент для всех направлений разработки.
Как научиться программированию
Итак, вы определились с языком, теперь нужно придумать, как его выучить. А выучить его вам будет не так уж и сложно, как кажется на первый взгляд. У страха глаза велики. Нужно просто приложить усилия и потратить на обучение несколько месяцев. Это не так уж и много на самом деле. Специалисты уже подсчитали, что на изучение programming language нужно в среднем от 6 до 13 недель, если заниматься по 8 часов в день. Если предположить, что вы уже где-то работаете на полный рабочий день, и свободного времени у вас меньше, то это 2-6 месяцев.
Есть еще такая теория как «10,000 hours rule». Она гласит, что в любом ремесле можно стать профессионалом за 10 тысяч часов. Если поделить на 40 часов в неделю, то выйдет около пяти лет. Но это чтобы стать прям экспертом. А для первых серьезных проектов и первой работы достаточно, как мы уже сказали, от нескольких месяцев до полугода.
Где учиться?
- Книги. У нас в блоге выходила подборка лучших книг для изучения программирования. Рекомендуем к прочтению.
- Онлайн-курсы. В той же самой подборке о них тоже сказано несколько слов, но если вкратце, то можно заниматься в GeekBrains (рус), Яндекс Практикуме (рус), Codeacademy (англ), Coursera (в основном англ), Skillshare (в основном англ) и так далее.
- Видеоуроки на YouTube. Есть много хороших бесплатных курсов. В том числе записи уроков из платных видеокурсов прошлых лет — слитых или выложенных самими школами.
- Оффлайн школы и тренинги. Это самый дорогой способ научиться программированию, но самый эффективный. Под личным руководством наставника вам будет гораздо проще, ведь не придется задерживаться на одном месте.
Что общее у всего вышеперечисленного? Наличие практики. В хороших учебниках всегда есть разделы с практикой, на онлайн-курсах есть тренажеры или домашние задания. На ютубе вы можете сами попробовать написать программу по туториалу. А на тренингах вы именно этим и будете заниматься большую часть времени. Возможность написать что-то своими руками будет вас мотивировать. В идеале вы должны написать свою первую программу уже на первом, максимум на втором уроке.
Стоит ли поступать в университет, чтобы научиться программировать? Можно, но это вовсе не обязательно. Курс обучения в университете длится от четырех лет. За это время вы спокойно можете выучиться самостоятельно и получить несколько лет опыта. Поступать стоит в том случае, если вы планируете освоить сложную профессию по узкой специальности, и знаете, что в этом конкретном университете вас этому могут научить.
Какие сферы программирования бывают
На сегодняшний день существует множество направлений, которые подойдут новичкам для старта. Но есть несколько видов, которые не теряют свою востребованность на рынке, а специалисты всегда найдут работу по душе.
Разработка web-приложений
Это направление можно разделить на две специализации:
- Frontend. Больше подойдет для творческих людей с хорошим вкусом. Так как специалисты создают визуальную составляющую сайтов. Он отслеживает отображение сайта на различных платформах, мобильных устройствах.
- Backend. Специалисты разрабатывают алгоритмы, которые управляют страницами сайтов, функционалом. Отслеживают работу сайта в целом.
Разработка desktop-приложений
Специалисты создают программное обеспечение для различных операционных систем. Такие приложения знает каждый пользователь стационарного компьютера или ноутбука.
Например, для обработки фотографий, печати текстов, создания видео или аудио файлов нужны специальные программы, которые необходимо скачать из магазина приложений.
Разработка мобильных приложений
Создают приложения для смартфонов, планшетов, умных часов и других мобильных гаджетов. Для реализации идеи программисту необходимо креативить. Только уникальные идеи можно выпустить в тираж и монетизировать.
Самые популярные приложения: мобильные версии социальных сетей и банков, популярных мессенджеров, электронные книги, карты, переводчики.
Программирование встраиваемых систем
Разработка программ для различной бытовой техники, начиная от пылесоса и заканчивая навигаторами и электронными весами.
Системное программирование
Контроль работы серверов и программного обеспечения. В организациях с внутренней сетью такие обязанности выполняет сисадмин. Кроме этого специалисты могут создавать различные драйвера для операционных систем
Разработка игр
Специалисты работают над созданием игр для различных платформ. В небольших компаниях все задачи выполняет один программист.
В крупных компаниях над разработкой игр работает целая команда специалистов над узкими задачами: создание персонажей, проработка уровней.
Программирование для финансовых и бухгалтерских продуктов
Все предприятия и организации давно перешли на работу в программе «1С:Предприятие». Эта программа позволяет автоматизировать бухгалтерский, кадровый, управленческий учет. Благодаря ей все отчеты будут сформированы одним кликом мышки.
Некоторые фирмы используют различные варианты этой программы, например, «1С: Склад». Для работы над этой программой необходимы базовые знания по бухгалтерскому учету.
Программирование баз данных
Создание баз данных, способных сохранять огромное количество параметров. Например, базы данных пользователей в любой социальной сети, интернет-ресурса, организации.
Science
Это направление ближе всего к научным разработкам. Например, моделирование Большого Взрыва, структуры ДНК, нейронных связей.
Тестировщик (QA)
Чем занимается: Вручную или автоматизированно проверяет работоспособность и внешний вид IT-продуктов, находит ошибки в работе ПО, чтобы программисты впоследствии могли их устранить
Типичный рабочий день: Участие в командных летучках и митингах с клиентом; анализ требований; непосредственно тестирование; написание тестовой документации; поиск, анализ и проверка багов.
Кому подойдёт: Скрупулезным и усидчивым личностям, хорошим коммуникаторам, умеренным перфекционистам, которые в случае объективной необходимости смогут сказать твёрдое “нет” и отправить продукт вместо релиза на доработку.
Что нужно знать тестировщику в IT:
- Знать теоретические основы тестирования ПО
- Фундаментальные основы в программировании (например: что такое объект/класс/переменная; чем они отличаются; что такое IDE, её настройка; что такое компилятор).
- Знание ООП по любому из следующих языков: С#, Java, Python, JS
- Иметь общее представление о методологиях разработки ПО
- Понимать работу операционных систем, браузеров, инструментов Dev Tools, общих принципов работы интернета и ПО в целом
Базовый уровень знаний:
- Умение работать как индивидуально, так и в команде
- Умение создавать краткие отчеты, фокусируясь на деталях
- Знать английский на уровне Intermediate
Недостатки:
- Высокая ответственность за качество конечного продукта
- Некоторая монотонность, в работе не так много творчества
Достоинства:
- Спрос на тестировщиков всё ещё высок
- Отличное начало для тех, кто хочет в будущем заниматься продуктовой аналитикой или даже перейти на сторону разработчиков.
- Возможности развиваться внутри направления: стать тим лидом или сменить мануальное тестирование на автоматизированное (и наоборот)
Профессия IT №3. Администратор баз данных
Обязанности:
Если конкретно, то этот >IT специалист зачастую сам разрабатывает требования к базе данных, сам ее проектирует и в дальнейшем отвечает за эффективное использование и сопровождение базы. Кроме того, администратор управляет учётными записями пользователей и защищает их от несанкционированного доступа.Желательно иметь неплохой уровень технического английского.
Где работать
Базы данных есть во всех крупных организациях: от сетевых магазинов до банков и государственных структур. Между прочим, профессия входит в список ТОП-50 самых востребованных профессий по версии Минтруда России.
Сергей Шаров, CEO и сооснователь в ASOdesk.com
Мы с партнером по бизнесу закончили московский Физтех, факультет инноваций и высоких технологий. Кроме того, однозначно можем рекомендовать Университет ИТМО — кузницу победителей международных олимпиад, ВМК МГУ, НГУ, МГТУ им. Баумана, ВШЭ.
Для более детального изучения можно посмотреть мировые и локальные рейтинги, например, Times Higher Education по предмету «Computer Science» — особенно это актуально тем, кто ищет образование за рубежом.
Конкретные курсы я не смогу посоветовать, но, по мнению нашего CTO, все слишком зависит от направления и начального уровня программирования. Можно посмотреть то, что на слуху — Coursera, Code Academy, GeekBrains от Mail.ru и курсы от «Академии Яндекса».
Первый — оценка уровня необходимых знаний и умений в формате короткого тестирования. Второй — оценка личных целей и качеств человека для работы именно в нашей команде.
Мы проверяем, насколько он заинтересован в долгосрочной работе, нацелен ли на результат, и смотрим на его уровень ответственности и самостоятельности. Нам важен непосредственный опыт соискателя, его качества и мотивация к развитию, нежели «корочка», где написано, что человек — возможно — умеет.
В то же время мы отказывали кандидатам с непонятными для нас целями — не было уверенности, что человек проработает на одном месте больше года. Опять же, диплом или пройденные курсы не были аргументами в таких ситуациях.
Немного истории
Говоря о том, что такое программирование в современной трактовке, стоит обратить свой взгляд на историю его возникновения. По сути, автоматизированное выполнение каких-то определенных действий, например, в области математических вычислений, известно человечеству достаточно давно.
Вспомнить хотя бы Древнюю Грецию, в которой было использовано устройство с шестернями разной величины, позволявшее производить простейшие арифметические действия. Это был самый настоящий прототип современного калькулятора.
В 1206 году появился уникальный аппарат по отслеживанию так называемого метонова цикла, построенный Аль-Джазари, который использовал сложные на то время механизмы, основанные на зажимах и кулачках.
Только в 1804 году свет увидел жаккардовый ткацкий станок, который был способен воспроизводить узоры на тканях, созданные на основе перфокарт.
Но настоящим прорывом стало программируемое аналитическое устройство, разработанное Чарльзом Бэббиджем, которое, к сожалению, при его жизни так и не было построено.
Зато в 1846 году дочь Байрона создала первую в мире программу для аналитической машины, которая решила уравнение Бернулли. Конечно, алгоритмы программирования, которые применяла графиня Ада Августа Лавлейс, были весьма примитивными, но именно они заложили то самое зерно, которое было использовано при создании современных компьютерных программ. И именно ее считают во всем мире прародительницей программирования.
Как быть, если вам не хватает знаний до вакансии джуниор-программиста?
Осваивать большую часть навыков программирования нужно на практике. Во-первых, так вы поймете их быстрее и лучше. Во-вторых, работодателей интересует не то, сколько умных слов из мира программирования вы знаете наизусть, а как вы умеете свои знания применять. Значит, он спросит портфолио.
Начинать нарабатывать портфолио нужно еще во время учебы. В середине процесса или после первых двух третей начинайте искать себе стажировку. Стажировка — это почти полноценная работа начинающим программистом. Отличие в том, что стажировки обычно неоплачиваемые и занимают не полный день, а несколько часов.
Вот как устроена система стажировок в программировании: вы работаете на компанию, решаете базовые задачи в своей области без финансового вознаграждения. Взамен опытные коллеги учат вас и помогают разбираться в сложных вещах.
Такой подход ломает замкнутый круг «всем нужны работники с опытом, но где взять опыт, если никто не берет меня без опыта». Если вы хорошо покажите себя на стажировке, то есть шанс, что работодатель после окончания предложит вам остаться на полноценную работу начинающим программистом.
Если после окончания учебы и/или первой стажировки у вас все еще недостаточно навыков, чтобы получить работу джуниор-программиста, то пройдите еще одну стажировку.
Где искать стажировки: на тех же сайтах и площадках, на которых нужно искать работу.
Направления в ИТ
Если не вдаваться в детали, которые на старте не нужны, то всё ИТ можно разделить на 5 групп:
- Веб и интернет-технологии — самое простое для входа.
- Разработка программ для компьютеров и смартфонов — сложнее.
- Программирование роботов и умных устройств — увлекательно и несложно, но на старте малоприменимо к работе.
- ИИ и нейросети — сложно.
- Инфраструктура — сети, серверы, администрирование, тоже сложно.
Это — основные направления. Кроме них есть более узкие области, например криптография. Но для старта достаточно ориентироваться в пяти основных, а дальше вы уже сами поймёте, где вам будет интереснее.
Две последние для новичка недоступны, поэтому разберём первые три.
Выбор языка программирования для изучения в 2021 году
Новички, желающие сделать карьеру программиста с хорошим заработком, часто задают вопрос о том, какой язык лучше выбрать для обучения. Это не точная постановка вопроса. Правильнее спросить: «С какого языка лучше начать обучение программированию?» Ведь для того, чтобы считаться программистом и пытаться найти престижную, высокооплачиваемую работу, необходимо хорошее знание сразу нескольких языков.
Такие требования в современных реалиях предъявляют HR-менеджеры даже к претендентам на должность Junior-разработчика. Наличие высшего профильного образования тоже идет в зачет — это наилучший вариант старта карьеры востребованного специалиста в области программирования.
Но если у вас нет возможности потратить от 4 до 6 лет на университетское образование, зато есть способности и огромное желание реализовать себя в этой сфере, можно пройти обучение на курсах или заняться самообразованием, благо в интернете много доступной информации и обучающих роликов.
В конце концов, главным критерием при устройстве на работу является не наличие диплома, а реальные знания, навыки и опыт участия в создании программных продуктов. Если у вас есть что продемонстрировать будущему работодателю — двери в мир профессионального программирования для вас открыты.
Алгоритм для выбора первого языка начинающему программисту
- Определитесь, в какой сфере программирования вы хотите работать. Это может быть веб-разработка, разработка приложений для мобильных устройств (при этом для айфонов и смартфонов используются разные языки), создание компьютерных игр (включая 3D-программирование) или серверные технологии (бэк-энд), высокоуровневое программирование.
- Узнайте, какие языки активно используются в выбранной вами сфере, являются наиболее популярными.
- Выберите для изучения самый легкий из этих языков, который можно быстро выучить, а затем переходите к более сложным.
В программировании определяющим навыком является понимание принципов решения задач, на основании которых составляются алгоритмы. Выучить команды конкретного языка на этой базе несложно. Поэтому первый язык должен иметь, наглядный, читаемый синтаксис — для лучшего понимания структуры алгоритма.
Направление веб-разработки является самым популярным на сегодняшний день. Это хороший выбор для начинающего программиста. Для изучения эти языки считаются одними из самых простых.
Среди языков, необходимых для веб-разработки, самые необходимые:
- Python;
- PHP;
- Ruby;
- JavaScript.
Помимо этого, веб-разработчики должны знать язык гипертекстовой разметки HTML и уметь работать с каскадными таблицами CSS.
Начинать учить их надо в следующем порядке от легких к более сложным:
- HTML.
- CSS.
- Python.
- JavaScript.
Остальные направления разработок не так легки в изучении для новичков, но могут принести хороший заработок.
Для разработки мобильных приложений требуется знание языка Java (для андроида), а также Objective-C, Swift, C# (для айфона).
Для создания компьютерных игр надо хорошо знать языки C и C++ (а также владеть основами компьютерной графики).
Для работ с внутренним содержанием систем, с программной логикой и архитектурой необходимо знание языков C++, Java, PHP, Python.
Специалисты в области Data Science работают с Python.
Высокоуровневые программисты отлично владеют языками C, C++ и Java, а также многими другими.
Можно ли самому научиться программированию?
Вопросы, связанные с самостоятельным обучением, напрямую зависят от того, чему именно хочется научиться. Литература в виде книг «Программирование для чайников» дает лишь частичные ответы без конкретизации основных аспектов с учетом применения того или иного языка. Это, так сказать, для общего понимания. Курсы программирования – тоже вопрос спорный, ведь в данном случае все зависит не только от восприятия обучаемым, но и от того, какими знаниями обладает преподаватель, как он подает материал и т.д. Но если уж возникла необходимость изучения какого-то определенного языка или метода программирования, в наш век интернета проблемой это не является. Можно найти даже онлайн-курсы или подробное описание уроков по той же платформе Java, программированию Android- или iOS-устройств.
Самообучение
Путь самоучки — это «метод тыка», общение на форумах, поиск единомышленников, хождение по конференциям и тусовкам-митапам. Это такой путь самурая. Путь подходит не каждому. Поэтому для широких масс выпустили кучу самоучителей — тысячи книг, похожих друг на друга как близнецы.
Raysonho, CC0 Public Domain
Самоучитель хорош тем, что быстро погружает в тему. Вы начнете кодить практически в тот день, когда открыли книжку. Но, как говорит преподаватель Джеймс Коппел из Массачусетского технологического института, есть одна проблема: эти книги ничему не учат. Главное там — длинные листинги кода, которые читатель должен воспроизвести.
Краткие итоги
Что такое программирование в общих чертах, думается, уже понятно любому человеку. Здесь, правда, были затронуты только общие вопросы без конкретики использования каждого языка, средств написания приложений или сопутствующих программных модулей, интерпретации или трансляции команд, равно как и то, каким образом все это выполняется на уровне процессора, оперативной памяти или операционной системы. Все это достаточно сложно для понимания, а неподготовленному человеку вникнуть в суть всех этих процессов будет не так уж и просто. Тем не менее при желании и достаточно высокой степени мотивации изучить любой язык можно, а в дальнейшем стать высококлассным программистом.