Как научиться писать код
Перейти к содержимому

Как научиться писать код

  • автор:

5 способов быстрее научиться программировать

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

Обложка поста 5 способов быстрее научиться программировать

Изучение программирования — не то, чем можно заниматься между делом. Но не нужно тратить всю жизнь, чтобы понять основы. Есть множество способов облегчить себе обучение.

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

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

1. Изучайте примеры кода

Говоря о чтении, мы обычно подразумеваем чтение слов на странице, но программирование — это про чтение кода. Когда вы только учитесь программировать, вы должны изучать и пытаться понять каждый пример. Можно даже сперва читать и пытаться понять примеры кода, а уже потом читать текст. Это не всегда срабатывает, но зато учит смотреть код внимательно и вникать в каждую деталь.

2. Не просто читайте примеры кода — запускайте их!

Когда вы читаете обучающее руководство или учебник, легко посмотреть на пример и сказать: «Я понял, я понял. Да, в этом есть смысл». Конечно, вы могли понять его, но вы не знаете наверняка действительно ли вы поняли его правильно. Есть лишь один способ выяснить — сделать что-то с кодом.

Если вы до сих пор не сделали этого, установите среду разработки (IDE), которая поддерживает ваш язык программирования.

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

Теперь скомпилируйте и запустите код. Убедитесь, что он делает именно то, что должен.

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

3. Начните писать свой код как можно раньше

Как только вы что-то поймёте про язык — даже если от него у вас уже кружится голова — начните писать программы на нём. Иногда трудно найти идеи для программ. Это нормально, в самом начале вам не надо придумывать свою идею.

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

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

4. Научитесь использовать отладчик

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

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

Первое время исправление ошибок с отладчиком будет занимать много времени. Но по мере того, как количество ошибок в вашем коде будет расти, отладчик начнёт экономить уйму вашего времени. А количество ошибок, поверьте, будет измеряться десятками.

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

5. Ищите больше источников

Если вы что-то не понимаете, в первую очередь посмотрите альтернативные объяснения — интернет полон информации о программировании. Мы все воспринимаем новую информацию по-разному: может быть, вам для понимания нужны картинки, а кому-то другому — подробные инструкции или множество книг с детальными объяснениями.

Но если это не работает, то лучший способ разобраться с проблемой — спросить кого-то другого. Однако, если вы скажете «я не понимаю, пожалуйста, объясни», то, скорее всего, получите в ответ ссылку на тот же текст, который вы не поняли. Вместо этого, своими словами перескажите, как вы поняли текст. Чем больше вопрос раскрывает ваши мысли, тем легче будет знающему эксперту ответить на него. Программисты иногда кажутся раздражительными при ответе на вопросы. Но причина скорее в том, что они хотят продвинуться в диалоге, а это требует усилий от обеих сторон. Если вы зададите умный, подробный вопрос, который продемонстрирует, что вы думаете, то получите хорошие результаты.

На основе статьи «5 Ways To Learn Programming Faster».

Как правильно изучать программирование и начать писать код

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

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

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

Лучше всего учиться по тщательно составленным и продуманным курсам с тестовыми заданиями и возможностью общения с преподавателями. Можем порекомендовать пройти обучение в ITEA – https://itea.ua/courses-itea/python-dev/python-advanced/ программированию на Python.

Обучение программированию на Python

Минимум знаний

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

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

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

Теория и практика

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

Все знания мы можем разделить на две части – теория и практика. Вы не можете написать практику, если у вас нет теории. Поэтому очень важным моментом является то какую теорию вы изучаете и какие теоретические материалы вы впитываете.

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

Например, в первом случае вам говорят сделать бота для Telegram, который будет искать и показывать новости, релевантные запросу пользователя. А во втором случае вам предлагают написать функцию, которая принимает какие-то переменные и рассчитывает какой-то результат.

Пример хорошего практического задания

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

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

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

Языки программирования

Не рекомендуем начинать изучение программирования со сложных языков, таких как C++ или PHP, так как это довольно объемный пласт, на освоение которого уйдут годы, если вы еще очень упорны и дойдете до конца.

Исключение составляют случаи, когда вы точно знаете, чего хотите. Например, для создания игр и сложных приложений вам все равно придется учить C++. А вот в веб-разработку можно войти более плавно, начинайте с HTML и CSS – это просто и осилит каждый, уже через несколько месяцев вы сможете реально что-то зарабатывать.

