или: ошибки, которые я сделал, чтобы вам не пришлось

Ползучесть черт. Ошибки по очереди. Глупость кэширования. Ползучесть черт. Гит борется. Неправильная ссылка на курсоры. И я упоминал ползучесть функций?

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

Мой первый семестр компьютерных наук был отличным. Я взял (не)знаменитый CS50, сделал кучу крутых наборов задач и сделал аккуратный маленький финальный проект. Но, как и у любого новичка, у меня была своя доля проблем высокого и низкого уровня. В то время как CS50 научил меня тонне вещей, курс был больше посвящен обучению, чем предупреждению.

Итак, давайте перейдем к изучению из предупреждения!

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

Ползучесть

Или: Как перестать беспокоиться и отправить свой код

Без сомнения, расползание функций было самой большой проблемой высокого уровня (читай: концептуальной, а не технической), с которой я столкнулся. Короче говоря, расширение возможностей — это когда вы просто продолжаете добавлять в проект новые потрясающие функции. Хотя быть амбициозным — это здорово, оно теряет свое очарование, когда оставляет вас с наполовину готовым, наполовину законченным проектом, а не с полностью законченным проектом с меньшим количеством функций.

Однако это не должно препятствовать вашим амбициям: запишите свои идеи на стикере, запишите их в Evernote или (мой личный фаворит) сделайте для этого доску Trello. Я включил образец, который я только что сделал ниже, но я призываю вас создать тот, который подходит для вашего личного рабочего процесса. Это может показаться излишеством, но оно держит вас (и ваши идеи) под контролем.

На самом деле это что-то вроде тропа в мире технологий: сосредоточьтесь и продолжайте поставку. Серьезно, даже Цук так говорит!

Не сдавайтесь. Как только вы составите план, придерживайтесь его. Не перемещайте ничего из категории «будущие» в категорию «следующая версия», пока список функций не станет пустым и ваш код не будет работать, чтобы делать что-то — даже если это что-то не является окончательной версией Ваша программа во всей красе. (Нет ничего постыдного в том, чтобы продвигать версию 0.1: Рим не за один день строился, и, по всей вероятности, проект вашей мечты тоже не будет.)

В самом начале это может показаться излишним: вам не нужна доска Trello, чтобы написать программу hello world. По мере того, как вы начинаете выполнять больше работы в свободной форме и — смею предположить — создавать собственные проекты, налаженный рабочий процесс может творить чудеса.

У вас появилась блестящая идея из ниоткуда? Здорово. Запишите это, а затем забудьте об этом, пока не закончите свой немедленный список дел.

Опасность, Уилл Робинсон

Или: Как реагировать на технические проблемы

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

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

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

С программированием вы обязательно окажетесь в тупике. Неважно, новичок вы или эксперт: все иногда заходят в тупик. (Однако вы, вероятно, научитесь лучше решать проблемы. Просто продолжайте в том же духе и посмотрите.)

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

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

Проще сказать, чем сделать? Неа.

Что-то удивительное, что я обнаружил, когда боролся с кодом, — это гостеприимная атмосфера и общая необъятность сообществ программистов. Существуют целые веб-сайты, посвященные обмену опытом, кодом и советами. Больше, чем в любой другой области, которую я видел, другие программисты хотят, чтобы вы — да, вы — преуспели и написали отличный код. Протяните руку, и вы будете вознаграждены.

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

Это подводит меня к важному предостережению: то, что вы можете использовать Google (или StackOverflow) для решения проблемы, не означает, что вы должны.

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

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

Если вы в конечном итоге используете внешние ресурсы (друзья, интернет и т. д.), это совершенно нормально: просто не следуйте советам и не копируйте код, который не имеет для вас смысла. Вы просто обманываете себя и откладываете реальную концептуальную проблему. рекомендую пройти через

И вам не должно быть стыдно столкнуться с концептуальной проблемой, потому что проблема является проблемой только в том случае, если вы в ней не разбираетесь. (P.S. Вы вполне можете. В прошлом семестре я много чувствовал себя глупо, но я справился на «отлично».)

Подведение итогов

Обучение программированию было одним из самых веселых и интересных занятий, которыми я занимался за последние несколько лет. Я провел часы за часами, разочаровываясь в своем коде и, соответственно, в себе. Иногда, когда вы находите решение, вы чувствуете себя глупо, а иногда вы чувствуете себя самым умным человеком на земле. В сети писать код — прекрасное чувство.

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

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