How I built 7books in under 4 weeks

Update: This post is slightly out of date now since V2 of 7books is now live. See the "making of" post for V2 here: http://www.7bks.com/blog/596001

Let me tell you a story. It's a story of my very first coding project, called 7books. Are you sitting comfortably? Then I'll begin.

Why I built 7books

I've had plenty of ideas in my time. Most of them pretty poor. But on 10/10/10 (auspicious!?) I had an idea for a website where you could create book lists and share with your friends. Why? Because I love books. A few years ago I was romancing a girl and we swapped reading lists (mine, hers). It was an awesome experience so I wanted to create a community around sharing book lists (romancing optional...).

I quickly scribbled in my moleskine this diagram:
As you can see, originally I was planning on calling the site 10books and I was planning on using some Ajax magic. In the end I thought 7books was a better name and it turns out coding Ajax magic is pretty hard (though at some point it'll happen! see below for the future of 7books).

Still, as I sat on the train thinking through the idea I started to become very attached to it. For three main reasons:

  1. It's based on one of my passions (I love books a lot)
  2. I didn't think it would be too difficult to build
  3. If I wanted to use the service then it was a sure bet others would too

Underneath my diagram I jotted down what I thought the three main USPs would be:

  1. The lists would be beautiful (Amazon lists are ugly)
  2. It would be quick and easy to create lists (insert Ajax magic here)
  3. Alongside the app I'd build a passionate book community

Now, given it's still early days I've not yet got all 3 of these USPs nailed but that's the vision. So, with the idea and some USPs written down I started building. Unfortunately, I didn't know how to code. Fortunately that didn't stop me.

Me, 4 weeks ago

Four weeks ago I couldn't code. Seriously, let me give you some examples:

What I've achieved

In the last four weeks, in around my full time job, I've learned how to code python, got set up with Google app engine, learned the bare bones of CSS and front end HTML and even dabbled in the dark arts of jQuery. The sum total of that experience leads us to the present day:

Phew. So it was pretty hard work but also highly enjoyable! For anyone else considering learning to code, here's my experiences:

Google App Engine

I decided to build the site on appengine because I heard it was free and easy. Boy, is that true! The local development console is a dream to install, set up and get running. I don't have much to compare it to, not having tried anything else but I think it's a big factor in me being able to go from zero to this in under 4 weeks. There's literally no sys admin required and the offline development console is really good to allowing you to build and test something locally and then deploy to the live site headache free. One thing which also made the process easier was the super-helpful and really friendly Python App Engine Google Group. I'd strongly recommend anyone starting out developing something to find some kind of mentor. I wish I'd had someone I could have asked for help but in my case the guys on the Google Group turned out to be a good substitute. Thanks guys :)

Python

Learning to code is like learning anything from scratch; at first it's mind numbingly difficult. For example, when I first started learning Wing Chun (a martial art) I was like a baby gazelle on ice. Uncoordinated, falling over a lot and certainly no good in a fight. You stay in this "completely inept" phase for longer than you think. But then, once you start coming out of that phase your rate of improvement is quicker than you think. I think this is a valuable lesson to bear in mind whenever you pick something new up. It took me 2 weeks to learn how to say "hello world" on app engine. Then in the next two weeks I built the whole thing (this is a slight oversimplification but essentially true).

So if you're thinking of learning to code - don't give up in the first two weeks! Stick with it and you'll be amazed at what you can achieve. (Also, be sure to go through the entire app engine python beginners guide. It takes about 4-5 hours and will give you a great foundation). Of course, 7books is basic and still has bugs - but as an MVP (minimum viable product) I'm pretty happy with it :)

HTML, jQuery, CSS and design

One thing I didn't realise when I started building the site is that HTML + CSS != design, just knowing how to position elements doesn't give you the skills to know where you should be placing them. I thought the front-end would be the easiest part of the site to build. Turns out I was wrong. If you're new to design, I'd recommend bouncing designs off family and friends to get feedback - you'd be amazed at how useful a fresh pair of eyes can be.

Alongside the HTML and CSS, jQuery has been really useful. It's remarkably easy to get up and running with it and it enables me to do the fancy +/- buttons on the create list page as well as some of the validation.

The future of 7books

So, with that all said and done, what's left for the future? On my roadmap for the end of the year are the following new features/improvements based on feedback so far:

Help me learn to code

I've published the full Python code for 7books at Github. If you know anything about programming please help me learn by pointing out where I've gone wrong :)

Please give feedback

I take all feedback very seriously so please let me know what you think of the site. Any and all suggestions are really honestly appreciated. I'm keen to turn this site into something awesome and feedback is crucial to make that happen. Either email me, twitter me or leave some feedback in the form below:



If you liked this post, please share with friends. Thank you!