Когда верстка пойдет на автомате, в какой-то момент от вас наверняка потребуют использовать Java Script, его изучение также не является сложной задачей – это повысит вашу квалификацию и доход. Затем можно перейти к PHP – зная фронтенд, гораздо проще будет освоить бэкенд. А это уже совсем другой уровень и другие деньги, так как это настоящий мощный язык программирования, в отличие от предыдущих довольно примитивных и узко прикладных языков разметки и скриптов.

Довольно универсальным и сравнительно простым является язык Python.

Преимущества языка Python

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

Где используется Python

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

Как правильно писать код?

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

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

Итак основные идеи, которые могут помочь писать код лучше

Имей идею

В любой вашей реализации должна быть идея, это как линия которая проходит через всю функциональность и связывает ее воедино. До того как сесть что-то писать, вы должны более менее представлять как это все будет работать, какие есть блоки, как они друг с другом взаимодействуют. Не садитесь писать просто так, придумайте концепцию, так и интереснее и зачастую результирующий код станет понятнее. Естественно уже придумав что-то стоит максимально оставаться в рамках этой концепции, не стоит менять все при первых проблемах, проблемы будут всегда. Также не стоит лениться и со словами, “да ладно и так затащит” втыкать какуюто затычку. Это к добру не приведет.

Идеала нет

А хочется конечно, чтоб он был, но его в 99.(9)% нет. Не стоит пытаться сделать код идеальным, получится еще хуже потратится намного больше времени. Это просто борьба с ветряными мельницами, все же нам платят за то что наше приложение работает а на за то, как оно шикарно написано. Часто поиски идеала приводят к постоянным сменам концепций, бесконечным переписыванием одного и того же, в конечном итоге надоедает, человек все бросает, затыкает все затычкам и “да ладно и так затащит”. Должно быть хорошо и удобно, идеал это не удел инженеров это удел поэтов, а программисты все таки инженеры.

Сохраняй фокус

Одной из основных проблем особенно у новичков является копание в деталях. Надо фокусироваться на 1 задаче в единицу времени. Что я хочу сказать, вы пишете какую-то функцию, натыкаетесь на какой-то не простой момент с которым надо разобраться. В большинстве случаев вы знаете, что эта проблема решается 100%, но не знаете как. Если переключиться на ее решение, вы собьетесь с фокуса текущей проблемы, потом для того, чтоб вернуться придется потратить время, переключение контекста никогда не было бесплатной операцией. Эта идея так же распространяется на детали реализации. Предположим вам надо написать функцию которая читает какие-то данные из базы и записывает их в файл. Вот то и есть вашим контекстом. Решите эту проблему потом решайте остальные (тоесть чтение из базы и запись в файл). Изначально мы пишем следующее:

 var data = Read(); Write(data); 

и генерируем 2 заглушки для Read и Write, благо вижуал студия имеет магическую комбинацию клавиш alt+shift+f10, которую я прожимаю чаще всего (перебиндить ее на f1, просто f1 вместо поиска, мешает только то что это надо делать у всех). Что нам дает такой подход. Во-первых, мы пишем быстрее ибо остаемся в контексте. Во вторых мы пишем лучше ибо в один момент решаем одну задачу, да, ошибок будет меньше. В третьих мы получаем лучше код, он изначально формируется правильно. Функции называются правильно и по контексту, они получаются маленькие и простые. На мой взгляд это самая важная практика из всех перечисленных здесь.

Чувствуй запах

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

Лучше безобразно но единообразно

Выработайте свою систему именования переменных, функций и тп. старайтесь ее максимально придерживаться. Я вот например возвращаемое значение функции всегда называю result, может это не правильно и не отражает смысл, отсылка во времена делфи, но я так делаю и мне это нравится, мне так удобно. Также я всегда использую var никогда не использую явное типизирование (ну только когда выхода нет). Я так же стремлюсь всегда давать очень короткие имена переменным i,d,v,k для меня не проблема, ибо функции маленькие все понятно из контекста. Зачем писать currentNode если можно написать просто n и при это все равно все ясно? Более того, длинные имена переменных часто только усложняю изложение. Про стандарты кодирования я тут молчу это другая тема, их просто надо придерживаться.

Что? Где? Когда?

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

Будьте проще и люди к вам потянутся

