Как стать программистом

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

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

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

И основная проблема здесь заключается в том,  что у ученика не формируются практики, позволяющие выполнять вполне определенные операции, связанные с планированием действий в неопределенном будущем. Любой ребенок способен рассказать последовательность действий, какую он видел раньше, и последовательность действий, которую он планирует развернуть прямо сейчас, глядя на доступные ему предметы этой деятельности. Он может рассказать план того, как он сходит за хлебом прямо сейчас. Но если попросить какого-нибудь ребенка, чтобы он внятно рассказал, как сходить за хлебом завтра, то это уже сложно. Ему надо будет перенестись мозгом в будущее и в будущем начинать разворачивать какой-то план, план будущего в будущем. Дети тут застывают после первого действия – там же последовательность: одеться, узнать у мамы, чего нужно взять, проконтролировать достаточность денег, выйти из дома, пойти потом направо или налево, и всё это должно быть развёрнуто в будущем.

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

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

Но планирование это только часть необходимых умений. Умение думать системно, говорить понятно, четко мыслить и выражать мысли, понимать, о чем вы говорите, строить надежные рассуждения, понятно описывать процессы, явления и структуру мира, извлекать и структурировать информацию, полученную от собеседника. Эти умения  важны для коммуникациий в современном мире, при общении с людьми.  Но эти умения важны и для программиста, который обзается с машиной. И общается уже не только с помощью текста. Алиса, Сири и другие говорящие ассистенты уже с нами.  Пора учиться структурировать свои мозги!