Ты бы язык для начала написал хотя бы. Есть книги, например: Принципы, паттерны и методики гибкой разработки на языке C#. В этой книге учат, как нужно писать софт. Самое главное, это на протяжении написания софта всегда хотеть всё сделать максимально правильно и не забивать на уже изученные принципы проектирования ПО. Если ты про алгоритмы, то читать книги по алгоритмам и реализовывать их. В общем, нужно много практики.