🔥

Тред (Александр Нозик)


Все, доделал часть дел. Теперь #треддня. Как обещал про IT образование вообще и "первый язык" в частности.

Ну для начала непопулярное мнение. Не всем нужно войти вайти. Да, на данный момент, в IT сильно не хватает людей, поэтому зарплаты все еще высокие. Особенно в России, которая к сожалению страна достаточно бедная и возможность работать на международную компанию очень ценится.

Тем не менее как раз потому что зарплаты высокие, люди часто идут в IT не потому, что оно им нравится, а в погоне за этой самой зарплатой. Часто это так себе заканчивается. Даже в самих IT есть разные задачи, не связанные с программированием.

Так что я верю, что если бы люди хорошо подумали, они могли бы найти себе что-то достаточно доходно и не столь травматичное. Разумеется, тут у всех бывает своя "ситуация". Так что не могу рекомендовать что-то прямо всем.

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

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

Ну и выносят себе мозг в результате. Вот это самое известное всем "выгорание", это же не потому что IT жрет мозг. Любая работа жрет. А потому, что люди не готовы совершенно к тем сложностям и той загрузке, которые получают. И не получают достаточного удовольствия от работы.

В общем не факт, что оно вам надо. Но. Черт с ним, с IT. У нас сейчас программирование в той или иной мере является частью повседневной жизни во всех областях. Так что базовые навыки программирования нужны абсолютно всем без исключения.

Это приводит нас к тому, что программировать надо учить. Причем всех. Причем в школе. Спрашивается как и на чем?

Ну и дальше идет мое мнение (оно может быть неправильным, но я все-таки очень много работаю с недавними школьниками).

Категорически не надо брать С++. Я писал позавчера о том, что философия С++ в том, что программист гений и бог и что он может делать все, что вздумает. Ну да, давайте дадим гранатомет школьнику. Пусть играется.

С программами же все хуже, чем с гранатометом. От того, что вы попали из гранатомета куда-то не туда, результат очевидный. А от того, что человек городит черт знает что на С++ видимый результат будет через много лет.

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

В результате надо будет разучивать и переучивать, что гораздо больнее и дольше, чем учить правильно сразу. Свобода - это хорошо, когда вы знаете, что делаете. Поэтому не надо С++ в школах.

С и Pascal - это отличный вариант. Да, тот самый Pascal, на который все плюются, но который тем не менее гораздо ближе к современным индустриальным системам (Java), чем С. Единственная проблема в том, что на этих языках можно освоить алгоритмы, но не "жизненные" примеры.

Поэтому Python. Не сильно сложнее того же С, не так уж много заведомо плохих практик, кроме того он есть везде человек может достаточно просто перейти в "настоящее" программирование.

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

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

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

Разумеется, есть все еще некоторые сложности с внедрением и с обучающими материалами. Но прогресс за последние два года просто огромный. Я не думаю, что это было в замыслах авторов, но внезапно Kotlin оказалось очень просто преподавать и учить.

А последние нововведения - kotlin-jupyter-kernel и возможность писать код прямо в вебе с полной визуализацией добавили то, чего так сильно не хватало в Java экосистеме - простоты вхождения.

Александр НозикАлександр Нозик