There is a delicate balance between creating something that already exists for the purpose of learning it's internal workings and creating it because you think you can do it better.