Зачем разработчику Computer Science — и почему мы добавили её в курсы Практикума. computer science.. computer science. it-образование.. computer science. it-образование. Блог компании Яндекс Практикум.. computer science. it-образование. Блог компании Яндекс Практикум. информационные технологии.. computer science. it-образование. Блог компании Яндекс Практикум. информационные технологии. Карьера в IT-индустрии.. computer science. it-образование. Блог компании Яндекс Практикум. информационные технологии. Карьера в IT-индустрии. образование.. computer science. it-образование. Блог компании Яндекс Практикум. информационные технологии. Карьера в IT-индустрии. образование. образование в it.. computer science. it-образование. Блог компании Яндекс Практикум. информационные технологии. Карьера в IT-индустрии. образование. образование в it. Программирование.. computer science. it-образование. Блог компании Яндекс Практикум. информационные технологии. Карьера в IT-индустрии. образование. образование в it. Программирование. Учебный процесс в IT.

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

Хабр, привет! Меня зовут Александр Скугарев, я работаю продуктовым лидом в Яндекс Практикуме. В этом тексте я вместе с главным экспертом модуля Александром Головко расскажу, зачем разработчикам нужна Computer Science и как мы работаем с этой областью знаний в курсах Практикума.

Что такое Computer Science

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

В западной академической и инженерной культуре Computer Science — это не «наука о компьютерном железе», как можно было бы подумать из дословного перевода, и даже не «обучение программированию». Это область знаний, которая изучает вычисления как явление — отвечает, какие задачи можно решать с помощью вычислений, какими способами это делается, как представлять данные, как управлять процессами и как всё это масштабируется. Слово computer здесь имеет историческое значение, ведь изначально так называли не устройство, а процесс вычисления или даже человека, который этими вычислениями занимается. Поэтому Computer Science — это скорее «наука о вычислениях», а не о компьютерах как объектах.

Computer Science — это фундаментальная наука о вычислениях и обработке информации, которая изучает, как эффективно решать задачи с помощью алгоритмов и вычислительных систем.

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

Теперь в курсах Практикума начинаем обучать Computer Science с азов

Теперь в курсах Практикума начинаем обучать Computer Science с азов

Другими словами, Computer Science становится фундаментом, например, для прикладного программирования. То есть она не рассказывает, как писать код, но зато отвечает на ряд вопросов более глубокого уровня:

  • что вообще можно вычислить и какими способами;

  • что значит «решить задачу алгоритмически»;

  • как представлять данные, чтобы работа с ними была удобной и эффективной;

  • как разбивать сложные задачи на управляемые части;

  • как данные представляются внутри программ и почему это важно;

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

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

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

Как Computer Science упрощает жизнь и двигает карьеру разработчика

Представим ситуацию: есть два разработчика — один владеет Computer Science, а другой нет, но при этом у них одинаковый стек, опыт и задачи. Для начала надо подчеркнуть, что разница этих специалистов будет не в том, что один знает больше, а другой меньше. Скорее, они будут думать о проблеме и её решении по-разному. 

Можно предположить, что разработчик без знания Computer Science будет решать задачу «в лоб»: добавлять условия, циклы и костыли, пока не заработает. В то время как другой сначала подумает о данных, потоке выполнения, границах задачи, о том, как решение поведёт себя через полгода. А потом сможет описать и презентовать решение другим, приоритизировать свои задачи, выполнить и задокументировать работу. Формально оба будут использовать один язык программирования, фреймворк и базу данных, но качество решений будет разное.

Модуль Computer Science в курсах Практикума делится на три блока с возрастающим уровнем сложности: «Введение», «База» и «Мышление». Это содержание «Базы»

Модуль Computer Science в курсах Практикума делится на три блока с возрастающим уровнем сложности: «Введение», «База» и «Мышление». Это содержание «Базы»

Другими словами, знание Computer Science:

  • снижает количество случайных решений;

  • позволяет быстрее понимать, почему система ведёт себя так, а не иначе;

  • формирует язык для общения внутри команды (обсуждать не на уровне «мне кажется», а на уровне «алгоритм ведёт себя так-то»);

  • помогает осознанно, а не интуитивно выбирать компромиссы между простотой, производительностью и поддерживаемостью.

Отдельное внимание Computer Science полезно уделить при входе в профессию. Стандартный подход — начинать сразу с практики: языка, синтаксиса, фреймворка. Это даёт быстрый результат, но мешает в будущем — довольно скоро у новичка может возникнуть ощущение потолка. Код будет выполняться «как повезёт», сложные и комплексные решения начнут работать с ошибками, которые будут казаться случайными, поведение программ станет непредсказуемым. Чем дальше, тем больше происходящее в коде будет казаться магией.

Computer Science рассеивает эту магию — именно она объясняет новичку, почему алгоритм выполняется именно так, откуда берутся бесконечные циклы и утечки памяти, а также в чём разница между «работает» и «хорошо работает».

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

Откуда у разработчиков берётся знание Computer Science

Как говорилось выше, в России нет прямого аналога Computer Science. Во многом потому, что исторически у нас эти знания были распределены по разным дисциплинам — что-то в математике, что-то в курсах по архитектуре ЭВМ и операционным системам, что-то в инженерных специальностях.

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

В модуле Сomputer Science мы показываем связь знаний с реальными и понятными задачами из жизни

В модуле Сomputer Science мы показываем связь знаний с реальными и понятными задачами из жизни

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

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

Как Computer Science представлена в курсах Практикума

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

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

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

Фрагмент из «Введения в Computer Science»

Фрагмент из «Введения в Computer Science»

Вводя новый модуль, для нас было важно сохранить практическую направленность курсов и разумные сроки обучения. То есть мы не планировали заменить университет и дать «полный фундамент за несколько недель». Вместо этого мы хотели дать базовые ориентиры — рассказать, как код, который пишет разработчик, реально исполняется на устройстве; почему одно и то же задание можно решить по-разному и получить принципиально разное поведение при росте нагрузки; где проходит граница между просто работающим кодом и инженерным решением. Главное для нас — это не исчерпывающее образование по Computer Science, а крепкая база, которая поможет человеку быстрее и глубже понимать то, с чем он столкнётся в практике.

Результатом нашей работы стал модуль Computer Science в курсах IT-профессий. Мы разделили его на три блока с возрастающим уровнем сложности: «Введение в Computer Science», «База» и «Мышление». Вместе они охватывают фундаментальные аспекты информатики: от устройства компьютера, данных и операционных систем до работы сетей, алгоритмов, а также развития инженерного мышления, включая системный анализ, визуализацию и Agile-практики.

Содержание блока «Мышление» — самого сложного в модуле

Содержание блока «Мышление» — самого сложного в модуле

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

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

Доступ к материалам модуля получат как новые студенты, так и выпускники предыдущих потоков.


Модуль Computer Science уже доступен в курсах Яндекс Практикума по программированию для начинающих. Почти в каждом есть бесплатная вводная часть — можно начать учиться, не привязывая карту. А если вы ещё не определились с направлением, начните с бесплатного курса «Какую профессию в программировании выбрать», на котором вы узнаете, какие профессии есть в разработке и какая из них вам ближе.

Автор: aleksskug

Источник

Rambler's Top100