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

1. Прочтите проблему несколько раз, пока не сможете объяснить ее кому-нибудь еще.

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

2. Решите проблему вручную.

Ничего нельзя автоматизировать, чего нельзя сделать вручную!

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

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

3. Сделайте ваше ручное решение лучше

Теперь посмотрите, сможете ли вы улучшить свой процесс, есть ли более простой способ сделать это или есть некоторые шаги, которые вы можете сократить, чтобы упростить его (например, циклы). Этот шаг очень важен - помните, что гораздо проще реконструировать процесс в голове, чем в коде.

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

4. Напишите псевдокод

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

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

Вот как это может выглядеть для «square (n)»:

Теперь, когда мы точно знаем, что должен делать наш код, у нас есть еще один шаг… вы можете догадаться, что это такое?

5. Замените псевдокод реальным кодом.

А вот и самое интересное. Теперь, когда вы точно знаете, что должна делать ваша программа, просто напишите код и протестируйте его. Помните, вы всегда можете улучшить свой код в процессе.

Давайте посмотрим, как мы это сделаем, на нашем квадратном примере:

Затем мы можем оптимизировать его:

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

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