This month Codurance is celebrating its first birthday. A lot has happened during that time, including the hiring of two apprentices. One of which, I am pleased to say is me!
Three months into my apprenticeship, I thought I would provide some insight into how my apprenticeship is progressing, what I do day-to-day and where I see things going over the coming months.
First, the obligatory self-introduction.
My name is Toby and I joined Codurance in September this year. I was a recent graduate of Makers Academy (a 12 week software development boot camp) and had said ‘goodbye’ to a seven year career in the not for profit sector. In addition, I was a brand new, first-time Dad.
So here I was, my life pretty much turned upside down (in a good way of course!) and about to turn my hobby into a new career.
I came across Codurance when browsing an issue of the London Ruby User Group newsletter. The moment I read Codurance's recruitment advert, I knew I wanted to work there. This wasn’t your typical software company. This was a group of people that really cared about how they crafted code. These were craftsman. I knew if I got to join the team I would be learning from the some great and well-respected software developers.
The technical test was a lot of fun. My code was far from perfect, but I learnt an awful lot in the process. Somehow, I must have managed to demonstrate an understanding of the fundamentals and was called in for a pairing session with Codurance co-founder Sandro Mancuso.
To say I was nervous, was an understatement. I had read up a fair amount about Sandro. His professional mugshot — a classic conference speaking pose, complete with head microphone — was enough to get me into a whirlwind of self doubt. Will I make the grade? Is he going to shoot me down? Do I fit the profile ? Will my ‘software boot camp’ experience be enough?.
A few days later, I was both surprised and thrilled that I got the email with an offer to come on board. I couldn’t believe I had made it this far.
So what have I been up to over the past few months? If you have little time and want the abridged response, here is is.
Write code. Delete. Do it again. Write the code. Delete. Do it again...
On the surface, it would be easy to say I have not really done that much.
Have I produced a website? No.
Have I produced an app? No.
Have I even worked on a client project? A little. For the most part, I've been observing with interest from the sidelines.
The devil is in the detail however.
Both I and fellow apprentice Amir, have been working on a number of small, but very challenging coding exercises, sometimes referred to as code kata. The problems have been created by Sandro and the team to help us learn certain ideas, stress-test our abilities and, probably unintentionally, cause us some sleepless nights.
You see, creating a piece of software is really important. But when it comes to the early days of our apprenticeship, what is more important is how we build it. Hacking together code is not good enough. Clean code, extreme programming principles and test driven development are the core areas that we have been tasked to master so that anything we do end up building for the client not only works, but works well, can be changed easily if required, and keeps working well into the future.
The concepts we are trying to learn are arguably, quite basic and easy to understand. But they do not always translate seamlessly when it comes to implementation.
Sandro will regularly review our code and critique it. I’ll delete the code and start again. I’ll get a bit further, reach a wall. Delete and start again.
Each week, I seem to develop, as if on cue, what Sandro calls a new ‘obsession’. The first time I ran into trouble with a particular coding exercise was because I was passing primitives into parameters. The next time I went to the opposite extreme and went on what can only be described as a class extraction rampage, morphing my code base into something that became simply unmanageable.
At first deleting the code and starting again was more than a little discouraging. But over time, thanks to the repetitive nature of the learning process, I began to emotionally detach myself from the code. Once this happened, the concepts began to sink in faster.
Throughout the last three months, Amir and I have certainly had our heads down (or up towards the ceiling in despair when certain tests just won’t pass). It been enjoyable, often stressful, but above all, kind of enlightening, particular when I look back on where I was when I started.
Whilst writing code is certainly a big part of what I do and will continue do in the future, at Codurance it’s not all about 0’s and 1’s. It’s a small but perfectly apt company, but it means Amir and I will need to do more than just write code once we graduate from our apprenticeship. Over the coming months our focus will shift to software design and developing the soft skills required to work effectively with clients (determining what they want, capturing requirements and so on).
What I hope ultimately, is that this apprenticeship and the professional career that follows will enable me to become what is sometimes called a ‘specialist generalist’ - the ability to do lots of things to a very high standard.
With that goal in mind, I know deep down my apprenticeship will never truly end. There will always be something to learn and someone better than me to learn from.
That’s why I switched careers and joined the team at Codurance.
More information about Codurance's Apprenticeship Scheme.
Software is our passion.
We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.