The Journey from curious outside to beginner

Starting something completely new creates a whole load of different feelings. Hesitancy, fear, excitement and definitely for me the sense of being a little overwhelmed by it all (sometimes that's just getting out of bed in the morning).

The only way to keep me going is to try to make sure the positive emotions and benefits outweigh the negative feelings that can come with trying your hand at something new.

You might say I'm a little late to web development at 31. In some ways, I don't know why it took me so long to begin to ponder the mysteries of the internet, how everything fits together, and how the sites I see everyday are created. But life can have a habit of distracting you from interests, especially when you've got a full-time job.

It was only back in 2009 that I picked up a copy of HTML, XHTML and CSS for dummies. I worked through the sections in the title, but when I got to a section on PHP, I got stuck. I wasn't able to work out what was going on with the simple concept of booleans.

I think I just wasn't able to get to a place where the positive emotions and excitement at learning outweighed by negative feelings at feeling intellectually inadequate. I just gave up. So although I was pleased that I'd put together a few static sites with html and css, I hadn't made much progress on learning how to create sites with any functionality.

It was a few years later, in 2011 when the interest in learning more about building sites rose above the other clutter in my brain. I bought a copy of Beginning Ruby( by Peter Cooper.

However, I didn't have anything to hang my learnings on, to say 'I want to do this, so what specifically do I need to learn to do that?' Although I was working my way through the book, it wasn't grabbing my interest as much as I'd hoped.

This was absolutely a failing on my part. At the end of a day at work or even during brief bouts of unemployment, I didn't have the drive to always open the book and keep on reading. Again, the sense of being all a bit overwhelmed took over. 'Where am I going with this? What is the point of it all?' Without any real pre-defined goal, it was too easy for me to get distracted to name but one.

Moving forward again, it was back in early 2012 that my curiosity was piqued when I read about node.js. I think it was probably the lazy person in me that was interested to read about node.js. I was aware of JavaScript on the client being used to supplement html so it was interesting to read about node.js and JS on the server.

At the same time, Code Academy was launched with free courses on how to learn JavaScript. The carrot technique worked well for me in terms of the drip-feed of rewards (thoughts of rats in a maze being rewarded for successfully navigating a maze spring to mind).

Still, although I steamed through lots of the courses, for me there still seemed to be a disconnect between the exercises on Code Academy and sites that I used everyday.

My reading of the sacred texts of JS in the form of Douglas Crockford's JavaScript: The Good Parts and Martijn Haverbeke's Eloquent Javascript also left me feeling a little overwhelmed and lost on how to actually build something.

I think overall, the excitement of learning was still tempered by the feeling of separation from any tangible feeling of doing anything worthwhile and getting closer to building something worthwhile.

I think the key point that's been missing from the above is the idea that to keep you learning, you need a project to focus on (I appreciate this may be a trite observation!).

Although I'd had ideas over the years, I think they were perhaps on too grand a scale to make me think they were achievable. I'm not talking about manned missions to Mars here, more sites with a complexity too great for me to even begin to figure out where to start!.

So what enabled me to make the leap from the theory of JavaScript to building Routebop (admittedly still a work in progress) site or Geoflickr? I think it was mainly getting some ideas in the first place. Something which I could actually home in on and work towards achieving, with small steps so I could break down the code that was needed into smaller pieces.

The feeling of actually putting together some basic code and getting it to (eventually) work was incredible, punching-the-air worthy. Of course there was frustration and the negative feelings of sometimes wondering what the hell I was doing even trying to learn, but that was outweighed by the excitement.

On a basic level, I'd got to a place where the positive emotions and feelings of achievement were far outweighing the negativity.

As to my overall progress, I think it's fair to say that excitement at managing to cobble something together can turn into a feeling of apathy as you realise that what you've created isn't particularly complex. Clearly as a person's understanding of a subject increases, what were once mind-blowing discoveries can turn into simplistic concepts which lose their luster, at least in my case.

For example, whereas once I was excited at putting together Routebop, now all I see it as is simplistic manipulation of data using a basic CRUD interface.

Whilst there's much to be said for putting together code that just works, I'm fairly certain mine doesn't conform to any design patterns, is not particularly maintainable nor (intentionally at least) makes use of closures, inheritance or with other concepts associated with well-written JavaScript. To an extent, accomplishments that were once exciting, are now just evidence that I haven't been able to grasp the more complex aspects of JavaScript.

Having said that, it's better to be in a position where you're pushing yourself to improve rather than resting on your laurels. To this end, I'm trying to learn more about JS frameworks for the client-side and incorporate libraries such as Caolan's async on the server-side.

Eventually, maybe some time in the future, I can make the leap from beginner to someone conversant with the more advanced features of JavaScript.

The code for Routebop and Geoflickr can be found here and here for the curious. Pull requests are welcome :)