Можно ли полноценно программировать на телефоне: часть 2 — продуктивность и ограничения

Приземляем теорию в реальность

Можно ли полноценно программировать на телефоне: часть 2 — продуктивность и ограничения

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

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

Полезный блок со скидкой

Если вам интересно разбираться со смартфонами, компьютерами и прочими гаджетами и вы хотите научиться создавать софт под них с нуля или тестировать то, что сделали другие, — держите промокод Практикума на любой платный курс: KOD (можно просто на него нажать). Он даст скидку при покупке и позволит сэкономить на обучении.

Бесплатные курсы в Практикуме тоже есть — по всем специальностям и направлениям, начать можно в любой момент, карту привязывать не нужно, если что.

Аппаратные ограничения: когда мощности телефона действительно не хватает

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

Посмотрим, какие есть ограничения такого подхода в реальной жизни.

Процессор и память

Теоретически современные флагманы имеют до 16 ГБ оперативной памяти и 8-ядерные процессоры. Всё вроде как в полноценных ноутбуках, где такое железо легко позволяет заниматься разработкой. Но если практически, мобильная архитектура имеет фундаментальные различия.

С ходу, вот реальный тест компиляции:

# Тестируем производительность Python в Termux
import time
import numpy as np

start_time = time.time()

# Создаём сложные вычисления
matrix_a = np.random.rand(1000, 1000)
matrix_b = np.random.rand(1000, 1000)
result = np.dot(matrix_a, matrix_b)

end_time = time.time()
print(f"Вычисления заняли: {end_time - start_time:.2f} секунд")

И вот результаты на разных устройствах:

  • Tecno Camon 40: 15,3 секунды;
  • Samsung S23 Ultra: 9,1 секунды;
  • средний ноутбук (до 40 000 ₽): 2,1 секунды;
  • облачный выделенный сервер: 0,7 секунды.

Тут проблема не в чистой мощности, а в тротлинге — ситуации, когда телефон снижает мощность процессора, чтобы он не перегревался под сильной нагрузкой. Классический случай выглядит так:

  • первые 5 минут — телефон работает на полной скорости;
  • после нагрева — процессор снижает частоту на 40–60% и оставляет её такой до конца работы;
  • Результат — компиляция большого проекта может занять в три раза больше времени.

Экран, клавиатура и эргономика в целом

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

Типичная ситуация при отладке на маленьком экране:

function complexFunction() {
    // Нужно видеть одновременно:
    const apiResponse = await fetch('/api/data');  // 1. Код запроса
    const processedData = process(apiResponse);    // 2. Функцию обработки  
    const validationResult = validate(processedData);  // 3. Валидацию
    const savedData = await saveToDB(validationResult);  // 4. Сохранение
    
    // На экране телефона видно только 15–20 строк
    // А постоянная прокрутка убивает продуктивность ¯\_(ツ)_/¯ 
}

Что тут можно посоветовать:

  • подключить внешний монитор, например использовать USB-C → HDMI — адаптер;
  • умное разделение экрана — код слева, документация справа (тут Galaxy Fold и им подобные раскладушки нам в помощь).

Но это или дорого, или убивает весь смысл мобильности. Такие дела.

Батарея и нагрев

Проведём реальный эксперимент с разными задачами и посмотрим, что происходит с расходом батарейки:

# Мониторим потребление энергии в Termux
termux-battery-status

И вот результаты при разных нагрузках:

  • обычный набор текста (когда мы сидим и кодим): 2–3% в час;
  • компиляция Python: 15–20% в час;
  • компиляция C++: 25–35% в час;
  • запуск эмулятора: 40–60% в час.

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

Но всё же кое-какие советы по энергосбережению тут можно дать. Например, ограничить количество ядер, которые будут использоваться при работе:

# Плохо: компиляция в основном потоке
def compile_project():
    # Телефон быстро нагреется
    subprocess.run(['make', '-j8'])   8 потоков!

# Лучше: ограничиваем ресурсы
def compile_project_smart():
    # Используем только 2 ядра и понижаем приоритет
    subprocess.run(['make', '-j2', 'nice', '-n', '10'])

Когда телефон действительно не справляется (и справляется)

Будем реалистами: смартфон пока не станет основным устройством для программирования, если у вас совпадает хотя бы один пункт:

  • проекты на C++ более 10 000 строк кода;  
  • тяжёлые базы данных — PostgreSQL, MongoDB;
  • машинное обучение с большими моделями;
  • многомодульные java-проекты;
  • виртуализация и контейнеризация;
  • параллельные вычисления.

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

  • экстренные правки в коде;
  • изучение новых технологий;
  • прототипирование и идеи;
  • фронтенд-разработка;
  • скрипты автоматизации;
  • работа с API;

