Esqueça a codificação e configure um ambiente de desenvolvimento por um momento. Se você quer embarcar em um grande projeto, a primeira coisa que você precisa fazer é entender o propósito e o escopo do projeto.
O que eu recomendo é abrir um processador de texto e escrever um documento de 'objetivos do projeto'. Descreva de que se trata a ideia e o objetivo geral do software que você deseja escrever. Em seguida, liste as metas de funcionalidade do projeto. Não quero dizer como especificá-lo, mas descrever as diferentes funcionalidades que o produto acabado deve suportar. Então, se você estivesse escrevendo um software para administrar uma escola, você poderia listar 'gerenciamento de professores' como uma funcionalidade e, em seguida, descrever o que essa funcionalidade incluiria (rastrear informações de contato, agendamento de aulas, etc.).
Depois, a parte mais difícil: não é algo que você precisa fazer logo de cara, mas à medida que avança. Tão importante quanto os recursos de listagem que você deseja adicionar é revisar a funcionalidade descrita em seu documento de metas e observar os recursos que você pode viver sem na primeira versão do programa. Isso é fundamental para o gerenciamento do escopo.
Uma das principais razões pelas quais as pessoas falham em projetos maiores é que elas não sabem quando parar de trabalhar nela. Eles não sentem que estão "prontos" porque as ideias continuam chegando e nunca são liberadas. Eventualmente, eles perdem o interesse e você tem outra obra-prima incompleta. Então você quer ter certeza de que você tem um bom controle sobre a funcionalidade que é realmente importante para alcançar a parte básica de seu objetivo. Esse é seu primeiro alvo.
É assim que inicio todos os projetos não triviais agora. Isso me ajuda a manter o foco e ajuda a manter o escopo e o objetivo de "evoluir" durante o desenvolvimento.