Вам не нужно иметь глубокое понимание всего проекта, чтобы иметь возможность его поддерживать. Обычно с большим и сложным программным обеспечением у людей будут свои особые «области», за которыми они следят, и у них есть только «мимолетное» знание остальной части системы.
На самом деле SQLite относительно мал в масштабах «больших программных проектов», но если вы посмотрите на что-то вроде операционной системы Windows, у вас будут люди, которые просто работают над ядром, люди, которые просто работают над оболочкой, люди, которые просто работают в Internet Explorer - люди, которые просто работают в диспетчере окон и т. д. и т. д. Тот, кто работает в «оболочке», не сможет исправить ошибку в ядре без промедления.
Также есть преимущество в том, что эти проекты развиваются с течением времени: они не всегда начинали так сложно. Это означает, что новый разработчик может быть «обучен» более опытными разработчиками.
Когда вы присоединитесь к большой команде разработчиков, вам будет предоставлен конкретный аспект проекта для работы (возможно, ошибка или новая функция), и у вас будет еще один «приятель» для первых нескольких итераций. Ваш собеседник будет хорошо понимать область, в которой вы работаете, и может помочь вам сориентироваться.
Для проектов с открытым исходным кодом, таких как SQLite, на самом деле это немного сложнее, потому что у существующих разработчиков нет мотивации «обучать» новых разработчиков. Таким образом, вы обнаружите, что вы немного больше. Но вы все равно можете найти помощь на форумах разработчиков или в списках рассылки (например, просто опубликовать вопрос типа «Я хотел бы реализовать такую функцию» или «Я нашел ошибку XYZ, где мне начать искать?», И вы, вероятно, получите некоторая форма помощи.