Во-первых, поздравляю меня! Если вы читаете это, это означает, что моя статья действительно попала в топ результатов чрезвычайно популярного поиска Google «как стать хорошим программистом». С учетом сказанного, давайте начнем с моего первого пункта.

Не тратьте слишком много времени на чтение подобных статей.

Я не говорю, что мнения и советы людей не имеют значения, но многие из этих статей имеют привкус «следуй этим простым приемам, чтобы стать хорошим программистом». Подобные сообщения уже программируют вас (хе-хе) на неправильное отношение к изучению этого захватывающего навыка. Реальность такова, что, как я только что упомянул, программирование — это навык, а для его развития требуется много времени и усилий. Думайте о том, что оставшаяся часть этой статьи является советом о том, какой тип мышления должен быть. Тяжелая работа все еще на вас (и это хорошо!)

Ручка и бумага — твой друг

Привлекательность взлома кода и удара по клавиатуре всегда очень заманчива. Обычно может показаться пустой тратой времени сначала излагать свои идеи на бумаге. Или, может быть, у вас есть предвзятое мнение, что все, что вы делаете, не настолько сложно, чтобы оправдать блокнот. Обе эти точки зрения не могут быть далеки от истины. Написание некоторого псевдокода или просто набросок вашей логики для любого алгоритма/процесса может иметь очень большое значение. Такой взгляд похож на известную поговорку «семь раз отмерь, один раз отрежь». Кроме того, раннее формирование этой привычки поможет вам подготовиться к тем дням, когда сложность написанного вами кода потребует времени на подготовку.

Ограничьте количество кода, который вы ищете/копируете

Это БОЛЬШОЕ для меня. Теперь, прежде чем я продолжу, я хочу подчеркнуть, что я говорю о поиске того, как выполнить какую-то задачу, которая у вас есть. Я не говорю о поиске информации о синтаксисе. Поиск синтаксиса абсолютно необходим, потому что он может быть неинтуитивным, особенно в начале. Кроме того, вы не писали на этом языке программирования, который вы используете, откуда вы должны знать синтаксис? Я признаю, что когда дело доходило до того, как писать алгоритмы или решать проблемы, у меня была крайняя политика никогда не искать это. Оглядываясь назад, я не обязательно согласен с такой строгостью, но я все еще думаю, что дать себе время критически подумать и что-то понять — это неоценимая инвестиция в себя. Сначала честно попробуйте решить проблему самостоятельно, а затем, если вы действительно не можете ее решить, посмотрите, как это сделать. Скорее всего, поскольку вы какое-то время были по колено в этой проблеме, вы намного лучше будете следовать решению и действительно извлечете из него уроки.

Не копируйте и не вставляйте собственные работы

Ладно, я знаю, что ты думаешь. Выше я только что сказал вам ограничить копирование чужих работ, а теперь я говорю вам не копировать даже свои!? Ну да. На самом деле по очень конкретной причине, которую я называю синдромом «все проблемы одинаковы». Научиться программировать сложно, и часто каждый успешно написанный фрагмент кода кажется шедевром. Написание и исправление заняло много времени, так почему бы не попробовать использовать этот код в будущем, верно? Неправильный! (Ну иногда). Этот шедевральный код, который у вас есть, вероятно, недостаточно похож на этот новый фрагмент кода, который вам нужно написать, но вы очень-очень надеетесь, что это так. Настолько, что вы будете настаивать, если вы измените несколько вещей в нем, это будет код, который вам нужен, и он решит эту новую проблему. Это опасная игра! Единственный способ всегда побеждать — никогда не копировать свои собственные вещи. Просто потерпите, и со временем станет очевидно, когда код действительно можно будет использовать повторно и немного подправить.

Код требует того, что требует код

Одна тенденция, которую я начал замечать среди людей, изучающих программирование, заключалась в том, что любую проблему можно было решить с помощью цикла for ИЛИ оператора if. Обобщая это, люди часто думают, что код требует только нескольких простых инструментов, связанных вместе, и что-то слишком сложное не должно быть ответом. Конечно, это не так, и если вашему коду нужны 3 вложенных цикла while, уже находящихся внутри цикла for, который был результатом оператора if... ну, это то, что ему нужно.

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