Что стоит прокачивать накануне эры постпрограммирования?
Публичный постКак показывает практика, порой возникает необходимость менять используемые языки программирования, как перчатки: кардинально меняется задача, платформа или концепция в целом. Либо вовсе предыдущий язык "умирает" - морально или фактически.
Освоение новых ЯП - дело небыстрое, плюс как правило они эволюционируют, развиваются. То есть обычно стоит задача "догнать и перегнать". И вот трата времени на "догнать" (не говоря уже о "перегнать") выглядит не особо эффективной, причём наверное не мне одному.
К тому же повальная мода на нейросети даёт ощутимую надежду на скорое появление постпрограммирования. Как когда-то высокоуровневые ЯП "отодвинули" человека от ассемблера и железа, а позже фреймворки усугубили разрыв, нейросети имеют возможность "нарастить" на это всё добро ещё один слой абстракций и интерпретаций. И всё во имя снижения порога вхождения и увеличения эффективности и универсальности утилизации рабочего времени.
Так вот. Отбрасывая шутеечки и ответы в стиле "Учить Java никогда не поздно и выгодно", "А кто сказал, что на ассемблере уже не пишут?" и "Земля большая, программеры с устаревшими навыками всегда найдут себе применение" - что стоит прокачивать на пороге подобного постпрограммирования, как думаете?
Фундаментальные вещи в языках программирования не так часто меняются. Алгоритмы, методы сортировки, деревья и подобные фундаментальные знания на мой взгляд должны быть в приоритете.
Помимо этого как долгосрочный тренд это Soft Skills и желание разбираться не только в технических аспектах проекта, но и в бизнесе. Аля продуктовый программист с некоторыми знаниями продуктового менеджмента.
Что-то не верю я в постпрограммирование. В 1960-м, когда Дядюшка Боб еще ходил под стол пешком, народ писал на языке Autocoder, чувствуете накал страстей? Автоматический кодировщик!
Когда появился LISP, всем стало понятно, что программирования больше не будет, достаточно же просто объяснить программе, что делать! То же самое было с Паскалем, с SQL-ем, c UML-ем, с LabView.
Еще старина Брукс сказал, что "автоматическое программирование - это эвфемизм для ЯП более высокого уровня". Вот эта картинка раскрывает суть этого афоризма в деталях.
Короче, будем писать непротиворечивые, детальные и понятные компьютеру спецификации. То есть код.
Ко мне относительно регулярно стучатся в личку разные люди, которые умеют делать математику для нейросеток и хотят получить из нее кусок кремния, но не знают, с чего начать. Понимание того, как работают куски кремния, может оказаться полезным в эпоху постпрограммирования, потому что все больше и больше функциональности сейчас переносится в спецвычислители в железе.
И, в более широком смысле, доступные в железе мощности общего назначения уже скоро упрутся в потолок, и будет полезным понимание сферы низкоуровневой оптимизации кода под железо, процессорных архитектур, компиляторов и всего такого.
Это полная противоположность "backend as a service" и "программированию без написания кода", но есть мнение, что ещё один слой упрощения работы кодеров за счёт увеличения требований к железу железо просто не вытянет.
Я думаю, никакого "пост-программирования" не будет. Да, будут появляться новые языки и парадигмы, новые инструменты и методики; но для кардинальных изменений нет никаких предпосылок.
Более того, я давно уже заметил такую штуку: каждый прорыв откатывает нас в каком-то смысле назад. Только мы вздохнули, что наконец у всех мощные десктопы и большие мониторы - хуяк, здравствуй, мобильная революция. Только привыкли работать с мощными инструментами - хуяк, привет, k8s и голанг, мы снова пишем мейкфайлы, C-подобный говнокод и баш-скрипты, снова срем логами в stdout. Мы вырвались из XML-ада Java только для того, чтобы очутиться в YAML-аду helm.
Это вечная спираль.
Политэкономия всему голова.
Инструменты вторичны, запрос общества - наше всё.
Я буду не столь оптимистичен и неросети немного перехайплены. Но и настоящее "программирование" умирает в среде энтепрайзов и прикладной разработки. Все эти круды, формочки, ворочанье jsonов, бизнес-аппы, финтех старатпы и прочая работа для IT-сантехников – это просто чудовищно. Надеюсь скоро все это минимизируется испльзованием backend-as-service решений, nocode, генераторами интерфейсов и прочими вещами, а для бизнес-логики хватит и AWS Lambda." С этим всем справятся продуктовые менеджеры, аналитки etc, без привлечения кодерков. "Настоящее программирование" останется как узкоспециализированная работа: мб системное программирование, embedded, какой-нибуь геймдев etc...
Только если это плюсы или ,например, какая-нибудь скала с cats, то да, тогда долго.
Я вот иногда мечтаю, что через лет этак 5-10 большая часть из нас может оказаться безработными и рынок прикладной разработки схлопнется. В лучшем случае можно попробвоать переквалифицироваться во что-нибудь смежное не связанное с разработкой. Главное не унывать и помнить, что жизнь прекрасна сама по себе, не важно кем ты работаешь, а важно с кем, и чтоб на жизнь хватало.
Ну а всё настоящее и важное, оно происходит за пределами наёмной работы, как хобби, пет проекты, собственные проекты или другие активности. Поэтому сказать, что прокачивать очень и очень сложно.
Попробую ответить с двух позиций.
I. Узкое понимание вопроса - про языки программирования
Рекомендую изучать языки, предлагающие новые концепции и идущие в сторону строгости. В этом смысле языки с динамической типизацией - тупик. Для тяп-ляп-уяк-впродакшн или прототипирования сойдёт, для построения сложных систем с 500к строк - уже нет. Слабое звено - всегда программист с кривыми руками. Чем больше работы и проверок перекладывается на компилятор, тем лучше всем - и бизнесу, и программерам. Пример старых языков с подобным подходом - сдохший Паскаль с очень строгим компилятором. Примеры новых строгих ЯП с новыми концепциями - Haskell и Rust. Первый - жемчужина функционального программирования, там обкатываются все новые идеи. Второй - низкоуровневое программирование, сопряженное с безопасной работой с памятью.
II. Широкое понимание вопроса - про программирование вообще
Освойте смежную профессиональную прикладную область, чтобы программирование было в этой области инструментом решения задач. В постмодерновом мире чистые программисты (кодеры) не нужны, их пучок за $100, гляньте на Индию и Юго-Восточную Азию. Люди за крохи готовы "войти в IT" и программировать. Конкуренция высокая, а качество никого не интересует, главное быстрее тяп-ляп-уяк-уяк.
Становитесь не просто программистом, а человеком, решаюшим проблемы.
😱 Комментарий удален его автором...