Найти тему
Сделай игру

Программисты будущего: что ждёт отрасль

Оглавление

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

В этой статье хочу порассуждать о том, как может измениться ландшафт разработки ПО в относительно ближайшем будущем.

Программист будущего - программирует сразу на камне... если вы понимаете о чём я
Программист будущего - программирует сразу на камне... если вы понимаете о чём я

Как мы дошли до жизни такой

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

Но, в принципе, покуда есть ресурсы - можно это как-то преодолевать.

И долгое время эти ресурсы были: сперва всё уменьшающийся технологический процесс изготовления процессоров с постепенно замирающем ростом производительности; удешевление и, как следствие, становление более доступной оперативной и долговременной памяти; расширение функционала и рост быстродействия видеокарт.

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

И всё было бы прекрасно, если бы не одно "но": никакой рост не может продолжаться бесконечно долго и рано или поздно мы просто обязаны достичь некоторого потолка, после которого будет... а что будет после?

Элементарная экономика вопроса

Если ты за год выращиваешь 12 яблок и это твой единственный источник дохода, то каждое яблоко должно стоить примерно некоторое количество тысяч рублей, чтобы, продав его, можно было бы (хотя бы как-то) протянуть месяц. Если же получается выращивать 12 миллионов яблок в год - то тут минимальная себестоимость 1 яблока сильно падает, даже несмотря на сопутствующие издержки. Надеюсь, идея понятна?

То же самое и с процессорами, памятью и так далее. Чем больше производится товара, тем дешевле будет конечная единица, однако, есть некоторый минимальный объём товара, который надо продать, чтобы просто выйти в ноль.

Плюс, есть ещё одна занятная тенденция: если товара выпускается меньше, тем дороже стоит единица товара, тем менее доступным она становится, тем меньше товара продаётся и так далее, пока не наметится некоторый баланс между спросом и потреблением. Правда некоторые производители могут до этого баланса не дожить: кредиты, огромные предприятия, раздутые штаты, профсоюзы работников и всё это требует затрат, а доходы падают.

И, действительно, чего бы им не падать, если наступил некоторый предел, за который уже не выйти? Зачем покупать новый процессор, если старый ещё отлично работает, а вот быстродействие нового отличается всего на пару процентов, да и то по очень сомнительным тестам?

Первый сценарий крушения

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

Второй сценарий крушения

Полагаю, даже люди не интересующиеся политикой, что-то про происходящее в мире да слышали. Тут и мир в шаге от ядерной войны, и Китай не может поделить Тайвань с США, и многое другое. И распад мира Pax Americana, в котором исчезает глобализм и мир распадается на сообщества нескольких зон влияния со своими метрополиями и периферией, что сильно затрудняет обмен товарами и услугами, делает недоступным многие, ставшие привычными, сценарии поведения и меняет правила закупок.

Проще говоря, с какого-то момента, крупнейший производитель электронных компонент может перестать существовать (или перестать работать) либо же его продукция сильно подорожает и, возможно, станет недоступной.

Прочие сценарии

Полагаю, можно предложить ещё некоторое количество как позитивных, так и негативных сценариев (в которых привычная модель ИТ отмирает). Позитивные сценарии рассматривать нет смысла: к ним не требуется готовится, а вот негативные - стоит. Потому что в случае их наступления весь ИТ ландшафт может измениться.

Специалисты узкого профиля

Последние лет 10 профессию программиста можно было назвать быстрорастущей: количество вакансий постоянно увеличивалось, то и дело появлялись компании, которые буквально пылесосили рынок, вылавливая всех, кто не успел спрятаться и предлагая им немного больше, чем конкуренты.

Проблема была в том, что требовались программисты с весьма ограниченным набором навыков, знаний и умений, которые могли не знать (а, зачастую, и не знали) базовых вещей, на которых строится работа компьютеров, за которыми они работали.

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

Те же, кому хватало усидчивости и интереса попытаться разобраться в том, как всё работает - довольно быстро всё забывали, так как не было возможности широко применить новые знания на практике.

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

Прошу понять меня правильно: такие специалисты нужны и важны. Однако, они (и я в их числе) привыкли играть в условиях, когда ресурсов много или очень много, а профилирование приложения - важный, но крайне редко применяемый шаг и на него идут только тогда, когда уже нельзя не пойти.

Возможная новая реальность

Ранее, я описал несколько сценариев крушения привычного ИТ мира - выбирайте, какой вам больше нравится или можете выбрать какой-то свой (хоть прилетели пришельцы и украли весь кремний) - не важно.

В обозримом будущем есть вероятность сокращения доступности электронных компонентов и, вероятно, падение их производительности (менее производительные микросхемы и процессоры проще и дешевле производить, да и техпроцесс легче освоить или перекупить).

Что это значит для обычного потребителя? Только то, что компьютеры станут менее доступными и менее производительными. Определённые направления могут стать либо не востребованными вовсе, либо сильно потерять аудиторию.

И на первый план выходит его величество - оптимизация: с падением вычислительных возможностей возрастает потребность к тому, чтобы всё продолжило работать, пусть и с некоторой потерей функционала.

Во-первых, целый разряд разработчиков, которые специализировались на массовых продуктов для прикладных систем (например, веб-разработчики) рискуют отправиться на мороз; те же, что останутся в профессии - будут срочно осваивать дополнительные навыки.

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

Таким образом

Попробую обобщить то, что, с моей точки зрения, может потребоваться от программистов в относительно близком будущем:

  • Понимание архитектуры ПК и особенностей его функционирования;
  • Понимание устройства ОС и умение пользоваться её особенностями;
  • Умение эффективно использовать ресурсы системы;
  • Намного более глубокое понимание того, с чем приходится работать, включая математические модели;
  • Умение оптимизировать вычислительные процессы.

Неплохо бы знать и уметь всё это делать в принципе, не находите?

Заключение

Наверняка будут те, кто со мной не согласится. Что же, имеете право на это. И хотя я надеюсь, что до этого не дойдёт, всё же готовлюсь к упрощению ИТ ландшафта с возросшими требованиями к тем, кто решит в остаться в процессии.

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