Комментарии 25
"заниматься авторством" -- гм... Грамотно было бы сказать "являются авторами, создают контент".
Этапы формирования навыков программирования, которые я наблюдал раза 3 (шаги примерно такого уровня, но у всех разные):
Может собрать алгоритм на скретче, но не особо инетерсуется.
Посмотрел 30 минутное видео про питон. За три дня поднял графическую библиотеку и написал годную игру. Не использовал никаких готовых решений, код ужасен и запутан невероятно, все дублируется что можно, все называется непостижимо, но код работает и понятен автору.
Периодически собирает из кусков своей первой игры новые странные игры. в которых непонятные создания ползают по экрану, множаться.
"Папа, хочу сделать сетевую игру" - "есть такая хрень как сокеты". На завтра уже все работает.
Приходит с вопросами зачем нужны классы и функции. Пытается использовать, в основном крайне неудачно и не по назначению.
Приходит к отцу с вопросом: "мои игры слишком медленные, хочу переписать их на c++". Отец - та ты только графику там подымать умрешь. За неделю подымает графику. Не пытается изучать язык, приходит с вопросом - зачем звездочка и крючки? Получает ответы, типа "у компа есть память, она с адресами, в памяти есть стек и куча, ", этого оказывается достатоыно, переписывает свои программы на работоспособный c++. Не пытается ничего читать, экспериментирет чтобы понять что происходит. Код по прежнему ужасен абсолютно, но работает.
Хочет написать бота на майнкрафт. Посмотрел в ютубе, что это можно сделать на node js. Приходит с вопросами чего за хрень js, пакетные менеджеры и прочее. Пишет бота за пару дней, все работает.
Собирается с друзьями поучаствовать в хакатоне по написанию игр (всем примерно по 16 лет). Спешно за ночь изучают юнити, гит, с#. Начинают говорить "запушить" и прочее. За две недели собирают игру, занимают N-е место.
Начинает задаваться вопросом - как не утонуть в сложном коде. Схватывает идеи построения архитектуры. Смотрит базы, фронт. В целом почти готовый девелопер (примерно 18 лет).
Большая пауза (несколько лет). Игры писать больше не интересно, деньги зарабатывать еще рано. Когда приходит время зарабатывать деньги, содится готовиться к собесам. Или случайно попадает в коллектив где сразу надо работать.
Через примерно 2 года работы выходит синьорский уровень.
Что касается этапов, описанных в статье выше, то люди которые прошли эти этапы попадают на рынок и сталкиваются в прямой конкуренции с людьми, прошедшими описанные мной этапы. И тогда задаются вопросом "а оно мне было надо"?
Чтобы осваивать это всё так быстро, нужно ничем больше не интересоваться. Ни астрономией, ни биологией, ни физикой. Такие программисты потом теряются на вопросе, может ли коптер висеть в движущемся вагоне метро...
Вовсе нет. Этот список с списывал с моего сына, его другей, бывших коллег из прошлого. Каждый второй сын маминой подруги крутой программист, которого вы можете встретить прошел примерно такой путь. При этом они интересуются программированием меньше чем иной свитчер - кодят от случая к случаю и только для удовольствия, ничего вообще не пытаясь изучать специально.
Сегодняшние вуз-ы и шкоды войтишников не сильно афишируют тот факт, что их учили несколько лет играть на рояле одним пальцем, а на рынке полно мацартов, играющих что угодно чем угодно через три дня подготовки. Конкурировать с нимм можно только до тех пор пока рынок раздувается и берет вообще всех. При настоящей конкуренции шансов никиких.
Я сам не сильно крутой программист и могу испытывать проблемы в поиске работы. Но даже я 30 лет назад не помню момента когда научился программировать. Просто c 6 по 11 класс для развлечения (тогда мало кто думал что программирование - это профессия) читал одну страницу руководства по ассемблеру/паскалю/бейсику/c++ и так далее и сразу писал что мне нужно было. Если человеку нужно учиться программировать это значит он столкнется с кучей таких которым учиться не нужно было совсем.
Этот список с списывал с моего сына, его другей, бывших коллег из прошлого.
Урежьте осетра примерно втрое. Я тоже полагаю, что кто сам не способен изучить язык по книжке, тому в отрасли не светит. Но темпы освоения Вы написали нереалистичные для человека, имеющего, помимо программирования, другие хобби.
Да, я видел людей, которые говорили: "У меня есть другие хобби, я занимаюсь ещё математикой". И они как программисты - несоизмеримо выше меня. Но шаг вправо-влево из отрасли - и они тупят даже в элементарщине (как пресловутый вертолёт).
Конкурировать с нимм можно только до тех пор пока рынок раздувается и берет вообще всех.
Рынок УЖЕ вырос настолько, что "моцартов" не хватает.
Со всеми профессиями когда-то так было.
между пунктами 1 и 2 у вас наверняка должно быть что-то. ну вот не поверю, что годное что-то получится после скетча (это та детская штука, где из блоков примитивные алгоритмы учат, верно?) и 30 минут ролика про питона (серьёзно?). за всем вышеописанным должно стоять ещё что-то, кмк.
Что именно там должно быть между? Концепции переменных, массивов, выражений, присваивания, цикла и условного оператора? Это вещи до которых в современном мире можно догадаться самому даже если никогда непосредственно о них не слышал. Мое поколение в 80-х все как-то догадывались до этих вещей получив в руки игровой компьютер без интернета, курсов и доступных книг, в мире где электрический выключатель был самым сложным логическим элементом. Что стоит до этого догадаться ребенку который тыкает в планшет с 2-х лет и ставит моды на майнкрафт?
что именно? теоретическая подготовка и практика. как раз эти концепции, плюс связь с синтаксисом языка и требуют времени и упорных стараний по изучению. как вы это сделаете - не важно. но тем не менее это весомый пласт работы.
Нет. Это не пласт работы. Это самоочевидные вещи, как например концепция подсчета предметов, про которую никто не помнит когда он усвоил. Так это работает для любого действительно хорошего программиста. Те кто хочет быть программистом должен об этом знать, чтобы потом не было миллиона разочаровавшихся безработных, когда пузырь в очередной раз лопнет.
Я никогда не сяду учить ноты, в надежде срубить денег играя сольные концерты Рахманинова. Но по определенным причиам в программировании это пока стало нормой.
вы просто забыли сколько времени это понимание занимает. человеку свойственно забывать такие вещи :) вснм кажется, что они такие умные стали вот прям сразу. за последние 15 лет мне пришлось обучить десятки людей разных возрастов и уровней от пре-джун до мидл, а так же детей. и расстояние между вашими пунктами 1 и 2 довольно большое и трудозатратное у всех. ну и 30минутный ролик естественно не сделает погоды, вообще смешно
Ключевое слово "вам пришлось обучить". Если человек нужндается чтобы его учили, это уже не тот контингент. Если уже в детали, то первыми программами моего сына на питоне были клеточный автомат, разложение в ряд фурье потрета бабушки и собвтвенный 3d движок. Он пришел ко мне с вопросами - что такое интеграл (объяснил на пальцах, этого хватило), как работает тригонометрия (в школе до нее еще не дошел) и как организовать хранение слабозаполненной матрицы. Я смотрел но не увидел момента когда он освоил совственно сам питон. Как думаете почему? Потому что это слишком просто чтобы этому учиться.
Но вообще здесь дело не в уровне интеллекта а в его направленности. У множества людей достаточно математической креативности, чтобы изобрести программирование с нуля как это сделал Тюринг и прочие когда-то. Поэтому им не нужно обучаться. Не нужно изучать то до чего можно догадаться.
да, да, да. сказки венского леса. вы стыдливо умалчиваете сколько времени и усилий ушло на то, чтобы дойти до тех программ, что вы описываете. это раз. а два - я даю 100 к одному, что то, что ваш сынишка написал говнокод, который сложно поддерживать, который одноразовый и через месяц он сам не будет помнить что и как работает. вы по-любому науськивали его по математике и без вашего активнейшего участия не обошлось.
Говнокод - это не то слово. Я вообще не могу понять как можно такое заставить работать. Это выглядело как гуление ребенка, которое появляется перед настоящей речью, но только в программировании. По математике, да, науськивал. Например он спросил что такое комплексные числа, я сказал "число с углом", спросил что такое интеграл, я сказал "площадь под графиком". Этого хватило. Он не один такой. Его друг спросил у меня классе в 4-м что такое корень. Я сказал "умножение само на себя, но в обратную сторону" он ухватил. Этот тоже программирует, но немного подругому - тянет решения на все случаи жизни из интернета и слепливает вместе (ему 16).
и да. опять же, допускаю, что это единичный частный случай. при чём вы высокомерно заявляете об единственно верном варианте для всех. комментаторы до этого вам указывали, что такие "специалисты" очень узкого круга мышления получаются
да, и два года сеньор выйдет мягко говоря слабенький :)
Помню взял в отдел брата друга. Сам друг был программистом от бога, а этот его брат был совсем не то, почти ничего не пытался делать, учился на электронщика, на программиста не смог поступить (конец 90-х, начадо 2000-х). Для начала я дал ему пробную задачу написать на c++ графический редактор чтобы пользователь мог рисовать схемы. За пару месяцев написал. Еще через пару месяцев уволился, пошел в коммерческий сектор, за пару первых месяце исправил больше багов чем вся команда вместе взятая (с его слов). Через год был уже тимлидом, через два купил квартиру за ЗП без кредита. Это история программиста и с этими ребятами периодически нужно биться за место под солнцем.
частный случай, не находите? ну и опять же, написать можно классную приложуху. сразу. скажем через месяц. а потом? как этот говнокод новоиспечённого сеньора (серьёзно?) поддерживать? сколько говнокода от таких сеньоров "от бога" я вычистил - я не могу даже подсчитать. программист должен создавать продукт. продукт должен на долгом промежутке времени приносить пользу и поддерживаться. такому навыку за 2 года не научишься. особенно, как вы указали, с 18ти лет ни жизненного опыта нет у человека, ни производственного. так что, сказки рассказываете, либо искренне заблуждаетесь.
Какой игровой компьютер в 80-х? У Вас что-то с памятью? :)
Если в переменных, массивах, выражениях, присваивании и даже условном операторе нет ничего нового по сравнению с математикой. То цикл - это то, до чего самому додуматься может и можно, только выглядеть с огромной вероятностью Ваш самодельный цикл будет совсем не так, как общепринятый. А с нуля вообще "догадаться самому" ни о чём нельзя. Чтобы усвоить даже элементарные понятия программирования, необходимо иметь базовые знания математики. А тыкая в планшет и играя в Майнкрафт вообще ничему научиться нельзя. А вот мозги атрофироваться от таких занятий с двух лет вполне могут.
Я вполне понимаю, почему у некоторых программистов возникает ощущение, что они ничему не учились и всё произошло само собой. Программирование - это такой большой конструктор, который позволяет из готовых запчастей создать готовый продукт. И некоторые именно этим и занимаются, поэтому и учиться им особо нечему. Но чтобы создать свои собственные запчасти, хочешь не хочешь, а учиться придётся. :) И судя по тому, как безграмотно Вы выражаете свои мысли, я подозреваю, что Вы из первых.
Какой игровой компьютер в 80-х? У Вас что-то с памятью? :)
В конце 80-х. В 88 у меня появился Радио-86рк. Потом у людей пошли Вектор на той же платформе и до того БК-0010. Они больше подходили под определение "игровой", это да. И уже потом синклеры и прорыв - первый IBM совместимый MК-88, нереальная круть, мне на тот момент недоступная.
И судя по тому, как безграмотно Вы выражаете свои мысли, я подозреваю, что Вы из первых.
Не, я тупой как дрова троечник и не сильно успешный программист. Но даже я осваивал программирование по такой схеме: в 5м классе пошел в библиотеку и прочитал что такое компьютер и бейсик. В 6-м попал за первый комп в дворце пионеров. Сказали написать простейшую программу, написал, больше не ходил, потому что слишком просто и скучно. В 8-м классе получил таки комп домой, сразу написал игру с бомбящим самолетиком на бейскике и после этого написал пару игр на ассемблере. Никто меня не учил, ничего я не читал. Было несколько распечатанных страниц от друзей отца и дальше эксперименты.
Ну не было в моей жизни момента, когда я изучал упорно базовые концепции вроде циклов. И в жизни большинства программистов этого тоже не было. Просто они не пишут здесь, потому что зачем заниматься понто-резтвом, демотивировать людей и сливать карму. А у меня просто настроение депрессивное и поэтому занялся "раскритием глаз". Сейчас закончиу и забуду прохабр на пол года.
Не знаю, почему вас заминусили. За обычное мнение, пусть и ошибочное.
Вы упускаете из внимания некоторые вещи:
Возраст. Молодые в целом быстрее учатся.
Интерес. Он есть не у всех. Причем интерес не к самому кодингу, а к результату. Сам кодинг воспринимается как досадная помеха на пути к желаемому. Зато когда сделал - это гордость перед друганами.
Папа программист, у которого можно спросить непонятное. И папа способствует хобби ребенка. А ведь папы разные бывают...
Школа, окружение - оно у всех разное. Друзья могут и не интересоваться программированием. В итоге ребенок не получит социальной поддержки, гордости, состязания и т.п. стимулов к продолжению кодинга.
В общем, чтобы появился условный "Моцарт", нужна куча совпадений по жизни. Это скорее редкость, а не норма. Но даже такие ребята - они все равно проходят по тем этапам, что указаны в статье. Просто интуитивно. И вы ошибаетесь, что это происходит все так быстро и без напряга.
К тому же сделать что-то по видосику - это не значит научится и приобрести навык. Я вот не разработчик, но тоже могу по видео или статьям сделать многое. Помню, как-то ради любопытства, я развернул за пару часов vue.js и потом за пару дней сделал сайт на нем, правда без бэкенда. Видосики, туториалы, статьи мне помогали в этом. А мне тогда было ближе к 30. Я далеко не "Моцарт".
Вот и ваш сын и его друзья навыки приобретали в течение нескольких лет, а не за несколько дней, когда вы могли отметить "прогресс". К тому же, сейчас в хороших школах учат программированию. Т.е. навыки у ребенка не только случайные, но еще имеют системную поддержку от школьного образования. И в резульате оказывается, что за спиной "через два года сеньора" оказывается лет 8-10 практики в программировании (с детства), а не 2 года.
Любые навыки долго формируются. Даже на относительно простые, типа вождения авто, нужны многие месяцы, чтобы достичь уверенности. Хотя казалось бы, крути руль, жми педаль, да верти головой по сторонам.
Такова реальность. Кстати, "моцартов" в музыке сейчас умеют готовить. Сам видел одну методику. Там дети в 5-6 лет уже играют Рахманинова на пианино)) Может почти любой ребенок научиться. Без особого напряга. Правда эта методика не учит создавать шедевры))) но нотную грамоту и умение хорошо играть - даёт.
В 90-х дело было... Жил в маленьком городке и всё время приходилось искать любую возможность для подработки, в частности, по типу "учи, дурень, компьютеру". Однажды знакомый подкинул клиента - пацан лет четырнадцати с крутым (по местным меркам) папашей, который хотел сынка в жизни чему-то научить. Выбрал, почему-то, программирование. Купил сыночку комп. Ну, пришёл он, послушал первый урок... В начале второго смотрю парню в глаза, а они у него пустые, как... мой кошелёк. Спрашиваю - ты сам-то чего хочешь? Он что там рассказал про хакеров, взломы паролей, ещё чего-то. Говорю:"То есть, ты полагал, что я тебе за пять минут покажу пару приёмов и ты пойдешь сайты крушить в Интернете.?" Ответ - "Ну да!" Нет, говорю, братец, извини, так не бывает. Не стал я его учить. Потом приятель, который мне его сосватал, рассказал, что папаша застал сыночка за просмотром порнухи в Интернете и выкинул комп в окно...
Вы рассказали о формировании ЗУН (знаний, умений и навыков) то, что знает любой педагог. Но сделали некоторые методические ошибки. Например, все педагоги знают, что когда один студент будет решать задачу на доске с комментированием, остальные будут заниматься бог знает чем. Поэтому лучше, чтобы все студенты решали задачу одновременно в своих тетрадях и решение комментировали кусками по очереди те из студентов, кого Вы назовёте, и тогда все студенты будут вынуждены заниматься делом и Вы будете полностью контролировать процесс. :)
Что касается формирования ЗУН именно по программированию, Вы упустили некоторые важные моменты. Вы уделяете время всему, кроме самого главного: анализа текста задачи. Необходимо научить студентов, во-первых, анализировать текст задачи, т.е. выделять, что нужно получить в результате, какие знания для этого потребуются, что мы уже знаем, чего не знаем, где это найти. И, во-вторых, научить формулировать ПИСЬМЕННО логику происходящего. Типа:
чтобы получить такой результат, нужно сделать следующее:
Создаём файл картинки с этим uri
Проверяем, существует ли он
Если существует, читаем его
Создаём Битмап и т.п.
Дело в том, что пока студент не научится формулировать предстоящие действия словами, он не получит никаких знаний, и, тем более, умений и навыков. Только сформулированные словами знания могут сохраниться надолго в нашей памяти. А самое главное, этот навык поможет ему в будущем, когда придётся использовать гораздо более сложную логику при написании программ.
Ну и, конечно, для того, чтобы студенты чему-то научились, необходимы адекватные учебники и сборники задач разного уровня сложности по каждой из тем. С чем именно в программировании очень большие проблемы. Скорее всего, потому, что большинство программистов методику преподавания не изучали, но при этом пытаются писать учебники и статьи по программированию ;)
Новый язык, как новый город. И лучше, чем если тебя по нему проведёт эскурсовод.
Простите за занудство, но не вводите людей в заблуждения и не путайте, НАВЫК - автоматическое действие, УМЕНИЕ - осознанное действие.
Этапы формирования навыков программирования