My First Four Weeks at CodeClan

With the first four weeks of the course complete, cohort 3 student Scott reflects on his experiences so far.

Why I decided to learn to code

Before starting at CodeClan I had worked in both desktop support at an apprentice/junior level in a large organisation, as well as 2 years as an essentially self-taught junior developer back in Aberdeen. I was getting frustrated with the bad practices and habits I was developing, as well as the environment I was working in, which had very few job prospects elsewhere. The combination of this, plus the idea of moving to Edinburgh (if only for 16 weeks initially) where I had family already staying eventually led me to make the application back in October/November of last year for the course starting in February, which gave me time to handover and finish any projects I was currently on.

After meeting some other members of my cohort at social events/talks before starting I began to get pretty excited – all the warnings they had given me about the long hours (60+ a week) and the fast pace of the course only served to fuel this excitement. Introductions on the first Monday were great – I was surprised at how many instructors there actually were, and then we jumped straight into theory and concepts that afternoon.

The first few weeks of the course

For the next two weeks we progressed through more concepts, from starting Test Driven Development (TDD) on day 2, to Object Oriented Programming (OOP) on day 6, things were moving very fast. Lessons were either code-along where we write the same code as the instructor as they explain it, or labs, where the instructor explains a problem and possibly a solution, and then we take anywhere from 5 minutes to 2 hours (depending on the problem) to code the solution. I found the TDD methodology particularly strange and cumbersome to work with at first, but as soon as problems developed to having multiple elements and parts of functionality it soon become the best thing ever (and now miss it whenever I write code without tests).

Any concerns I had about the pace, or any areas I was struggling to understand could be resolved with questions across HipChat (chat platform used between all staff and students) or finding the instructor after lessons – it’s very rare for them to leave straight after we finish for the day. Daily homework assignments are typically a consolidation of the material from class that specific day – or a combination of topics and concepts from several previous days. I found this first week easier because I could carry over knowledge from my previous job, and just spend the time learning Ruby idioms and best practices for them.

Concepts covered so far

So far the curriculum we’ve covered includes basic, language-agnostic programming theory, UNIX command line, Version Control (Git), OOP and TDD with Ruby, Databases (Postgres) and most recently a lightweight ruby web framework (Sinatra). Coming from a basic web server environment to using REST and a web framework was pretty incredible – it meant I could avoid huge amounts of setup and configuration to get a basic app up and running and instead spend that time on building additional features.

Project 1 & the weeks to come

My upcoming project is going to run over the course of a week and combine all the concepts above – as well as give me room to play around with other ideas and features to implement. I’ll likely be picking a project from a list of provided descriptions and then find myself dropping several hours a day into it without realising. We’ve also been assured the facilities in CodeClan are available for us pretty much whenever we need – sometimes the environment here can be great for getting away from distractions at home.

Looking ahead to the next few weeks we will be moving into javascript towards the end of next week, or the week after with another project around week 10/11. We will then go over some other frameworks to help with working in the browser. And then we will spend the remaining weeks on some computer science theory and statically-typed languages (likely Java), all of this coinciding with our final project.