Учим программировать качественно
Онлайн. С нуля. Как следует.
Есть две вещи, которые нельзя атаковать в лоб: невежество и ограниченность. Их можно пошатнуть только простым развитием противоположных качеств.— Лорд Эктон (1834–1902)
Набор на обучение окончен
Сейчас мы в последний раз проводим по одному уикенду Boot Camp, чтобы доучить студентов, прервавших обучение в феврале 2022 года. Больше наборов не планируется.
Что такое качество?
Надежность, эффективность, безопасность и ремонтопригодность программного обеспечения.
Такие четыре основные желательные характеристики определяет консорциум CISQ для имеющих практическую ценность программных продуктов.
Выбор языка программирования и сопутствующих инструментов влияет на эти характеристики, задавая некоторые рамки разработчику. Однако, это не единственный фактор.
В защищенную розетку можно вставить оголенные провода. До соседнего дома может быть быстрее дойти пешком, чем доехать на гоночном автомобиле (особенно по некоторым дорогам). Так и качество итоговых IT-продуктов формируется не только характеристиками использованных инструментов.
Поэтому, к примеру, выбрав Java для серверной разработки, вы не начнете автоматически и безусловно создавать более надежные и безопасные приложения чем на C++. Как бы это ни пытались внушить некоторые корпоративные маркетологи.
Некоторые аспекты качественного программирования выходят за рамки отдельных языков и фреймворков, а потому их трудно усвоить, загоняя себя в рамки только одного инструмента.
Так, безопасность веб-приложений актуальна и разработчику на PHP, и на Python, и на той же Java. Концепция и опасность SQL-инъекций (разновидность уязвимости при работе с базами данных) не меняется от того, работаете вы с PostgreSQL на сервере или с SQLite в мобильном телефоне.
Как не меняется при смене фреймворка и «тормознутость» приложения с плохо спроектированной моделью данных, которая требует избыточные операции для работы с ней. А все потому что погро программист «учил PHP с MySQL» или «слушал курсы Java», а не интересовался вопросами проектирования баз данных и алгоритмической сложности.
Наш подход
В первой части обучения вам придется выполнять задачи как минимум на четырех разных языках программирования, вне зависимости от ваших предпочтений. Потому что эта область знаний слишком широка, чтобы пытаться овладеть ею в рамках одного языка.
Только разностороннее рассмотрение позволяет отделить абстрактные явления (принципы) от конкретных реализаций (инструментов).
Мы готовим полноценных разработчиков, которые не побоятся работать с новой технологией или языком программирования.
У наших выпускников не загорится стул от идеи применения другого языка, фреймворка или прочих инструментов… разве только от качества этих инструментов в процессе применения. (;
Хотите курсы C++/Java/PHP/Python/…?
Это не к нам. «Курсы программирования на языке X» мы не проводим. Да и вообще, внезапно, мы не проводим курсы, в типичном понимании этого слова: обычно основная задача курсов — передача информации. Мы же считаем такой формат занятий скучным и непродуктивным, так как большинство информации уже и так бесплатно есть в Интернете.
Поэтому долгих рассказов у нас не будет — вы будете думать, делать, наблюдать, делать, получать обратную связь и снова думать и делать. Мощные статьи читать вы будете дома. Наша цель — активная тренировка практических навыков. Такой вид обучения называется, как ни странно, тренинг. Что это значит? А это значит, что придется работать, а не «слушать курс» с умным видом в ожидании чуда.
Однако, любителям более типичного подхода не стоит огорчаться. Существует множество заведений, которые подкрепляют типичным подходом типичные результаты. За последние 15 лет открывать курсы программирования стало так же модно, как когда-то ларьки с мобильными телефонами.
Если же хотите выработать фундаментальное понимание и научиться программировать как следует — добро пожаловать! Только учтите, что быстро и легко это не получится.
Первое занятие
Суть занятия сводится к тому, чтобы отсеять неподходящих кандидатов.
Как показывает опыт, далеко не всем подходит наше обучение, и внезапно, нам тоже подходят не все. Пообщаемся, дадим вам несколько задач и выясним, туда ли вы попали.
Собственно, обучение
Мы не проводим курсы ландшафтного дизайна, избавления от финансового рабства и прочие увеселительные мероприятия. Мы обучаем исключительно программированию. У нас своё собственное мнение на счет качества кода и подхода к обучению. У нас нет индивидуальных графиков занятий.
У вас будут тонны практики и не очень любезная, но постоянная критика вашей работы. Мы будем называть вещи своими именами. Если вы пишете говно — мы будем так и говорить, даже если вы придерживаетесь альтернативной точки зрения.
Мы будем заставлять вас думать головой и самостоятельно находить ответы на вопросы. Потому что когда вы пойдете работать, вам понадобится именно это умение, а не набор заученных решений. Мы будем придираться к каждому пробелу, названию идентификатора и строке кода, и от этого у вас будет дискомфорт.
Многих такой подход не устраивает. Что поделать, мы не заинтересованы в том, чтобы всем посетителям сайта нравился процесс обучения. Мы заинтересованы в том, чтобы всем прошедшим обучение нравился результат.