Здесь вы найдете несколько вещей, которые вы, возможно, еще не знаете, но, как разработчику, вам будет полезно их изучить, ведь это основы любого программиста.
11. Отладка, нахождение ошибок
Давайте начнем с того, что вам придется провести большое количество времени в поиске ошибок в коде, поэтому надо хорошо разобраться в этом. Приведем несколько стратегий по нахождению и анализу проблем:
- Используйте отладчик (устанавливайте места останова, пошагово просматривайте код и наблюдайте за изменением значений переменных)
- Проводите отладку путем вывода на консоль
- Пользуйтесь ассертами (assertion)
- Используйте логи (log)
- Используйте профилирование
- Стратегии для решения основных проблем:Понимание ожидаемого поведения Понять проблему Воспроизведение и проверка проблемы Проверяйте историю изменений для того, чтобы понять почему и когда появилась проблема Описывайте свою проблему кому-либо еще, так как формулируя проблему вы сможете лучше понять её
- Стратегии для решения сложных/больших проблем Попробуйте найти первопричину Изолируйте проблему Разбейте проблему на несколько кусков для того, чтобы быстрее справиться с ней
На сегодняшний день контроль версий — это просто необходимость, но к сожалению, как и что это многие не знают. Система контроля версий поможет вам контролировать изменения в вашем коде. Приведем несколько причин почему нужно пользоваться контролем версий:
- Очень простое взаимодействие
- Упрощает понимание того, что вы делаете, для чего и зачем
- Позволяет вернуть изменения, которые вы не хотите сохранять
- Позволяет управлять несколькими версиями программного обеспечения
- Вы можете видеть разницу между двумя версиями
- Позволяет параллельно разрабатывать новые фичи
- Возможность делать бэкап
Git
SVN
CVS
Mercurial
Bazaar
33. Ищем ответы
Самообучение и обучение в целом — это одна из главных составляющих становления разработчика, и вы потратите огромное количество времени на поиски информации и решений в Интернете. Приведем несколько стратегий, которые могут помочь вам:
- Пробуйте искать альтернативные термины
- Ограничивайте, запрашиваемую информацию (например, за последний год), чтобы избежать устаревшей
- Ищите информацию на специализированных сайтах (например, StackOverflow, MDN, и т.д.), чтобы избежать неуместных результатовGoogle — Добавляйте в запрос ключевые слова сайта, например:MDN: сайт:developer.mozilla.org StackOverflow: сайт:stackoverflow.com DuckDuckGo — Используйте в запросах разговорный синтаксис, например:MDN: !mdnStackOverflow: !so
44. Взаимодействие, командная работа
Взаимодействие не является сильной чертой программистов, но для любого разработчика, который хочется добиться успеха это обязательно, также это цениться при командной работе.
55. Стандартные структуры данных и примитивные типы
Возможно в школе вы что-то читали структурах данных и примитивных типах, но готов поспорить, что вы не понимаете насколько они, по-настоящему, важны.
Здесь вы можете увидеть лишь несколько из них, убедитесь в том, что вы хорошо знаете для чего и в каких случаях используется каждая:
ССтандартные структуры данных
- Список
- Массив
- Стек
- Хэш-таблица/Словарь
- Связный список
- Множество
- Очередь
- Целые (int, byte, short, long — signed and unsigned)
- С плавающей точкой (float, double)
- Строка (string)
- Символ (character)
- Boolean
- Decimal
В школе вы могли научиться писать код, но рефакторинг (реструктуризация существующего кода, без изменения его внешнего поведения) является очень важной составляющей. Со временем ваш код может стать неэффективным, багованным, сложным для расширения и управления, и переписав его вы можете добиться большого успеха. Приведем несколько стратегий, которые помогут вам проводить рефакторинг вашего кода:
- Пишите юнит-тесты
- Проектируйте ваше приложение на нескольких уровнях
- Используйте различные вспомогательные инструменты (например, ReSharper для C#)
- Проектируйте ваше приложение на абстракциях и инкапсулируйте
- Выделяйте и повторно используйте
Чистое образование в области веб-разработки, могут не дать понимания того, как на самом деле работают программы и компьютер. Но нужно ли мне, веб-разработчику, знать, как все работает на низком уровне? И я бы сказал да, даже если вы просто пишите на JavaScript, ваш код все равно запускается на ВМ и компилируется в машинный код.
Если вам требуется писать эффективный код (хотя вы всегда должны писать такой код), то вам следует знать о:
- Управлении памятью
- I/O
- Стеке и куче
- Компиляции, интерпретации, байт коде, ВМ, IL и так далее