Этот вопрос — один из самых экзистенциальных в нашей профессии

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



Этот вопрос — один из самых экзистенциальных в нашей профессии. Он бьет прямо в синдром самозванца, заставляет нас оправдываться за открытые вкладки с документацией и разделяет "ремесленников" от "волшебников".

Если задать этот вопрос честному специалисту в лоб, он не скажет "Да, конечно" и не начнет цитировать сортировку пузырьком наизусть. Скорее всего, он ухмыльнется, посмотрит на потолок и выдаст одну из трех фаз ответа в зависимости от уровня сениорности:

Джун: "Я умею заставлять компьютер делать то, что Я хочу, но пока медленно и с багами."

Мидл: "Я умею заставлять компьютер делать то, что нужно Бизнесу, и при этом не ломаться по ночам."

Сеньор: "Я умею так сформулировать задачу, чтобы ее мог выполнить даже ИИ, а потом объяснить коллегам, почему это решение — единственно верное в текущих ограничениях."

Но давайте разберем объективные критерии, которые отличают программиста от человека, просто умеющего вставлять код из StackOverflow.

Критерий №1: Парадигмальное мышление (а не знание синтаксиса)

Непрограммист думает: "Мне нужно сохранить данные. Напишу список и цикл for".

Программист думает: "Какова природа этих данных? Они будут часто меняться? Мне нужен быстрый доступ по ключу или порядок добавления? Может, это вообще не список, а очередь или граф?"

Критерий: Программист оперирует абстракциями (потоки, события, состояния, инварианты), а не конкретными командами. Если вы переносите логику с Python на Go или с JS на Rust, вы пишете не "перевод команд", а заново реализуете архитектуру паттернами, свойственными новому языку. Язык — это лишь инструмент, как молоток. Уметь забивать гвозди — не значит быть строителем. Строитель знает, где несущая стена.

Критерий №2: Декомпозиция (Умение дробить слона)

Дайте непрограммисту задачу: "Сделай Твиттер". Он впадет в ступор.

Дайте программисту: он разобьет это на:

— Аутентификация (как хранить пароли?).

— Лента (как кешировать?).

— Публикация (как гарантировать доставку?).

— Поиск (как индексировать?).

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

Критерий №3: Ощущение сложности (Big O в голове)

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

Программист еще до написания кода прикинет: "Если у нас N пользователей и M заказов, эта O(N*M) операция убьет сервер при 1000 RPS. Надо инвертировать индекс или использовать хеш-таблицу".

Критерий: Программист оценивает эффективность решения до его реализации, а не после. Он чувствует "запах" тормозов алгоритма еще на этапе проектирования.

А как же интернет и «всё помнить невозможно» ? Это самый каверзный пункт. Здесь кроется главная подмена понятий.

Непрограммист ищет в интернете готовое решение ("Как сделать кнопку").

Программист ищет в интернете синтаксис ("Какой метод в Python 3.11 для работы с датами в часовом поясе Киева?").

Программист знает, ЧТО искать. У него в голове есть карта территории. Он точно знает, что существует паттерн "Декоратор" или функция map, но забыл, в каком порядке идут аргументы. Документация нужна ему для справки, а не для обучения.

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

Если отключить интернет у непрограммиста — его код не скомпилируется, потому что он скопировал 90% строк и не понимает, как их соединить.

Критерий №4: Отладка (Сверхспособность)

Это лакмусовая бумажка.

Непрограммист видит ошибку (NullPointerException) и читает стектрейс как заклинание на эльфийском.

Программист видит ошибку и воспроизводит причину в голове. Он мысленно проходится по состояниям переменных: "Ага, сюда пришел null, потому что на предыдущем шаге я забыл проверить ответ от БД, а БД упала по таймауту".

Критерий: Программист — это детектив. Его суперсила не в написании кода, а в чтении чужого кода и логов. Умение задавать правильные вопросы к системе важнее умения печатать.

Критерий №5: Ответственность за время и ресурсы (Инженерный подход)

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

"А что, если одновременно придет 1000 запросов?"

"А что, если жесткий диск заполнится?"

"А что, если пользователь введет эмодзи вместо имени?"

"А как это будут поддерживать стажеры через 2 года?"

Он пишет код для людей, а не для машины. Машине всё равно на нейминг и структуру, а людям — нет.

Программист — это тот, кто может взять абстрактную проблему пользователя и, пройдя через уровни "Бизнес-логика -> Архитектура -> Алгоритм -> Синтаксис", выдать работающее, масштабируемое и поддерживаемое решение. Если человек просто переводит требования в код — он кодер. Если он переводит потребности в структуру — он программист. И интернет здесь совершенно ни при чем.

Physics.Math.Code (t.me/physics_lib) — крупнейшее русскоязычное сообщество с лучшим контентом для физиков, математиков и разработчиков. В VK : vk.com/physics_math

Учебные фильмы (t.me/maths_lib) — фильмы по физике, математике, программированию, технологиях, химии, биологии. Самые интересные видео для развития.

Эпсилон (t.me/epsilon_h) — канал с книгами по информационной безопасности и всем, что с ней связано.

Репетитор IT mentor (t.me/mentor_it) — блог с заметками преподавателя по физике, математике, IT, железе. Разборы интересных задач, рассуждения о науке, образовании и методах обучения.

Chemistry.Biology.Anatomy (t.me/chemistry_lib) — канал для химиков, биологов и медиков.

Техника .TECH (t.me/tech_pac) — эстетика технологий различных времен


Телеграм: t.me/ainewsline

Источник: vk.com

Комментарии: