Что следует знать каждому разработчику

30.08.2016

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

Устройство и принципы работы операционной системы

Любым прикладным приложением управляет операционная система. Она предоставляет основные ресурсы для его работы: и процессорное время, и управление памятью, и возможности для работы с потоками и примитивы их синхронизации. На основе прав доступа приложение может получить доступ к возможностям операционной системы, а не наоборот. Поэтому знания об операционной системе — база, без которой я не позволяю стажерам браться за реализацию прикладных проектов.

Знания о структурах данных и базовых алгоритмах

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

Глубокие знания о сетевой инфраструктуре

Как компьютер может взаимодействовать с другими компьютерами? Что такое сетевой протокол? Как устроены наиболее часто используемые протоколы? Чем отличается транспортный протокол от прикладного? Что такое «порты» и какую функцию они выполняют?

Основные подходы к разработке настольных и веб-приложений и различия между ними (в исполнении и требованиях к ресурсам)

Каждый разработчик должен уметь их перечислить даже в ночи: книги Банды Четырех и Мартина Фаулера — настольные руководства, друзья и товарищи. Знание основ проектирования приложений, паттернов и антипаттернов позволяет заложить расширяемые каркас приложения и необходимую гибкость в изменении или добавлении новых функций.

Понимание принципов и видов тестирования

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

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

Читайте полную версию статьи на geekbrains.ru

Navicon FMCG BI доступен из облака Microsoft Azure

Решения Navicon теперь доступны в Яндекс.Облаке

Кризисная оптимизация: какие процессы сегодня стоит делегировать программным роботам?

Navicon поможет удаленным сотрудникам адаптироваться к сложным бизнес-приложениям

Фармрынок-2020: «черный лебедь» прилетел, что дальше?