То, что я не могу создать, я не понимаю
— Ричард Фейнман

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

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

Чтобы по-настоящему научиться создавать приложение, вы должны создать его самостоятельно. Придумайте требование и дизайн простого приложения. Ключ здесь «простой» и не будьте слишком амбициозны. Это может быть простой список дел или клиент Hacker News. Определите основные функции и пользовательский интерфейс / UX, с которыми вы хотите поэкспериментировать, а затем придумайте внутреннюю структуру/схему данных для поддержки этих функций. Теперь пришло время запачкать руки и написать код.

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

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

P.S. Чтобы изучить React и GraphQL, я создал это приложение Hackernews, в котором есть внешний и внутренний компоненты.