Ваш ребенок интересуется компьютерными науками и мечтает стать программистом? Хотите помочь ему развиваться в этом направлении и ищете дельные советы? Три молодых и успешных ИT-специалиста рассказали нам, с чего они начинали.
Андрей Ткачук, 24 года
PhD-студент Института компьютерных наук Тартуского университета, Эстония. Исследует сферу искусственного интеллекта и обработки естественного языка. Имя изменено в связи со спецификой работы.
В школе я углубленно изучал точные науки. Это было хорошим стартом, но не думаю, что это обязательно для всех. Работаю в исследовательской сфере, и полученные в университете навыки программирования очень помогают. Учился в КПИ им. Игоря Сикорского по специальности «Программная инженерия». Немного помогает математика, которая была на первых курсах.
Не думаю, что без высшего образования по специальности невозможно освоить направление ИТ. Но для этого нужно приложить усилия. У меня есть друг, который с педагогическим образованием пытался изучить Front-end программирование за максимально короткое время. Успеха он не достиг, но только из-за недостаточной настойчивости.
Для старта в ИТ есть рабочая схема, проверенная мной. Советую бесплатную учебную платформу — Prometheus. Там есть курсы по программированию входного уровня. Они подойдут для учеников средней и старшей школы. Параллельно стоит прилагать значительные усилия для изучения английского языка. Чтобы впоследствии перейти на иностранные ресурсы с серьезным уровнем. Например: Udacity, Coursera, edX. Все эти курсы — бесплатные. А вот платные не советую, они обычно хуже по качеству обучения. Вся нужная информация есть в свободном доступе в интернете.
После нескольких таких курсов очень растет уровень английского языка и технических знаний. В такой синергии они дают хороший результат.
Если онлайн-курсы перестали быть интересны — ищите на YouTube лекции от преподавателей Стэнфордского или Оксфордского университета. Они есть в открытом доступе. Выпускники школ, которые начали развиваться в ИТ со средних классов, приходят в университет настолько сильными, что некоторые студенты старших курсов не дотягивают до их уровня. Чем раньше начать, тем лучше.
Если получается хорошо решать логические задачи, советую попробовать олимпиадное программирование. Это не так сложно, как кажется. Например, на сайтах HackerRank или topcoder есть задачи с элементами реального программирования. Очень много олимпиадных программистов, которых я знаю, сейчас работают в Штатах или Канаде.
Мне нравится мой вид деятельности тем, что навыки, которыми я владею сейчас, сочетаются, и я понимаю, что это хорошее применение моего потенциала. Моя специализация — искусственный интеллект — это новая электрика (new electricity). Он реформирует другие сферы и создает что-то новое. Приход искусственного интеллекта — это третья индустриальная революция после электроэнергии и компьютеров. И поэтому классно, когда знаешь технологию и можешь с ее помощью делать что-то значимое. Я чувствую себя человеком, который имеет отношение к тем, кто действительно творит будущее. На определенном уровне я двигаю прогресс.
Александр Юрчук, 24 года
Embedded Developer, Network Engineer, разработчик программного обеспечения для сетевых устройств.
Программистом решил стать, когда мне было 4 года. Тогда мама брала меня к себе на работу, где я познакомился с компьютерными играми. Компьютер как устройство меня очень впечатлил. Мама работала программистом, и именно тогда я уже решил, что тоже хочу работать с компьютерами. Потом очень много времени изучал их. А в старших классах это увлечение в сочетании с талантом к математике привело меня к информатике и программированию.
На работе мне часто приходится применять университетские знания, особенно из курса «Компьютерные сети». Учился в КНУ им. Тараса Шевченко по специальности «Программная инженерия». Тем не менее, было много дисциплин, которые очень устарели или оказались непрактичными. А физико-математический лицей дал фундамент понимания точных наук. Когда любишь свое дело, учиться самостоятельно очень легко. Получив минимальные базовые знания, мозг сам начнет чем-то интересоваться. А дальше просто гуглишь это. Так я писал свои первые игры и программы автоматизации работы с компьютером.
Потом уже, когда возникает потребность в более глубоких знаниях, находишь книги, статьи. Стартовой точкой для поиска информации может быть Википедия. Для меня хорошим способом развития навыков является прохождение тестов. По языкам программирования они есть на Quizful. Таким образом просто определяешь, каких знаний не хватает.
Конечно, самым эффективным обучение было уже на работе. Там все задачи вполне реальные. Вообще есть такая простая и эффективная методика у программистов — ABC — аlways be coding, то есть кодируй постоянно. Если ее придерживаться, мозг сам адаптируется под условия, и вопросов «что учить?» и «где это взять?» вообще не возникает.
Тем, кто только начинает интересоваться IT, советую смотреть не только в направлении программирования, а мыслить шире. Многие люди достаточно поздно открывают для себя, что им гораздо ближе по духу тестирование, дизайн, администрирование. Программирование — это мейнстрим, многие идут сюда из-за тренда, а затем обнаруживают это для себя неинтересным.
Я бы еще посоветовал находить больше друзей по интересам. О существовании каких-то вещей узнаешь больше, если общаешься с единомышленниками. Много интересных вещей я не открыл для себя в школьном возрасте только потому, что даже не подозревал об их существовании.
Еще один совет — проверять все на практике, больше работать с чужим кодом, почувствовать все своими руками. Когда программируешь что-то сам, любую технологию значительно лучше понимаешь, чем из теоретических сведений о ней. Ну и, конечно, как можно раньше начать работать. Фриланс, стажировки или опыт работы в открытых проектах (open-source) — практика очень быстро даст понимание того, зачем это все, а также поможет определиться с направлением развития.
Если вы все-таки выбрали программирование — попробуйте как можно больше языков из разных парадигм. Это даст более широкое понимание программирования в целом и позволит определить, какое направление вам подходит больше. Многие зацикливаются на «академических» C/C ++ и даже не догадываются, что существуют также скриптовые, функциональные языки.
А начинать лучше с языка Python. По моему мнению, он является наиболее простым для изучения, поскольку помогает минимальными усилиями решать достаточно широкий спектр задач и не отвлекает новичка на тонкости. После этого можно изучить JavaScript, SQL, Java, Shell (bash), C. Также стоит знакомиться с различными операционными системами: Windows, Linux, macOS.
Больше всего я люблю свою работу за прогрессивность. Так уж получилось, что ИT очень быстро внедряет новые эффективные взгляды на работу в целом. Дело в том, что большинство технологий могут быть внедрены в любом направлении профессиональной деятельности. Но почему-то руководители этого не делают.
Александра Смелянская, 23 года
Project manager, координатор проекта по обработке медицинских данных. До этого 4 года занималась разработкой на Java.
Когда я была в 8-м классе, мама нашла для меня курсы юного менеджера, где среди других предметов были экономика и информатика. Если на первом курсе мы разбирали стандартные программы, то на втором у нас уже было программирование. И мне так понравилось, что я потом в школе все лабораторные делала за одноклассников.
Мама отправила меня на курсы, чтобы я, выбирая профессию, точно знала, куда двигаюсь. Уже тогда я решила, что хочу быть программистом. Прежде чем выбрать профессию, стоит попробовать в нее окунуться.
Высшее образование я получала по специальности «Программная инженерия» в КНУ им. Тараса Шевченко. Университетская программа полностью не покрывала потребности в том, что мне нужно. Но дала общие понятия. От них я отталкивалась и дальше развивалась самостоятельно.
Читала книги, которые являются так называемыми библиями в сфере программирования. Например, Introduction to Algorithms, The Pragmatic Programmer (D.Thomas & A.Gant), Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four), Peopleware: Productive Projects and Teams (T. Demarko).
Их на самом деле может читать каждый, независимо от специализации. Также есть хорошая книга Joel on Software. Там очень общие темы. Я советую выборку: какой язык программирования следует изучать первым; что необходимо знать о UTF-8; зачем программисту понимать алгоритмы и структуры данных.
Еще я себе завела Twitter для того, чтобы следить за техническими новостями. Подписалась на опинион лидеров в ИТ, они часто репостят статьи разных сайтов. Например, Evgeny Borisov, Andrii Rodionov, Jarek Ratajski. То есть это не блог одного человека, а информация из разных источников — по интересам можно что-то для себя выбирать.
Для тех, кто только начинает интересоваться ИТ и не знает, с чего стартовать, советую сайт CodeCombat. На нем в игровой форме можно научиться основам программирования. Это вроде как просто игрушка: ты пишешь код, и когда он работает, персонажи как-то взаимодействуют. Это интерактивно и совсем не сложно. Но дает абсолютно реальные навыки, необходимые в программировании.
Кроме того, есть крутая штука — подкаст. Это когда собираются несколько человек, у которых одинаковый профиль, и они час или два обсуждают какие-то темы. Записывают это и выкладывают в интернет. Подкасты разные: от технических вещей до трендов и новостей в ИТ. Это хороший способ понимать, что сейчас актуально и в какую сторону смотреть.
Но самое важное — это практика. Хорошо, когда ты можешь вычитать что-то, но лучше, когда сразу делаешь попытки повторить это самостоятельно.