Шаблоны проектирования, иерархии классов, элементы функционального программирования это все замечательные вещи. Однако стоит по возможности стараться все делать как можно проще. Чем проще код, тем он понятнее и тем легче его сопровождать. Глубокие иерархии классов очень сложно поддерживать и понимать. Зачастую наследования вообще стоит избегать, старайтесь заменять его реализацией интерфейсов. Шаблоны проектирования тоже дают великолепные решения, но подумайте, может стоит все сделать просто? Возможно оно так будет понятнее? Зачастую так оно и есть.

И на последок еще несколько замечаний

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

Я здесь умышленно не привожу примеры кода, сейчас я пишу на C# (как пытливый читатель уже наверно догадался), но дело в том, что не существует принципиальных отличий в написании кода на PHP, C++, Delphi, C# и тп. даже на сильно отличающихся языках (например функциональных).

Хочу отметить, что простое прочтение каких-то правил и советов ничего не дает, надо отрабатывать. И вот это последняя мысль которую я хочу выразить. Не пишете просто код, всегда отрабатывайте и улучшайте свои навыки. “Сейчас просто напишу, а дома на кошках потренируюсь” ничего вам не даст совершенно. Можно было бы еще продолжить и расширить мой список, но я считаю изложенные моменты основными.

# 1 Обмани мозг с правилом 20 минут.

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

Но проблема в том, где найти на это время? Между работой на полную ставку, проведением времени с семьей и с друзьями? Когда вы должны практиковать это «ежедневное кодирование»?

Пока я работал врачом, я проводил около 12 часов в больнице, 1 час в пути и примерно 2 часа на повседневных вещах, таких как еда. Так что у меня осталось всего 9 часов. Теоретически, 2 часа можно выделить на практику программирования и 7 часов на сон. Но нет ничего сложнее, чем попытаться убедить свой насыщенный работой мозг сесть и учиться, поэтому я выбирал смотреть «Игру престолов» с попкорном или мороженным.

Но потом я нашел трюк. У людей много инерции. Это может быть как плохо для нас («24» бокс-сет) так и хорошо, мы также можем использовать это в своих интересах. Я обнаружил, что как только я начал программировать, я настолько погружался в проект, что больше не заботился о (Netflix & Chill), еде или сне. Было довольно много выходных, когда я программировал до рассвета.

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

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

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

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

# 2 Программируй для цели.

Когда я впервые начал изучать, как кодировать, было много раз, когда я начинал, а потом снова и снова сдавался. Это обычная история среди программистов-самоучек. Многие новички начинают изучать код, выбирая произвольный язык, и следуют куче уроков. Копирование кода, строка за строкой, иногда написание кода для обработки простых чисел, в других случаях для поиска всех четных чисел. Но вы знаете, что? Я могу найти простые числа намного быстрее с помощью Google, и выбор четных чисел на самом деле не так уж интересен.

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

Это то, что мотивирует большинство людей. Творение. Поэтому я призываю вас начать учиться программировать, следуя учебному пособию, которое делает что-то, что угодно. Конечно, маловероятно, что в начале вы сможете программировать Clash of Clans или League of Legends. Но вы сможете сделать что-то интересное. Это может быть игра в кости или приложение для флэш-карт. Но до тех пор, пока в конце урока вы не сделаете что-то, что сможете использовать и/или поиграть, у вас будет гораздо больше мотивации дописать код до конца.

Я советую придумать простое приложение, которое вы хотите сделать. То, что использует навыки, которые вы приобрели в ходе учебы.

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

# 3 Нет «идеального» языка для изучения.

Меня часто спрашивают: «Какой язык программирования я должен начать изучать первым»? Существует распространенное мнение, что где-то есть идеальный язык для начинающих программистов. Некоторые утверждают, что это Python, другие говорят, что это Swift.
Но я считаю что это не важно.

