Сегодня я начал свой челлендж #100daysOfProgramming, и он является частью челленджа #100daysOfCraftsman, где я с друзьями готов учиться или что-то делать в течение ста дней. Да, такой долгий период, но его более чем достаточно, чтобы приобрести новую привычку.

Итак, я коротко расскажу вам, почему я начал исследовать и изучать программирование на глубоком уровне. Во-первых, я люблю программирование, оно дает мне возможность творить! Во-вторых, я недавно получил степень магистра компьютерных наук и понял, что для того, чтобы получить хорошую работу в ИТ-компании, мне нужно быть настолько хорошим, чтобы меня взяли на работу! Я признал, что знаю несколько языков программирования, но не могу с уверенностью сказать, что хорошо разбираюсь в … (C++, Java, C#, Swift и т. д.). Поэтому решил начать с самого начала и расширить свои знания. Ура!

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

Вот что я сделал сегодня:

  • Закодировался в литкоде, чтобы понять, где я сейчас. Я смог решить только одну задачу и это заняло у меня 2 часа. Я программировал на C++, и первое задание было Сумма двух, и я понял, что у меня неплохая логика. Но мне нужно больше узнать о структурах данных (вектор, связанный список и т. д.), и мне нужно больше практики с ними.
  • Скачал книгу Cracking the Coding Interview, но начну читать после того, как решу хотя бы 50 задач по leetcode.
  • Я определил, как выглядит «великий» программист. И записал в свой блокнот шаги, как туда добраться.
  • Нашел несколько ресурсов Структуры данных и алгоритмы и онлайн-курс от университета MIT, а также достойную информацию о том, что нужно читать, практиковать и учиться. Последний пункт я изучу позже, так как уже начал читать теорию структур данных и алгоритмов.

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

На сегодня я закончил и вполне доволен собой. Я не смог закончить все задачи на сегодня, осталась одна задача: «Сделать один экран моего приложения ToDo». Я разрабатываю его на React Native. Я надеюсь, что к концу этой недели я смогу отправить его на github. Так что удачи мне!