Все побочные вещи, которые вам нужны, о которых никто не говорит

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

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

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

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

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

Всеобъемлющее руководство (в основном не зависящее от языка)

1. Поговорим об алгоритмах

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

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

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

В какой-то момент вы столкнетесь с данными, и вам нужно будет что-то с ними делать. Если вы знакомы с методологиями, которые были разработаны и протестированы для определенных типов данных, это сделает вас менее зависимыми от таких методов, как list sort().

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

2. Искусство шаблонов дизайна

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

Если это так, шаблон проектирования используется для экономии времени, предотвращения потенциальных проблем в будущем и создания стандарта для процесса создания кода.

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

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

3. Массивы! Потому что все есть данные

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

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

4. Связанные списки

Если вы не знакомы с C ++ или Python, вряд ли вы столкнетесь с идеей связанных списков. Хотя он может выглядеть как массив и иногда пахнуть как массив, у связанных списков есть определенные плюсы и минусы, которые отличаются от использования массивов.

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

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

5. Хеш-таблицы, что? (Не связано с хэшбраунами)

Программы работают над организацией больших массивов данных доступным и понятным способом. Хеш-таблица - это еще один метод хранения и извлечения данных.

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

6. Давайте серьезно - процессы, потоки и параллелизм

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

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

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

Это также дает вам представление о том, как работает память и как код, который вы пишете, влияет на производительность.

7. Двоичный поиск

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

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

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

8. Деревья

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

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

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

9. Тестирование

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

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

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

10. Динамическое программирование.

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

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

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

11. ТВЕРДЫЙ

SOLID - это набор из пяти принципов проектирования в программировании. Это шаблоны, которые можно реализовать для объектно-ориентированного программирования.

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

SOLID также формирует основную философию гибкой разработки программного обеспечения в дополнение к созданию надежного кода.

Прощальные слова

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

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

Выход за рамки if...else операторов в вашем коде также является признаком роста и применения знаний, в чем застревают многие младшие и начинающие программисты.

Вам не обязательно все полностью понимать. Но точки знаний могут помочь нам в будущем как создателям кода.

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

Спасибо за чтение.

Афинья