Язык программирования — это просто инструмент. Он ничем не отличается от любого другого инструмента в вашей аппаратной коробке. Если вы хотите забить гвоздь, вы должны использовать молоток. Если вы хотите починить свои водопроводные трубы, вам, вероятно, понадобится гаечный ключ. Да, можно забить гвоздь, используя боковую часть гаечного ключа, и один и тот же язык программирования можно использовать для решения различных типов задач. Плотник скажет вам, что его любимый инструмент — молоток, а сантехник скажет, что это гаечный ключ, но он все еще не делает его «лучшим инструментом для починки».
Веб-разработчик скажет вам, что JavaScript — лучший язык для начинающих. Статистик сообщит вам, что вам лучше подойдет язык программирования это R. Но, в конце концов, все, что имеет значение, это то, что вы пытаетесь сделать с помощью своего инструмента. Если вы хотите создавать приложения для iOS, то изучите Swift. Если вы хотите делать сайты, вам понадобится JavaScript. Но хорошая новость заключается в том, что основные концепции программирования: циклы, условные выражения, функции и т. Д. Все они одинаковы. Разница в основном синтаксическая. На английском языке у нас есть ‘Werewolves’, (Оборотни) на немецком языке — ‘Werwölfe’. Это все то же самое млекопитающее, которое разрывает рубашку, которое появляется в полнолуние, просто пишется по-другому.


консоль в Swift:
print(“Hello Werewolves”)
консоль в Java:
println(“Hello Werwölfe”)

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

# 4 Понимайте, что вы пишете.

У меня есть проблема с тем, как написаны большинство учебников по программированию. Существует слишком много учебных пособий, которые похожи на учебники по рисованию (смотри — копируй).

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

Это приводит к ряду проблем. Наиболее распространенная проблема — это студент, который просто копирует код из учебника и не имеет ни малейшего представления о том, что он делает. Почему он добавил эту дополнительную строку после анализа JSON? Почему он делает этот Array (Массив) отличным от предыдущего?

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

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

В море много рыбы.

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

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

# 5 Не знать — это нормально.

Предполагается, что разработчики программного обеспечения — это профессия, которая имеет наибольшую популяцию страдающих ( Imposter syndrome). Синдром Самозванца — это психологический феномен, когда люди чувствуют себя обманщиками и в значительной степени недооценивают свои собственные навыки и способности.

Программисты склонны к самокритичности и постоянно чувствуют, что все остальные лучше программируют, чем они. Если вы когда-либо чувствовали себя так, вы не одиноки, как показывают исследования, у 70% людей так называемый синдром самозванца.
Недавно я увидел вопрос на сайте Q & A Quora, в котором кто-то спросил: «Меня уволят из Google (или из другой крупной технической фирмы, если меня поймают за использованием StackOverflow в качестве информационного ресурса?»)

Он получил кучу действительно хороших ответов от инженеров, работающих в Google, Amazon и других крупных технологических компаниях. Любой, кто работал инженером-программистом, скажет вам, что поиск информации- одобрительно. На самом деле, я призываю вас найти одного программиста Google, который ни раз не использовал StackOverflow. (Если вы не знакомы, StackOverflow — это совместный сайт вопросов и ответов для программистов).

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

- (id)initWithBitmapDataPlanes:(unsigned char **)planes pixelsWide:(NSInteger)width pixelsHigh:(NSInteger)height bitsPerSample:(NSInteger)bps samplesPerPixel:(NSInteger)spp hasAlpha:(BOOL)alpha isPlanar:(BOOL)isPlanar colorSpaceName:(NSString *)colorSpaceName bitmapFormat:(NSBitmapFormat)bitmapFormat bytesPerRow:(NSInteger)rowBytes bitsPerPixel:(NSInteger)pixelBits;

Это почти 400 символов.

В программировании на iOS существует более 800 классов, 9000 методов и с каждым днем их становиться все больше больше. В веб-разработке каждую неделю появляется новый фреймворк. Никто не будет ожидать, что вы сможете запомнить код. Это точная причина, почему мы программисты, мы можем заставить компьютер делать скучные вещи для нас. Например, код для записи звука находится всего в нескольких шагах, зачем вам его запоминать?

Навык, который большинство работодателей ищут при наборе, — это способность мыслить. Знания ценятся в мире, где трудно найти информацию. В 1800-х годах только богатые имели доступ к хорошим книгам и хорошим учителям. Теперь у всех есть вся информация, которую они имели, и даже больше, одним нажатием мыши. Информация теряет ценность, способность думать — вот что самое важное и ценное. Так что не бойтесь искать, спрашивать в StackOverflow или находить ресурсы, которые помогут вам решить ваши проблемы. Лучшие программисты делают это.

Умение, которое вам нужно оттачивать, состоит в том, чтобы задавать хорошие вопросы и понимать ответ. В ответе StackOverflow нет никакого смысла копировать код, если вы не знаете, как работает этот код. Поскольку StackOverflow работает в системе репутации, в их интересах быть максимально четкими в своем ответе, чтобы пометить их как правильные и собрать положительные отзывы.

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

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

