В упрощенном виде (вы - единственный разработчик в команде) работа программиста выглядит так: к вам приходит заказчик и на словах объясняет "Нам нужен сайт, на котором пользователь вводит свои данные и цели, а сайт ему рассчитывает оптимальный рацион питания и предлагает купить продукты по списку по ссылкам на магазины наших партнеров".
Вы говорите "ок", выясняете подробности (какие именно данные вводит пользователь, по какой логике подбирается рацион, где взять данные по продуктам питания и их БЖУ, какие партнеры и где сайты партнеров), вам предоставляют все необходимые для работы данные в виде файлов, ссылок и т.д.
Вы садитесь и пишите этот сайт, "деплоите" его (т.е. делаете так, чтобы этот сайт был доступен пользователям в интернете) и заказчику сдаете готовую работу. Как именно вы выполняете эту работу и доводите словесное описание до готового продукта заказчику фиолетово, он на выходе хочет получить работающий сайт.
Это очень упрощенно. Если вдаваться в детали, то даже для маленького сайта/сервиса/приложения одного разработчика вряд ли будет достаточно. Есть целая команда: например, разработчик пишет код, а "деплоить" (выкладывать на сервер, обеспечить доступность для пользователей сети) проект будет девопс-специалист. Тогда программист доводит проект до вида кода, который запускается в "демо-режиме" (режиме для разработки и отладки), а дальше сдает код девопсу.
И работа сдается не вся сразу, а по частям и каждая часть согласовывается с заказчиком и утверждается у заказчика.
Для взаимодействия с заказчиком может быть нанят дополнительный сотрудник (проджект-менеджер).
Разработчик может делать только часть сайта (например, только бэкенд: хранение данных, аналитика, выдача данных по запросу), а отрисовкой данных будет заниматься другой разработчик (фронтендер).
Кроме написания собственно кода разработчик занимается дополнительными штуками типа адекватного хранения этого кода и истории его изменений (работа с системами контроля версий), подбором и установкой необходимых сторонних программ, поиском оптимальных решений, зачастую написанием автоматических тестов для своего кода и так далее.