Я — ужасный программист :( Что с этим делать?

программирование, обучение, саморазвитиеЧто же делать, если вы плохой программист?
Источник: cehusers.blogspot.co.ke

Вам постоянно кажется, что вы плохой программист? Тогда мы написали эту статью для вас.


«Я программист и могу разобраться в таких вещах, как Google File System, MapReduce, цикл событий, распределённая память, NoSQL и других. Меня восхищает, как это всё работает! Но когда дело доходит написания кода, ничего не выходит! Например, я пытался работать с GoogleFS, но когда дело дошло до сокетов, а именно до управления множеством потоков и сокетов, я входил в ступор. И так почти во всём».


Узнали себя? Тогда эта статья для вас!


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

1. Вы не умеете делать debug

Если у вас не получается делать отладку программы, вам необходимо научиться отделять проблемные места в коде. Хорошо ознакомьтесь с выбранным языком программирования и его системой ошибок. Используйте в коде утверждения (assertions), чтобы находить ошибки до их возникновения. Научитесь пользоваться инструментами отладки, чтобы пошагово отслеживать работу программы. В первую очередь, вы должны понимать, как работает каждая строка вашего кода, а не копировать его просто так.

2. Вы не умеете хорошо проектировать программу

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

3. Вы не понимаете, как ваш код будет исполняться на компьютере

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

4. Вы не умеете работать с чужим кодом

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

5. Вы недостаточно усердны

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

6. Вы себя недооцениваете

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

7. Вы повторяете одни и те же ошибки

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

8. Вы не получаете удовольствие

Вы нашли решение сложной проблемы. Какая из радостей жизни для вас сопоставима с этим? Хотелось ли вам, например, после прочтения о GoogleFS поделиться с первым встречным о её прелестях? Если да, то, несомненно, вам стоит посвятить себя программированию. В противном же случае, вам придётся постоянно преступать через себя, чтобы хоть однажды стать пристойным программистом.

Предупреждаю!

Современное поколение имеет тенденцию к постоянному использованию чужих сниппетов, чужого кода. Интернет помогает не тратить время на проблемы, с которыми и без вас многие люди сталкиваются — можно просто скопировать чужое решение, однако я советую вам потратить хотя бы час на самостоятельное решение любого вопроса. Попробуйте ограничиться лишь несколькими документациями по языку или API. Это научит вас запоминать не саму проблему, а путь к её решению. Таким образом, в будущем вы не станете заложником собственной поверхностности.


Удачи в вашем упорстве!


По материалам www.proglib.io.