Tehnografi.com - Технологические новости, обзоры и советы

Как думать как программист

Следующая статья поможет вам: Как думать как программист

Вернуться в блог

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

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

Вот во что мы вникнем:

  • Как программирование — это 80 % отладка и только 20 % написание нового кода
  • Важность поиска своего рабочего процесса для решения проблем с кодированием
  • Как целенаправленная практика и создание проектов кодирования могут помочь вам
  • Преимущества постоянного обучения

Профессиональные разработчики тратят 20% своего времени на написание нового кода и 80% на отладку, тестирование и рефакторинг.

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

Типичные задачи, которые вы выполняете как программист, включают:

  • Напишите блок кода, например функцию или функцию.
  • Проверьте этот фрагмент кода вручную – работает ли он нормально?
  • Напишите автоматизированный модульный тест для кода (необязательно, прежде чем писать код).
  • Находите ошибки в коде и исправляйте их одну за другой.
  • Проверьте свой код на наличие «пограничных случаев» — что произойдет, если вы это сделаете [unlikely thing]?

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

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

Рефакторинг может быть сложным, но его можно легко начать. Вы написали новый фрагмент кода? В конце дня вернитесь к написанному вами коду и посмотрите, сможете ли вы его улучшить. Можете ли вы пояснить, как это работает? Что, если вы добавите несколько комментариев к коду, чтобы помочь читателю (или вам самим) понять ваш код?

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

1 «Лучшая архитектура» здесь означает переписывание для улучшения структуры и обеспечение лучшего соответствия вашего кода архитектурным шаблонам и шаблонам проектирования, которые вы выбрали перед написанием проекта.

Карл Поппер, великий академический мыслитель и философ, внес невероятный вклад в научное мышление: фальсификацию.

Вот как это работает:

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

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

Вы переходите от «Все лебеди белые» к открытию черных лебедей (и фиолетовых, если уж на то пошло) и по пути узнаете о них больше.

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

Рассмотрим следующий сценарий: вы пишете приложение для iOS с помощью Swift. Когда вы запускаете приложение, вы получаете сообщение об ошибке: «При развертывании необязательно обнаружено «ноль». Что теперь?

  1. Сначала вы стремитесь понять проблему, которую пытаетесь решить. Что является необязательным? Что такое ноль? Что такое разворачивание? Вы посмотрите это и узнаете больше об этих темах.
  2. Далее вы придумываете план проверки гипотезы. Ваша идея состоит в том, что где-то в коде необязательный параметр неправильно развернут, и это вызывает ошибку. Ваш план состоит в том, чтобы найти дополнительные инструменты отладки.
  3. Следующий шаг – это, конечно, принятие мер. Вы разыгрываете свой эксперимент и собираете результаты. Вы нашли необязательное и когда снова запустили приложение, появились ли какие-либо ошибки?
  4. Наконец, вы оцениваете свои результаты. Например, вы могли наткнуться на решение, которое не включало вашу первоначальную гипотезу. Можете ли вы вернуться назад и попытаться понять, как это работает? И если вы решили проблему, можете ли вы повторить для себя, почему это так работает?

Вышеупомянутая стратегия имеет много названий: умный метод проб и ошибок, Думай-Планируй-Действуй, экспериментирование. Идея здесь состоит в том, чтобы не решать проблему грубо и пробовать множество решений, а объединить решение проблемы с получением понимания. Исправление ошибки — не единственная ваша цель; вы также хотите узнать больше о разработке для iOS.

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

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

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

Неудивительно, что на лучших курсах по разработке iOS на Udemy обучаются десятки тысяч студентов по цене 10 долларов за штуку. Но достаточно ли 10 долларов и 50 часов видеоконтента, чтобы стать разработчиком iOS?

Представьте, что все эти 40 000 студентов стали успешными разработчиками iOS. Недостатка в хороших разработчиках больше не будет! Нет, тут что-то другое…

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

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

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

Сознательная практика – это простая концепция. Вы как можно быстрее проходите учебные пособия по iOS и упражнения по программированию или намеренно изучаете, открываете и экспериментируете с кодом в течение 10, 100 или 1000 часов практики?

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

  • Узнайте больше о «разрывных» компонентах, таких как UIViewController.
  • Погрузитесь в алгоритм Swift и используйте его, чтобы узнать больше о синтаксисе Swift.
  • Когда вы узнаете о новом компоненте, таком как URLSession, попробуйте использовать его в своем собственном проекте приложения для iOS.

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

Лучше написать одно и то же приложение 10 раз, каждый раз улучшая его, чем один раз написать 10 приложений и плохо. Это как Брюс Ли говорит:

Я боюсь не того, кто один раз отработал 10 000 ударов ногами, а того, кто отработал один удар 10 000 раз.

Разница между разработчиком iOS и лодырем в том, что разработчик iOS готов каждый день узнавать что-то новое.

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

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

Удивлены? Не забывайте, что на Луне есть следы. Их поместили туда не люди, которые хотели полететь на Луну. Их поместили туда люди, попавшие на Луну!

Самолет, следовавший из Парижа в Нью-Йорк, не повернул назад, когда понял, что отклонился от курса на 2 градуса. Он изменил курс и продолжал его корректировать, пока не достиг Нью-Йорка.

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

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

Вот пример: «Каждое утро, когда я начинаю работу, я трачу 1 час на программирование на Swift». Видите, как это работает? Вы связываете целенаправленное поведение с триггером, таким как вставание с постели, начало работы или «Когда будет четверг, 9 вечера, я собираюсь…». Такая автоматизация помогает вам выработать привычку и не дает вам перегореть. ваш ограниченный запас силы воли.

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

Вот несколько увлекательных руководств по программированию, с которыми вы можете поиграть:

  • Палиндромы в Swift
  • Преобразование римских цифр с помощью Swift
  • Бинарный поиск в Swift
  • Объяснение перетасовки массива в Swift
  • Сортировка вставками в Swift

Невероятное сокращение для мышления программиста: ABT и ABL. Всегда тестируйте, всегда учитесь. Поместите это на стикер где-нибудь на столе, это поможет вам сохранить хорошее настроение!

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

  • Сосредоточьтесь на написании 20 % нового кода и 80 % на отладке/переписывании существующего кода.
  • Создайте свой собственный рабочий процесс для решения проблем, основанный на методе проб и ошибок, экспериментировании и получении идей и понимания.
  • Сознательная практика критически важна для освоения темы.
  • Автоматизируйте изучение чего-то нового каждый день — программирование в этом случае доставляет удовольствие!

И последнее, но не менее важное: развивайте свою способность работать, действуя. Иди построй что-нибудь!