А ещё можно ориентироваться на такое: если ваш проект компилируется дольше пяти минут на ноутбуке — не пытайтесь сделать это на телефоне (или попробуйте и сами поймёте, почему это плохая идея). Лучше в этом случае использовать подключение к удалённым ресурсам или CI/CD.

Workflow и продуктивность: как организовать процесс разработки

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

Git и контроль версий: мобильные клиенты и веб-интерфейсы

Самый простой вариант — это использовать Termux + командную строку: там можно использовать Git так же, как на компьютере:

# Устанавливаем Git
pkg install git

# Настраиваем (аналогично десктопу)
git config --global user.name "Ваше Имя"
git config --global user.email "your@email.com"

# Клонируем репозиторий
git clone https://github.com/username/repo.git

# Стандартный рабочий процесс
git add .
git commit -m "Реализована новая функция"
git push origin main

Второй способ — поставить приложения с GUI для работы с Git: MGit (Android) или Working Copy (iOS). Ну и веб-интерфейсы тоже никто не отменял, потому что иногда действительно проще использовать браузер, чем что-то устанавливать дополнительно.

Отладка и тестирование

Сразу скажем: отлаживать код на телефоне можно.

Если занимаетесь фронтендом, то заниматься JavaScript-отладкой получится прямо в мобильном браузере:

// Вместо console.log используем более продвинутые методы
function problematicFunction(data) {
    debugger; // Остановка в мобильном Chrome DevTools
    
    try {
        const result = processData(data);
        return result;
    } catch (error) {
        // Подробное логирование
        console.error('Ошибка в problematicFunction:', {
            error: error.message,
            stack: error.stack,
            input: data
        });
        throw error;
    }
}

// Включаем удалённую отладку:
// chrome://inspect → Devices → ваш телефон

А вот как выглядит python-отладка в Termux:

# Устанавливаем отладчик
pip install ipdb

# Используем в коде
import ipdb

def complex_calculation(x, y):
    result = x  y
    ipdb.set_trace()  # Точка останова
    return result  2

# Альтернатива — встроенный pdb
import pdb; pdb.set_trace()

Ещё есть мобильные IDE с отладкой:

  • AIDE — отладка Java/Kotlin с точками останова;
  • Pydroid 3 — отладка Python с визуальным интерфейсом;
  • Dcoder — отладка для разных языков, но иногда не позволяет сделать какие-то вещи.

Эффективный поиск в коде

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

# В Termux используем grep для поиска
grep -r "function_name" src/

# Или используем silver searcher (более быстрый)
pkg install silversearcher-ag
ag "function_name" src/

# Для сложных шаблонов - ripgrep
pkg install ripgrep
rg "function_.\(.\)" src/

Код-ревью и общение с командой

Скажем сразу: ревью кода на маленьком экране — это больно. Лучше использовать специализированные приложения или GitHub Mobile, где есть удобное ревью с одобрением/отклонением реквестов.

Сколько дополнительного времени займёт разработка на смартфоне

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

ЗадачаНоутбук (мин.)Смартфон (мин.)Разница 
Написание функции (50 строк)1525+67%
Отладка ошибки1020+100%
Настройка окружения515+200%
Ревью кода (200 строк)1025+150%
Рефакторинг2045+125%

Почему так происходит:

  1. Медленный ввод — мы использовали только виртуальную клавиатуру, чтобы полностью соответствовать эксперименту.
  2. Постоянное переключение контекста, когда из-за маленького экрана постоянно приходилось переключаться на браузер и файлы с доками.
  3. Утомляемость глаз, пальцев и мозга, который просто разрывается от нестандартности ситуации.

Резюме и выводы по организации рабочего процесса

✅ Что работает хорошо:

  • несложные правки и рефакторинг;
  • экстренные фиксы в дороге;
  • изучение новых технологий;
  • code review простых изменений.

❌ Что лучше оставить для компьютера:

  • сложные мердж-конфликты;
  • написание большого объёма кода;
  • отладка сложных многопоточных ошибок;
  • работа с несколькими репозиториями одновременно.

Вам слово

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

Обложка:

Алексей Сухов

Корректор:

Александр Зубов

Вёрстка:

Егор Степанов

Соцсети:

Юлия Зубарева

Вам может быть интересно