Вам не потрібно глибоко розуміти весь проект, щоб мати можливість його підтримувати. Зазвичай з великим, складним програмним забезпеченням люди матимуть свої особливі «сфери», за якими вони доглядають, і вони мають лише «прохідні» знання про решту системи.
SQLite насправді порівняно невеликий у масштабі "великих програмних проектів", але якщо ви подивитеся на щось на зразок операційної системи Windows, у вас з’являться люди, які просто працюють над ядром, люди, які просто працюють на оболонці, люди, які просто працюють в Internet Explorer, люди, які щойно працюють з менеджером Window, тощо. Хтось, хто працює в "оболонці", не зможе виправити помилку в ядрі при падінні капелюха.
Також є користь у тому, що ці проекти розвиваються з часом: вони не завжди починали це складно. Це означає, що нового розробника зазвичай можна «навчити» більш досвідченим розробникам.
Коли ви приєднаєтесь до великої команди розробників, вам буде наданий певний аспект проекту, над яким можна працювати (можливо, помилка чи нова функція), і у вас з'явиться інший розробник, який ви будете "приятелем" за перші кілька ітерацій. Ваш приятель буде добре розуміти сферу, в якій працюєте, і може допомогти вам знайти свій шлях.
Для проектів з відкритим кодом, таких як SQLite, насправді трохи складніше, тому що існуючі розробники не мають мотивації "навчати" нових розробників. Таким чином, ви дізнаєтесь, що на самому собі трохи більше. Але ви все ще можете знайти допомогу на форумах розробників чи списках розсилки (наприклад, просто розмістити запитання на зразок "Я хотів би реалізувати таку функцію" та "Я знайшов помилку XYZ, з чого я починаю шукати?", І ви, ймовірно, отримаєте якась форма допомоги.