Гайд 12 Правил, чтобы научиться программировать

Пользователь
Статус
Оффлайн
Регистрация
14 Авг 2021
Сообщения
138
Реакции[?]
84
Поинты[?]
1K
Содержание:

1.Обманите свой мозг с помощью правила 20 минут
2. Код для определенной цели. У вас есть проект
3. Не существует “идеального языка для изучения”.
4. Поймите, что вы пишете
5. Это нормально - не знать
6. Будьте подражателем
7. Будьте ответственным
8. Продолжайте Учиться
9. Играйте в настольный футбол
10. Найдите наставника - Попробуйте парное программирование
11. Заведите привычку разбивать на куски
12. Взломайте чужой код

1. Обмани свой мозг с помощью Правила 20 минут.

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

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


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

Но потом я нашел хитрость.
Как люди, мы обладаем большой инертностью. Это может быть плохо для нас - я смотрю на тебя, бокс-сет “24". Однако мы также можем обратить это в нашу пользу.

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

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

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

2. Код для определенной цели

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

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

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


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

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

3. Не существует “Идеального языка для изучения”.

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

Но я говорю, что все они ошибаются.

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

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

Печать на консоль в Swift:

print(“Привет, оборотни”)

Печать на консоль на Java:

println(“Привет, Вервольфе”)

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

4. Поймите, Что Вы Пишете

У меня проблема с тем, как написано большинство учебных пособий по программированию. Существует слишком много учебных пособий, в которых вы видите феномен “вот как вы рисуете сову".

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

Очень легко погрузиться по колено в один из этих типов учебных пособий, потому что он обещает научить вас, как создавать “Flappy Bird” или “Candy Crush". Но на двух третях пути ничего из того, что вы печатаете, не имеет смысла, и вы начинаете видеть красный цвет по всему экрану. Ошибки. Их целая куча. Почему? Без понятия. Ничто не бежит. Последние 3 часа были потрачены на копирование кода, и вы ничему не научились, кроме, может быть, того, что кодирование отстой.


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

В море полно рыбы.

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

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

5. Это нормально - Не знать

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

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

