I'm a self-taught programmer (start my CS degree when I go to uni next year). So far I've only completed small games such as pong, snake, etc. I've also created small gui programs which allow the user to interact with specific algorithms. However, I've never created something of substantial size that I couldn't just draw up a basic flow of the program and code the implementation.
I want to work on a project which is a bit more robust and complex. I'm planning on making a distributed IRC client using the asio library. I am planning on having a command line interface and be somewhat extensible.
My question is how should I go about planning it and how specific should I be?
Should I use something like UML?
Though I would eventually like to use the program for personal use, my main goal is learning how to plan, start, and finish a complex project. I plan on using a git repository to manage the code and to write documentation for it, to make it more like a realistic project.
Thank you for your time and effort,