Все, доделал часть дел. Теперь #треддня. Как обещал про IT образование вообще и "первый язык" в частности.
Ну для начала непопулярное мнение. Не всем нужно войти вайти. Да, на данный момент, в IT сильно не хватает людей, поэтому зарплаты все еще высокие. Особенно в России, которая к сожалению страна достаточно бедная и возможность работать на международную компанию очень ценится.
Тем не менее как раз потому что зарплаты высокие, люди часто идут в IT не потому, что оно им нравится, а в погоне за этой самой зарплатой. Часто это так себе заканчивается. Даже в самих IT есть разные задачи, не связанные с программированием.
Так что я верю, что если бы люди хорошо подумали, они могли бы найти себе что-то достаточно доходно и не столь травматичное. Разумеется, тут у всех бывает своя "ситуация". Так что не могу рекомендовать что-то прямо всем.
К сожалению кроме больших зарплат, еще бытует мнение о том, что в IT не надо ничего знать и уметь. В Kotlin комьюнити каждый день приходит по несколько человек, которые думают, что они сейчас напишут игру на андроиде и вмиг станут миллионерами.
Надо ли говорить, что это очень плохо работает. Во-первых, много людей, у которых вообще к этому нет способностей. Во-вторых, люди сразу впрягаются в муторные индустриальные технологии, не изучив "азы". В результате застревают навечно в позиции джуна-мидла.
Ну и выносят себе мозг в результате. Вот это самое известное всем "выгорание", это же не потому что IT жрет мозг. Любая работа жрет. А потому, что люди не готовы совершенно к тем сложностям и той загрузке, которые получают. И не получают достаточного удовольствия от работы.
В общем не факт, что оно вам надо.
Но.
Черт с ним, с IT. У нас сейчас программирование в той или иной мере является частью повседневной жизни во всех областях. Так что базовые навыки программирования нужны абсолютно всем без исключения.
Это приводит нас к тому, что программировать надо учить. Причем всех. Причем в школе. Спрашивается как и на чем?
Ну и дальше идет мое мнение (оно может быть неправильным, но я все-таки очень много работаю с недавними школьниками).
Категорически не надо брать С++. Я писал позавчера о том, что философия С++ в том, что программист гений и бог и что он может делать все, что вздумает. Ну да, давайте дадим гранатомет школьнику. Пусть играется.
С программами же все хуже, чем с гранатометом. От того, что вы попали из гранатомета куда-то не туда, результат очевидный. А от того, что человек городит черт знает что на С++ видимый результат будет через много лет.
Возможно кто-то тут ходил в музыкальную школу и знает, что в классе фортепиано, чуть ли не год тратят на то, чтобы правильно "поставить руки". Человек может сносно играть даже с неправильной постановкой, но он никогда не продвинется дальше какого-то уровня.
В результате надо будет разучивать и переучивать, что гораздо больнее и дольше, чем учить правильно сразу.
Свобода - это хорошо, когда вы знаете, что делаете. Поэтому не надо С++ в школах.
С и Pascal - это отличный вариант. Да, тот самый Pascal, на который все плюются, но который тем не менее гораздо ближе к современным индустриальным системам (Java), чем С.
Единственная проблема в том, что на этих языках можно освоить алгоритмы, но не "жизненные" примеры.
Поэтому Python. Не сильно сложнее того же С, не так уж много заведомо плохих практик, кроме того он есть везде человек может достаточно просто перейти в "настоящее" программирование.
Но тут есть одна ловушка. Как я уже писал, Python - это идеальный вариант для не-программистов. То есть тех, кто пишет очень маленькие программы - тонкие обертки над чужими библиотеками. Большая разработка на Python - это тяжко.
И на Python сложно почувствовать архитектурные решения. Там все на уровне конструктора - воткнул одно в другое и оно поехало. Поэтому, разумеется, программистам надо кроме Python осваивать еще как минимум один язык.
Ну мою рекомендацию вы, вероятно, угадаете. Начинается на К. Потому что современный язык, готовый для "промышленного" применения и тем не менее включающий все "учебные" концепции и достаточно требовательный, чтобы там сложно было "сделать бяку". Все можно, но сложнее.
Разумеется, есть все еще некоторые сложности с внедрением и с обучающими материалами. Но прогресс за последние два года просто огромный. Я не думаю, что это было в замыслах авторов, но внезапно Kotlin оказалось очень просто преподавать и учить.
А последние нововведения - kotlin-jupyter-kernel и возможность писать код прямо в вебе с полной визуализацией добавили то, чего так сильно не хватало в Java экосистеме - простоты вхождения.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Пока меня тут джависты в конец не съели (хотя я и сам в большой степени джавист). Еще один небольшой тред. Про computer science.
Дело в том, что широко бытует у подрастающего поколения заблуждение о том, что программирование - это то же самое, что и computer science.
На самом деле нет. Computer science еще дальше от прикладного программирования, чем физика. Computer science - это в большой степени изучение теории алгоритмов решаемости отдельных задач и вопросы асимптотической сложности.
Забабахаю все-таки на ночь глядя небольшой тредик.
Мне тут на интервью очень хороший вопрос задали: какие технологии надо в первую очередь осваивать для научного программирования. Я как-то об этом даже не задумывался. А вопрос отличны. Подумал. Пишу приблизительный ответ.
Питон (да простит меня @_bravit) все-таки маст-хэв. Он есть и, я думаю, долго еще останется, некоторым общим минимумом среди научных программистов. Разумеется, не столько Python, сколько numpy.
К счастью, его освоение занимает пару недель максимум (см. тред про идеологию).
Учить бы я стал в первую очередь веб-технологии. И клиентские и серверные. Как ни удивительно, эта область уже содержит многие вещи, нужные для науки. Коммуникационные протоколы, технологии работы с данными и соответствующие архитектуры.
В продолжение утреннего треда, возвращаемся к программированию.
Дело в том, что у каждой программной экосистемы есть если не философия, то идеология. В большинстве случаев, это не "официальная позиция" а просто некоторая совокупность взглядов большинства членов сообщества.
С++: разработчик - бог, мы даем ему все инструменты, чтобы он мог при их помощи сотворить все, что хочет.
Python: написать программу должно быть легко. Все инструменты должны быть в шаговой доступности и максимально быстро подключаться.
Сегодня #треддня немного пораньше, потому что надо ехать на физтех и там будет не до этого.
Философия - это важно.
Но не для всех, разумеется.
В нашей стране (странАХ на самом деле) к сожалению имеет место стигматизация философии. Под философией до сих пор подразумевается так называемая марксистско-ленинистская идеология (уже у Ленина никакой философии там нет).
Ну и само существование институтов философии, наполненных бывшими учителями истории КПСС не помогает. Тот предмет, что изучается в ВУЗах, это конечно никакая не философия, а история философии. Полезная, но не супер-осмысленная дисциплина.
Я уже сильно пожалел, что выбрал в том числе и тему собеседований, ибо о них сказано уже столько, что что-то добавлять к этому кажется излишним. Но я где-то читал про то, что в мире в ближайшем будущем намечается дефицит воды, поэтому налью её немного в этом треде⬇️
У меня пока значительно преобладает опыт участия в собеседованиях со стороны кандидата, поэтому наблюдения будут достаточно субъективными. Если же вы у вы участвовали в процессе найма с другой стороны и не согласны с тезисами, буду рад любым возражениям
Самый главный ингредиент плохого собеседования это нежелание интервьюера его проводить. Вот взяли и выдернули тимлида из работы собеседовать, а ему оно нахрен не надо. У него таски горят, джун проект не вывозит и еще три созвона на сегодня. По итогу все выливается на кандидата