Другая причина, по которой вы должны начать с Google, заключается в том, что алгоритм поиска StackOverflow организует вопросы и ответы по времени, а не по популярности. Многие проблемы, с которыми вы столкнетесь, будут заданы несколько лет назад, но не смотря на это все еще пользуются огромной популярностью. Так что спрашивайте мудро, и вы будете пожинать плоды от сообщества. Однажды, когда вы сами станете мастером кода, вы вернетесь тому же сообществу и поможете программистам следующего поколения.

# 6 Подражайте.

В начале своего пути в программировании я думал, что прочитать целую кучу книг -это отличный способ научиться программировать. Я купил книги по C ++, C #, Java и так далее. Но они не сделали ничего, кроме того, как запутали меня еще больше.
Я читал. Я подчеркивал. Я забывал, Я засыпал.

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

Но как это сделать?

Не хватает идей? Будь подражателем. Сделайте свой собственный блокнот, сделайте свой собственный MSPaint, сделайте свое собственное пианино. Если вы увлекаетесь играми, сделайте minesweeper, сделайте Тетрис, сделайте Flappy Bird. Они не только будут полезны, но и предоставят вам прекрасную возможность выяснить, как действовать, и получить опыт в поиске информации. Если это что-то новое для мира, например голографические проекции смартфонов, никто не сможет вам помочь. Создавая подражающие приложения или программы, вы будете идти по пути, который многие прошли до вас. Таким образом вы максимизирует шансы, что кто-то сможет вам помочь, когда вы запутались.

# 7 Будте ответственными.

Самая большая проблема с онлайн-курсами по программированию — это отсутствие ответственности. Без сомнения, есть масса отличных открытых онлайн-курсов (MOOC), таких как Coursera, Udacity, Udemy, Skillshare. Но каковы последствия того, что вы не делаете домашнее задание или пропускаете месячные лекции? Никаких последствий. Никому нет дела.
Посмотрим правде в глаза, внутренняя мотивация не сильна ни в одном из нас. Мы всегда можем найти причину чтобы посмотреть сериалы на«Netflix». Я даже не могу сосчитать, сколько онлайн-курсов я купил и впоследствии не прослушал ни одной лекции или не закончил ни одной части курсовой работы.
Вам нужна ответственность и приверженность к обучению. Вспомните свои университетские времена, не потрудились бы закончить сочинение в 3 часа утра, если бы от этого ничего не зависело?
Поэтому необходимо особенно в самом начале найти кого-нибудь кто будет учится с вами (Study buddy). Поскольку по больше части эта система является полностью добровольной, существует определенная степень самоотбора людей, которые хорошо работают в командах и достаточно мотивированы.

Где же можно найти партнера по учебе? Есть много групп в Facebook, посвященных тем, кто учится программированию. Для этого есть целый (subreddit) субреддит (r / learnprogramming), я уверен, что вы найдете единомышленников где-нибудь в сети.

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

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

Последняя часть этого правила — попытаться найти верные способы оценки.

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

В Coursera есть система, в которой студенты отмечают работы друг друга. В App Brewery мы используем обучение на Github для проверки вашего кода и поиска ошибок и проблем с вашим кодом. Но если вы посещаете курс по программированию, в котором нет такой системы, то вам стоит найти наставника по коду, который сможет просмотреть ваш код и дать вам обратную связь. Только то, что измерено, может быть улучшено.

# 8 Продолжайте учиться.

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

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

Мир будет продолжать двигаться, и если вы останетесь в одном месте, вы в конце концов останетесь позади. Я знаю программистов, которые никогда не изучали ничего кроме Fortran. Я знаю программистов Objective-C, которые не могут убедить себя совершить скачок и изучить Swift, хотя Apple говорит разработчикам, что Objective-C скоро не будет актуальным. Все мы знаем, что Apple никогда не делает угроз, которые они не выполняют, просто посмотрите на оптический привод (и скоро на разъем для наушников?).

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

Вы веб-разработчик, который всегда хотел заняться разработкой мобильных приложений? Выберите платформу и изучите iOS или Android. Вы разработчик front-end, которого соблазняет full-stack ? Возьмите веб-разработку с Node. Если вы уже понимаете основные концепции программирования, подобрать еще несколько языков будет намного проще, чем начинать с нуля.

«Learn x in y minutes» — отличный ресурс для существующих программистов по изучению новых языков программирования. Ресурс: learnxinyminutes.com

