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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

admin
02 июля 2018

Разбираемся, как работают операционные системы

Linux, Windows, Mac OS? Зачем они нужны? Понимание того, как работают опера...