Pull to refresh

Сейчас открою вкладку с ИИ и стану программистом

Level of difficultyEasy
Reading time5 min
Views21K

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


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

Но мы-то все бывали на кухнях.
А теперь представьте, что вы решили написать программу с помощью ИИ, не будучи программистом.

Домашний vibe-coding
Домашний vibe-coding

Так что создание программ — это не просто спросить ИИ и опубликовать. Это путь через изучение множества книг, статей, видео, подкастов. Это широкий объём знаний и понимание, что, где и когда стоит примерять, а когда — нет. Это путь, вымощенный множеством ошибок, каждая из которых чему-то научила.

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

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

Программирование — это не только написание кода. Оно объединяет в себе разные направления и разные знания. Сейчас почти никогда не достаточно знать один язык программирования. Нужно понимать, что и как тестировать и вообще понимать, что тесты нужны. Программист должен уметь быть хакером для самого себя, чтобы видеть слабые места программы и заранее озаботиться о безопасности. Нужно быть архитектором баз данных, чтобы понимать, где какой тип данных использовать и как сделать её наиболее эффективной. А чем сложнее получается система, тем больше нужно знать, тем дальше придётся погружаться в серверную архитектуру. А ещё помимо прочего надо понимать, какие есть алгоритмы и как они работают, ведь одна и та же функция, написанная по-разному может выполняться от миллисекунд до часа.

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

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

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

Вот дорожная карта фронтендера (frontend) — программиста, который разрабатывает визуальную часть программы. с которой непосредственно взаимодействует обычный пользователь .Посмотрите. Там описаны минимальные требования.

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

Тут вам надо знать язык разметки HTML, таблицы стилей CSS, язык JavaScript, язык на его основе TypeScript, хотя бы один из популярных фреймворков, а также отдельные технологии и инструменты.

Вот дорожная карта бэкендера (backend) — программиста "невидимой" части программы. Там надо знать технологии и инструменты, уметь работать с базами данных, сетью, уметь взаимодействовать с другими сервисами, уметь тестировать, проектировать архитектуру приложения и мн. др. Чисто бэкендеров сейчас почти нет, так что надо ещё знать хотя бы четверть от того, что знает и умеет фронтендер.

Для примера, в одном из проектов мне нужно было знать язык программирования C#, язык запросов SQL, уметь использовать связку HTML+CSS+JavaScript, хотя бы поверхностно понимать фреймворк Angular, а также пришлось разобраться со скриптами на PowerShell и Python. И это только языки, не касаясь всего остального.

Глядя на Инстаграм, можно подумать, что надо всего лишь сделать 20 страниц и хранить пользовательские данные — ничего особенного. Но это только видимая часть, за которой скрывается огромная инфраструктура с дата-центрами, серверами, кэшированием, микросервисами, очередями сообщений, базами данных и пр. Снова много незнакомых слов? А за них ещё и разные специалисты отвечают. И всё это нужно систематизировать, всем нужно управлять. Всё это — огромная команда специалистов самых разных профессий, но почти все так или иначе непосредственно пересекающиеся с разработкой.
Именно поэтому нельзя просто взять и скопировать чей-то большой сайт.

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

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

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

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

Новичок (junior) пишет много кода, чтобы решить проблему.
Средний (middle) пишет меньше, но лучше.
Старший (senior) вообще не пишет код — он просто меняет требования.

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

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

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

Tags:
Hubs:
+26
Comments34

Articles