# 9 Играйте в настольный футболл.

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

Да, Да. Не печатают. Просто смотрят. Много смотрят на экран.
В компании работники, как правило, жалуются, что программисты всегда играют в настольный футбол или занимаются чем-то другим, что не похоже на работу. Люди не понимают, но на самом деле они работают.

Другие люди могут не понимать, но иногда следует отдохнуть от своего кода и дать работе время и расстояние. Если у вас есть ошибка в коде, которую вы не можете устранить — поспите, поиграйте в настольный футбол, погуляйте. В 9 из 10 случаев решение станет очевидным. В оставшихся 1 из 10 случаев вам понадобиться внешняя помощь.

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

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

# 10 Найдите наставника.

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

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

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

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

Но где найти наставника?

Встречи, связанные с программированием, происходят практически в каждом городе мира. Пример: www.meetup.com

Посещайте встречи, знакомьтесь с людьми. Обменивайтесь своими знаниями и опытом. Может быть, кому-то нужен бухгалтер, а кому-то нужна юридическая консультация. Обменяйте время на время.
Не стоит спрашивать кого-нибудь: «Ты будешь моим наставником?». Никто не хочет тратить свое свободное время для какого-то незнакомца. Вместо этого предложите свою помощь в обмен на их помощь, и вы сможете найти наставника в 95% случаев.

# 11 Научитесь разбивать проблему на маленькие кусочки.

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

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

Поэтому создание робота, который делает все это автономно, действительно сложная задача. Но так как мы хорошие программисты, мы можем немного разобраться и решить проблему.
Роботу на самом деле не нужно знать, что такое тосты и что такое масло, мы не будем делать здесь Skynet, поэтому давайте просто придерживаться практических вещей. Робот должен сделать три вещи:
• 1. Поднять и расположить кусочки тоста в идеальное положение для намазывания.
• 2. Подобрать порцию сливочного масла.
• 3. Поместить масло на тост с приличным покрытием (это часть, которую я считаю наиболее сложной).

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

Очень важно уметь разделить проблему на маленькие кусочки.

# 12 Взломайте чужой код.

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

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

Вот почему в программировании существует правило, которое гласит: «никогда не копируйте код, который вы не понимаете». Итак, что вы должны делать, когда сталкиваетесь с блоком кода, который решает вашу проблему, но вы не знаете, как он работает? Разбейте проблему на кусочки.

• Шаг 1 — Скопируйте и вставьте код в вашу программу. (да, да, я знаю, я только что сказал не делать этого, но терпение, терпение…)
• Шаг 2 — Убедитесь, что ваша программа или приложение работает должным образом. То есть подтвердите, что блок кода действительно решил вашу проблему.
• Шаг 3 — Удалить копию и вставленный блок кода построчно.
• Шаг 4 — Каждый раз, когда вы удаляете строку, проверяйте, что было сломано. Приложение все еще работает? Какие коды ошибок?
• Шаг 5 — Даже если вы думаете, что знаете, что делает строка кода, все равно удалите ее. Самая важная задача для программиста — всегда проверять свои предположения относительно результата. Для программиста самое приятное чувство — для реального мира подтвердить свои предположения. Вы знаете, как приятно, когда ваш парень / девушка / муж / жена произносят эти волшебные три слова? “Ты был прав”. Это также, но лучше.
• Шаг 6 — Поменяйте местами несколько линий. Можно ли достичь той же функциональности с другим порядком линий? Почему они были написаны в том порядке, в котором они были написаны?

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

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

Итак, как вы можете использовать его, чтобы стать лучшим программистом? Допустим, вы хотите сделать клон Instagram. Но, к сожалению, вы не знаете, как это сделать. Таким образом, вы заходите на github.com и ищете «Instagram» или «приложение для фотографий».
Что-то будет написано на Swift / Objective-C / Java, которое вы можете скачать и посмотреть. Подумайте о структуре их программы. Посмотрите на все классы, константы, взаимодействие. Сделайте некоторые изменения в коде. Это все еще работает или вы сломали код? Почему он сломался? Задайте себе кучу вопросов, изучите через метод Сократа. Когда вы начнете добиваться хороших результатов, вы можете попробовать обратный инжиниринг. Найдите небольшой проект на GitHub, сделанный известным программистом, скачайте приложение. Запустите его и посмотрите все его функциональные возможности.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *