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

Так что всякий раз, когда меня спрашивают, как создавать приложения? Как мне начать программировать?

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

В 2017 году я хотел изучить разработку приложений для Android. Не знал азбуки Java. Я занимался программированием на C ++ среднего уровня.

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

Именно тогда мне пришла в голову идея приложения для обоев с его подписью на фотографиях.

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

  1. Оцените свои сильные и слабые стороны.
  2. Выберите стек технологий, исходя из своих сильных сторон.
  3. Создайте свой пользовательский интерфейс для приложения (грубый каркасный карандаш или используйте программное обеспечение)
  4. Разбейте приложение на более мелкие модули (например, экраны)
  5. Выберите особенности каждого модуля и расставьте приоритеты
  6. Найдите ресурсы в Интернете для создания аналогичных функций (YouTube, блоги, переполнение стека и т. Д.)

1. Оцените свои сильные и слабые стороны:

Перед тем, как начать, вы должны знать, в чем ваши сильные и слабые стороны. Я не знал Java, чтобы создать приложение для Android с помощью Java. Так что мне пришлось этому научиться.

У меня было два варианта: либо изучить Java, а затем изучить разработку приложений для Android, либо изучить Java на ходу, изучая разработку приложений для Android. Я выбрал второе.

Потому что у меня не хватило терпения пройти 30–40-часовой курс только по Java для сборки. Но поскольку я работал с C ++, я хорошо разбирался в концепциях ООП.

Итак, я начал бесплатный курс на Udacity от Google по основам разработки приложений для Android. За сертификат пришлось заплатить, но меня это особо не волновало. Я ПРОСТО ХОТЕЛ СОЗДАТЬ ПРИЛОЖЕНИЕ!

Вопросы, которые нужно задать:
1. Какой язык программирования изучать?
2. Какой язык программирования мне следует выучить для создания приложения ‹app_you_want_to_build›?
3. Какие курсы лучше всего изучать ‹programming_language ›?
4. Найдите на Youtube:« Живое кодирование ‹app_you_want_to_build› ».

2. Выберите набор технологий, исходя из ваших сильных сторон.

Здесь вы оцениваете свои силы и оцениваете, что еще нужно для создания полного приложения?

Какой технологический стек требует минимальных усилий для внедрения и не требует значительного обслуживания? (Tbh, я даже не знал, что означает техническое обслуживание в этот момент)

Именно здесь я наткнулся на Firebase, потому что ничего не знал о серверной разработке и о том, как ее написать и развернуть. Firebase позаботилась обо всем с помощью простой реализации SDK.

Итак, я закончил работу над Android, использующим Java для внешнего интерфейса и Firebase для внутреннего интерфейса.

Вопросы, которые нужно задать:
1. Что требуется для сборки ‹app_you_want_to_build›?
2. Какой технический стек используется для сборки ‹app_which_exists›?
3. Как проще всего реализовать ‹ a_feature_in_your_app ›?

3. Создайте пользовательский интерфейс приложения (набросок карандашом или используйте программное обеспечение).

Это та часть, где все начинает становиться реальным и личным.

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

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

Я лично использую Adobe XD, потому что считаю его очень простым и быстрым в использовании.

Вопросы, которые нужно задать:
1. Как использовать ‹Adobe XD / Figma / или любое другое программное обеспечение для создания прототипов›?
2. Вдохновляющие идеи для ‹app_you_want_to_build›
3. Как мне создавать каркасы для приложение?

4. Разбейте приложение на более мелкие модули (например, экраны).

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

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

У каждой из вышеперечисленных функций были разные экраны.

(Только у меня был доступ к загрузке изображений. Я закомментировал кнопку для загрузки, другие могли просматривать все изображения и использовать изображение в качестве обоев. Я сделал это, потому что в приложении не было аутентификации, и еще одна причина заключалась в том, что я этого не сделал есть время, поэтому я отложил аутентификацию Firebase до следующего приложения)

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

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

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

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

  1. Моей основной задачей было загрузить изображение. Мне пришлось загрузить его в хранилище Firebase и получить URL-адрес изображения, чтобы сохранить его в БД изображений.
  2. Затем мне пришлось отобразить эти URL-адреса в таком представлении, как Pinterest (более простое).
  3. Затем мне пришлось помочь пользователю загрузить изображение, поставить лайк или установить его в качестве обоев.

6. Найдите в Интернете ресурсы для создания аналогичных функций (YouTube, блоги, переполнение стека и т. Д.).

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

Вам будет сложно понять многие вещи, кривая обучения будет очень крутой, но у вас есть все ресурсы мира, доступные в ваших руках. Вы должны задавать ПРАВИЛЬНЫЕ вопросы, люди будут вам отвечать и помогать.

Смотрите и читайте о различных способах реализации функций. Это очень важно.

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

Для меня создание Feature 1 и 3 заняло всего 7–10 дней. Но на втором я очень сильно боролся. Я действительно не мог осмыслить адаптеры и то, как recyclerviews работает в Android. Эта часть заняла более 1 месяца. Меня забанили на переполнение стека на неделю за то, что я задавал глупые вопросы 😂

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

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

На этом этапе очень важно понять, что вызывает проблему, с которой вы столкнулись. Если вы этого не знаете, у вас есть 2 проблемы, которые нужно исправить.
Вопросы, которые нужно задать:
1. Что вызывает ‹the_problem_you're_facing›?
2. Как исправить ‹the_problem_you_know_the_cause_for› ?
(PS: меня забанили в SO за то, что я задавал вопросы, не разбираясь в причинах этого)

В вышеупомянутом блоге я добавил Вопросы, которые нужно задать - это вопросы, которые вам нужны для поиска в Google, поиска на Youtube, задания вопросов на платформах сообщества, таких как Stackoverflow и Reddit.

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

Сообщество разработчиков в Интернете очень обширно !! Просто задайте правильные вопросы!

Это один из самых простых способов, которым я чему-либо научился до сегодняшнего дня. Я разбиваю проблему на более мелкие части, изучаю / решаю каждую из них и снова объединяю полученные знания / решения.

Вот и все, ребята! Надеюсь, вам понравилось! Если вы хотите, чтобы подобные псевдоразборы продуктов создавались для новичков. Обращайтесь ко мне со своими идеями, пытаясь превратить это в серию (Супер Псевдо серию), в которой учащиеся учатся, создавая проекты самостоятельно, а не следуя монотонному 40-часовому онлайн-курсу.

Спасибо за чтение!
Вы можете связаться со мной в Twitter: https://twitter.com/sourav_bz

Немного о первом мобильном приложении (приложении для обоев), которое я создал