I have had a lot of problems with starting projects and not following through. It took me about a year to work through the Ruby koans official site|my code. And they were simple programming exercises designed to introduce you to the language. I say no more.
This is the year that I stop starting without finishing, at least where programming is involved. I have recently started a new project that I intend to be a sort-of showcase for my website building skills. So far, I just have the idea but I want to start it right from the very beginning. To that end, before I write a single line of code, I will be writing a functional spec which lays out the user interaction with the site. It is much easier to pick out issues with the design when they're just ideas on paper. This will be completed by next Wednesday (11 March 2015).
An example of when writing a spec first came in handy. I recently started a new project at work. It will be a fairly simple site to create but it has some very demanding customers. Before I started to write the code for their website, I sat down and wrote a spec for their site. I laid out all the different pages of the website. I wrote down likely use scenarios for the website. I put in things that I wouldn't be supporting during development.
One of the customers came to visit me and discuss his ideas for the website. Because I had already formulated my ideas for user interactions, I was able to show him that we were already on the same page in our thinking. I was also able to assure him that I didn't want to obliterate his current workflow and destroy his productivity with my design. The best part for me was not having to completely explain myself to him since I'd already done that in the document. I was able to send him a link and say, read it yourself.
Back to my library project: the idea came for this site came to me because of the lack of decent library software. No seriously. Look around if you don't believe me. I just want a decent website that is mobile friendly to manage my books. It would be great if it integrated with Amazon to pull in book covers too. That in a nutshell is my new project. I will be building a library management website. I'm sure this won't be my last post on the subject.