4 простых шага, которые решат любую проблему при разработке ПО

В разработке ПО требуются не только навыки программирования, но и умение фиксить. Разбираемся, что делать при возникновении проблем.

Поиск проблем при разработке ПО

Для решения проблем, которые появляются при разработке ПО, можно выделить четыре этапа:

  • Определение проблемы.
  • Сбор информации.
  • Поиск потенциального решения.
  • Проверка решения.

Определение проблемы

Если мы говорим о затруднении, возникшем при разработке ПО, будем подразумевать проблему любого масштаба:

  • Вы делаете что-то очень специфическое и не можете заставить часть кода работать так, как вы хотите.
  • Отладчик выдает странные ошибки, вы понятия не имеете что может быть не так.
  • Вы пытаетесь разобраться со старым кодом, о принципах работы которого знал только разработчик, который давно уволился.
  • Вы видите приложение в целом, но не представляете, как должна происходить разработка в деталях, не можете увидеть компоненты приложения по отдельности.
  • Вы решаете, какой набор фреймворков/программ использовать для разработки проекта, но не можете выбрать лучший.
  • Вы знаете, что есть функция, которая может сделать то, что вам нужно, но не можете вспомнить как она называется.

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

Даже в особо тяжелом случае, попробуйте сформулировать проблему более точно, задав себе наводящие вопросы:

  • Что я пытаюсь сделать?
  • Что я уже сделал?
  • Что по моему мнению должна делать программа?
  • Что она на самом деле делает?

Сбор информации

Иногда люди пропускают первый этап и сразу переходят ко второму:

  • Ищут решение на StackOverflow.
  • Копируют решения со Стека или какой-либо литературы, не понимая, что делает этот код.

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

Что еще должно быть в вашем наборе для решения проблем? Подумайте о той информации, которую вы ищете:

  • Если вы точно знаете, какую функцию, класс или метод API вы используете, сначала посмотрите, что пишут в соответствующей документации, чтобы понять, правильно ли вы это делаете.
  • Если у вас возникли проблемы при использовании ПО с открытым кодом, загляните в исходники и посмотрите, как описана проблемная функция: возможно, вы все-таки используете ее неправильно.
  • Чтобы получить общее представление о новой библиотеке или фреймворке, найдите подходящий туториал/краткое руководство.
  • Если вы не понимаете, почему часть кода написана конкретным образом, попробуйте заглянуть в историю коммитов – прошлые изменения или комментарии могут прояснить картину.
  • И, конечно, гуглите. Иногда вы точно знаете, что вам нужно, но не можете сформулировать это в виде названия метода или функции, либо не можете вспомнить какие точно они принимают аргументы. В такой ситуации поисковик может оказаться лучшим решением, которое даст необходимую подсказку.

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

Поиск потенциального решения

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

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

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

Проверка решения

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

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

На основе тестов существует целый подход к разработке – разработка ПО через тестирование. Под каждое изменение, которое планируется в проекте, сначала пишется тест, который покрывает возможные сценарии работы программы.

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