Недавно я увидел сообщение на сайте вопросов и ответов Quora, где кто-то спросил: “Уволят ли меня в Google (или другую крупную технологическую фирму, если меня поймают на использовании StackOverflow в качестве ссылки?”

Он получил кучу действительно отличных ответов от инженеров, работающих в Google, Amazon и других крупных технологических компаниях. Любой, кто работал инженером-программистом, скажет вам, что не смотреть на ссылки гораздо более неодобрительно. На самом деле, я призываю вас найти хоть одного программиста Google, который не использовал переполнение стека. (Если вы не знакомы, 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 всякий раз, когда вы застреваете. Первым вариантом всегда должна быть попытка разобраться в этом самостоятельно. Таким образом, ваша программа делает не то, что вы ожидали, но до того, как я набрал последние 3 строки кода, она работала нормально. Итак, давайте выясним, что в этих последних 3 строках сломало мое приложение?

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

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

6. Будьте подражателем

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

Я читал. Я выделил. Я забыл. Я заснул.

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

Но что вы делаете?

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

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

Самая большая проблема с онлайн-курсами программирования - это отсутствие подотчетности. Без сомнения, существует множество отличных Массовых Открытых онлайн-курсов (MOOC), таких как Coursera, Udacity, Udemy, Skillshare. Но каковы последствия невыполнения домашней работы или пропуска месячных лекций? Ничего. Никого это не волнует.

Давайте посмотрим правде в глаза, внутренняя мотивация не сильна ни в одном из нас. Мы всегда можем найти причину, по которой мы заслуживаем “Netflix и расслабься". Я даже не могу сосчитать, на сколько онлайн-курсов я записался, а впоследствии не прослушал ни одной лекции и не выполнил ни одной курсовой работы.

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

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

Так что, если вы не на нашем курсе, тогда найдите свой собственный. Существует множество групп в Facebook, посвященных тем, кто учится программировать. Этому посвящен целый субреддит (r / learnprogramming), я уверен, что вы найдете единомышленников где-нибудь в Интернете или в автономном режиме.

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

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

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


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

Быть хорошим программистом - это все равно что быть Мадонной.

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

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

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


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

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

9. Играйте в футбол

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

11. Заведите привычку разбивать на куски

Итак, у вас есть потрясающая идея приложения. Но это слишком сложно для вашего нынешнего уровня мастерства. Что ты делаешь? Вы присоединяетесь к Чунцинскому экспрессу.

Нет, я не говорю об артхаусном фильме. Я говорю о том, чтобы решить вашу проблему с программированием.

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

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

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

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


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

Поэтому в следующий раз, когда вы попытаетесь сделать это “нечто среднее между Snapchat и Evernote”, не забудьте разбить проблему на решаемые части.

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

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

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

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


Шаг 1 - Скопируйте и вставьте код в свою программу. (да, да, я знаю, что только что сказал не делать этого, терпение, терпение).
Шаг 2 - Убедитесь, что ваша программа или приложение работают должным образом. Т.е. подтвердите, что блок кода действительно решил вашу проблему.
Шаг 3 - Удалите скопированный и вставленный блок кода строка за строкой.
Шаг 4 - Каждый раз, когда вы удаляете строку, проверяйте, что было нарушено. Приложение все еще работает? Каковы коды ошибок? Что сделало удаление этой строки кода с вашей программой?
Шаг 5 - Даже если вы думаете, что знаете, что делает строка кода, все равно удалите ее. Самая важная задача программиста - всегда проверять свои предположения на соответствие результату. Ибо самое приятное ощущение в качестве программиста - это когда реальный мир подтверждает ваши предположения. Ты знаешь, как приятно, когда твой парень/девушка/муж/жена произносит эти волшебные три слова?


“Ты был прав”.

Это похоже на то, но лучше.

Шаг 6 - Поменяйте местами некоторые строки вокруг. Можно ли достичь той же функциональности с другим порядком строк? Почему они были написаны в том порядке, в котором они были написаны?

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

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

Итак, как вы можете использовать это, чтобы стать лучшим программистом? Допустим, вы хотите создать клон Instagram. Но, к сожалению, вы не знаете, как это сделать. Так что ты направляешься в github.com и найдите “Instagram” или “приложение для фотографий".

Неизбежно будет что-то написано на Swift / Objective-C / Java, что вы можете скачать и посмотреть.

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

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

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

На сегодня, ребята, это все. Чего ты все еще ждешь? Ночь еще только началась! Закодируйте что-нибудь, сделайте что-нибудь, узнайте что-нибудь сегодня!
 
Пользователь
Статус
Оффлайн
Регистрация
14 Авг 2021
Сообщения
138
Реакции[?]
84
Поинты[?]
1K
Участник
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
862
Реакции[?]
225
Поинты[?]
0
Товары в продаже
1
Да и вообще, зачем пытаться программировать против своей воли? Сейчас множество источников, откуда можно черпать информацию. Не хочешь учиться - найди другое занятие, которое тебе будет по душе.
Это не оригинальный источник.
А мега это оригинальный?:flushed:
 
Эксперт
Статус
Оффлайн
Регистрация
14 Ноя 2020
Сообщения
1,800
Реакции[?]
586
Поинты[?]
2K
Содержание:

1.Обманите свой мозг с помощью правила 20 минут
2. Код для определенной цели. У вас есть проект
3. Не существует “идеального языка для изучения”.
4. Поймите, что вы пишете
5. Это нормально - не знать
6. Будьте подражателем
7. Будьте ответственным
8. Продолжайте Учиться
9. Играйте в настольный футбол
10. Найдите наставника - Попробуйте парное программирование
11. Заведите привычку разбивать на куски
12. Взломайте чужой код

1. Обмани свой мозг с помощью Правила 20 минут.

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

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


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

Но потом я нашел хитрость.
Как люди, мы обладаем большой инертностью. Это может быть плохо для нас - я смотрю на тебя, бокс-сет “24". Однако мы также можем обратить это в нашу пользу.

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

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

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

2. Код для определенной цели

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

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

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


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

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

3. Не существует “Идеального языка для изучения”.

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

Но я говорю, что все они ошибаются.

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

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

Печать на консоль в Swift:

print(“Привет, оборотни”)

Печать на консоль на Java:

println(“Привет, Вервольфе”)

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

4. Поймите, Что Вы Пишете

У меня проблема с тем, как написано большинство учебных пособий по программированию. Существует слишком много учебных пособий, в которых вы видите феномен “вот как вы рисуете сову".

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

Очень легко погрузиться по колено в один из этих типов учебных пособий, потому что он обещает научить вас, как создавать “Flappy Bird” или “Candy Crush". Но на двух третях пути ничего из того, что вы печатаете, не имеет смысла, и вы начинаете видеть красный цвет по всему экрану. Ошибки. Их целая куча. Почему? Без понятия. Ничто не бежит. Последние 3 часа были потрачены на копирование кода, и вы ничему не научились, кроме, может быть, того, что кодирование отстой.


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

В море полно рыбы.

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

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

5. Это нормально - Не знать

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

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

Недавно я увидел сообщение на сайте вопросов и ответов Quora, где кто-то спросил: “Уволят ли меня в Google (или другую крупную технологическую фирму, если меня поймают на использовании StackOverflow в качестве ссылки?”

Он получил кучу действительно отличных ответов от инженеров, работающих в Google, Amazon и других крупных технологических компаниях. Любой, кто работал инженером-программистом, скажет вам, что не смотреть на ссылки гораздо более неодобрительно. На самом деле, я призываю вас найти хоть одного программиста Google, который не использовал переполнение стека. (Если вы не знакомы, 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 всякий раз, когда вы застреваете. Первым вариантом всегда должна быть попытка разобраться в этом самостоятельно. Таким образом, ваша программа делает не то, что вы ожидали, но до того, как я набрал последние 3 строки кода, она работала нормально. Итак, давайте выясним, что в этих последних 3 строках сломало мое приложение?

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

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

6. Будьте подражателем

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

Я читал. Я выделил. Я забыл. Я заснул.

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

Но что вы делаете?

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

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

Самая большая проблема с онлайн-курсами программирования - это отсутствие подотчетности. Без сомнения, существует множество отличных Массовых Открытых онлайн-курсов (MOOC), таких как Coursera, Udacity, Udemy, Skillshare. Но каковы последствия невыполнения домашней работы или пропуска месячных лекций? Ничего. Никого это не волнует.

Давайте посмотрим правде в глаза, внутренняя мотивация не сильна ни в одном из нас. Мы всегда можем найти причину, по которой мы заслуживаем “Netflix и расслабься". Я даже не могу сосчитать, на сколько онлайн-курсов я записался, а впоследствии не прослушал ни одной лекции и не выполнил ни одной курсовой работы.

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

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

Так что, если вы не на нашем курсе, тогда найдите свой собственный. Существует множество групп в Facebook, посвященных тем, кто учится программировать. Этому посвящен целый субреддит (r / learnprogramming), я уверен, что вы найдете единомышленников где-нибудь в Интернете или в автономном режиме.

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

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

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


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

Быть хорошим программистом - это все равно что быть Мадонной.

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

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

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


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

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

9. Играйте в футбол

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

11. Заведите привычку разбивать на куски

Итак, у вас есть потрясающая идея приложения. Но это слишком сложно для вашего нынешнего уровня мастерства. Что ты делаешь? Вы присоединяетесь к Чунцинскому экспрессу.

Нет, я не говорю об артхаусном фильме. Я говорю о том, чтобы решить вашу проблему с программированием.

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

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

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

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


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

Поэтому в следующий раз, когда вы попытаетесь сделать это “нечто среднее между Snapchat и Evernote”, не забудьте разбить проблему на решаемые части.

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

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

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

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


Шаг 1 - Скопируйте и вставьте код в свою программу. (да, да, я знаю, что только что сказал не делать этого, терпение, терпение).
Шаг 2 - Убедитесь, что ваша программа или приложение работают должным образом. Т.е. подтвердите, что блок кода действительно решил вашу проблему.
Шаг 3 - Удалите скопированный и вставленный блок кода строка за строкой.
Шаг 4 - Каждый раз, когда вы удаляете строку, проверяйте, что было нарушено. Приложение все еще работает? Каковы коды ошибок? Что сделало удаление этой строки кода с вашей программой?
Шаг 5 - Даже если вы думаете, что знаете, что делает строка кода, все равно удалите ее. Самая важная задача программиста - всегда проверять свои предположения на соответствие результату. Ибо самое приятное ощущение в качестве программиста - это когда реальный мир подтверждает ваши предположения. Ты знаешь, как приятно, когда твой парень/девушка/муж/жена произносит эти волшебные три слова?


“Ты был прав”.

Это похоже на то, но лучше.

Шаг 6 - Поменяйте местами некоторые строки вокруг. Можно ли достичь той же функциональности с другим порядком строк? Почему они были написаны в том порядке, в котором они были написаны?

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

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

Итак, как вы можете использовать это, чтобы стать лучшим программистом? Допустим, вы хотите создать клон Instagram. Но, к сожалению, вы не знаете, как это сделать. Так что ты направляешься в github.com и найдите “Instagram” или “приложение для фотографий".

Неизбежно будет что-то написано на Swift / Objective-C / Java, что вы можете скачать и посмотреть.

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

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

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

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