Today I turned 30 (well ok, yesterday by the time I published this post), so I thought this would be a good opportunity to look back on the last 8 years of my professional development as a software developer. I should warn you now, this is a very long and completely self-indulgent post, so feel free to skip it. I’ve focussed on my first job and early career as I haven’t really blogged about this much before.
Back in 2004, I was a fresh faced Computer Science graduate looking to become a professional software developer. Thankfully during my degree I’d spent a year (not a year in industry as such, but thats a story for another day) with the Sheffield based Insurance organisation, Westfield Health. Whilst I knew the organisation and my old boss (who was a huge inspiration to me in my year out and the rest of my time at Westfield) was still there as the systems and database administrator, I had a new boss and I was pretty nervous. In I walked as a confident graduate, joining a small team of developers, analysts and support people, I thought I was quite good at this software development lark, how wrong could I be? As it turned out, I was very wrong, those first few months of my career were a big wake up call.
During my previous years experience I had mostly been working on bug fixes and new features for their internal systems, most of which were written in Visual Basic 6. Whilst this wasn’t easy and some of the code had a significant history which took some time to decipher, it was easy compared to my first project as a permanent employee, I was about to start my first major system, to process scanned claim forms, from scratch.
This was a daunting task, I desperately wanted to do a good job in designing the system, in order to make a good first impression for my new boss. I’d never built anything bigger than a small game at University and suddenly I was solely responsible for building a system which needed to integrate with the scanning process (built by an external company) and re-develop the existing claims processing and fulfilment. The first version was a pretty big mess, it was all over the place with no real sense of design, the good news was that it worked pretty well.
It was at this point the first two really significant things happened in my career. Firstly I met Jag Gill (who was to be the business analyst on the project), who would later become my mentor for this first part of my career, close friend and founder of GeekUp Sheffield (he now runs the GIST foundation), all of which would play a major part in my professional and personal development for years to come. Secondly, I realised I needed to do some serious work if I was to be any good at software development, so I hit the books, here is what I started with:
- Patterns of Enterprise Application Architecture – Martin Fowler (my first encounter with ThoughtWorks, who knew I would end up working for them, I certainly didn’t!)
- Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development – Craig Larman
- Test Driven Development – Kent Beck
Armed with these books and lots of reading time, I set out trying to write my first decent size (pretty small by my current standards but big for a single newbie developer) object-oriented system. Can anyone guess what happened in the first few weeks after this?
My first steps in using TDD and the patterns in the above books was pretty haphazard, I found writing tests really hard when I didn’t really have a sense for coupling and cohesion, let alone good interface design. This led to brittle and limited numbers of tests, which along with an explosion of patterns led to a code base which whilst it had significantly improved, it was also very hard for anyone else except me to follow. This was when I came to the realisation that a system only I could maintain effectively was going to be a significant problem for me and that all the techniques and practices I wanted to learn were all interconnected and would take patient and repeated practice and evolution.
At this point it’s worth mentioning that whilst I found the development of this system really challenging, it was finished on time, deployed into production with only a few (more than I would tolerate today) bugs and was the bedrock of scanned and online claims processing for at least the next few 4-5 years (as far as I know it still is today).
Over the next 4 years, Jag and I successfully worked on a number of major projects together (inc. the online aspect I mentioned above). I learnt a lot about writing code, setting expectations, making work visible and release management, of course I didn’t know the name for all of these things back then. I become a regular attendee of GeekUp Sheffield (Facilitating at the first one back in May 2008 and presenting a few more times along the way) and the other regular events (still attend as many as I can, despite not being in Sheffield much).
In 2007, my boss was promoted to the head of IT, leaving the software development team without a team leader. For a few months the team just carried on as normal, working pretty well on the day to day, but it soon became clear that we needed someone to look after the set of projects and other work we were doing. This mostly involved going to meetings with the rest of the organisations’ team leaders and managers and keeping track of progress.
It was around this time that I started rock climbing (thanks to Jason) and had learnt my next major lesson in my career. At the time the most I knew about team leading was from the book, Behind Closed Doors. The organisation had also started a separate department of analysts (I had no idea what this meant at the time) and we were trying to come up with a general process for projects and software development in the organisation. As you can imagine, this caused some pretty heated debates and at one point led to me making the huge mistake of giving someone feedback on the way they were handling the situation, the feedback wasn’t the mistake, delivering it by e-mail and copying in her team was!
My next big challenges were hiring two new developers and running the annual reviews, neither of which I had ever done and were both extremely hard for me as I find conflict and saying ‘no’ pretty uncomfortable. Before this, giving feedback, pairing and informal teaching had all just been hidden and informal activities in my job, some of them came naturally (though I didn’t necessarily do them well at first), it was at this point I consciously decided these were aspects of my work I wanted to do more of.
One of the developers we hired, Matt White, had a big impact on me, he provided me with a lot of support whilst I was getting used to team leading and became a close friend. He gave me the encouragement to become braver and to start experimenting, we brought in new version control and started our first ‘agile’ project. I remember the initial workshop we ran clearly to this day, without realising it, we were chartering. We took what looked to be a huge long-term project and found some core goals and features they wanted and by the end of the day had sketched an initial domain model.
This led to one of the hardest decisions I’ve had to take, it took me months to realise I wasn’t learning as much as I wanted to anymore, I wanted to see what working at a larger organisation was like, weeks to decide to leave and pretty much a whole day (a story in its own right) to hand in my resignation.
When I look back on my time at Westfield, I have a lot of happy memories, made lots of mistakes, learnt a lot from both these and the successes and made some friends that I still have today.
Going Bigger and my First Experience of Coaching
I had decided that I wanted to see what working at a larger company would be like and as luck would have it, I ended up seeing both a medium sized company (few thousand) and a large one (35 thousand) at the same time.
When I joined Edexcel (part of Pearson), I had no idea they were just starting an agile/lean transformation, my interest in agile had increased of the years and this turned into the ideal time for me to practice some of the things I’d read and chatted to people about.
During my two years, I got to use scrum (my first real experience of an agile project), travel to London, work on some big projects, learn about SOA, web services, BizTalk, legacy systems and spend many a meeting chatting about architecture.
All of that falls into the background of the really significant things which happened to me at Edexcel. Most importantly, I met three people who had and continue to have a big impact on my career (and long may that continue). Those people are Liz Keogh, Marcin Floryan and Paul Dolman-Darrall.
Paul showed me how a manager and leader could choose to behave, his drive and determination continues to inspire me and his depth of knowledge is astounding (which he impressively demonstrated in his Agile 2011 session).
Marcin and I have become close friends, he demonstrated a courage and bravery to act, that I haven’t seen in many people before or since and which I aspire to match. He showed me how to be a hands-on manager and yet let his team of analysts have autonomy and at the same time continue to be an excellent developer.
Ultimately, it was Liz who had the most influence on my time at Edexcel. I remember when we first met, I didn’t realise it at the time, but even her entrance taught me a lot about influence in an organisation. She opened my eyes to the possibility of me becoming a coach, taught me BDD and helped me gain enough self confidence and belief to start the next part of my journey.
I was lucky enough to also work with some excellent agile coaches (Anthony Marcano, Kevin Ryan and Cesar Idrovo) and to be taught by Kevlin Henney, all of which deserve more of a mention than I’m giving here, I could fill many times the length of this post with some of the stories.
There are so many stories from this formative time in my career, I can’t decide which ones to include, so instead I’m going to leave them for another post or two.
Compared to leaving my first company, leaving the second was much easier, fate had handed me the inspiration (the people around me) and the opportunity (a rather drunken conversation in the pub with Jim Webber) to take the next major step in my professional development.
I wrote up my initial thoughts on working for ThoughtWorks here, so I won’t repeat them here. It’s safe to say that, whilst no company is perfect, I’m learning lots, finding lots of challenges, stretching some of my skills, encountering different environments and most of all, made some good friends and had lots of fun with my fellow ThoughtWorkers.
2011 was an exceptional year for me, it was my first full year at ThoughtWorks, working on projects for three different clients, visiting Belgium and the US (twice) for conferences, co-organising XPDay, becoming a regular at XTC and making lots of friends along the way.
I’ve been lucky to work in some excellent ThoughtWorks teams, some of which have had a profound effect on my recent thinking, to name a few, they are: Sarah Taraporewalla; Tom Scott; Akash Bhalla; Dan Abel; J K Werner and Jim Barritt. Whilst I haven’t really worked directly with him, Chris Bird has been particularly supportive of me in my initial career at ThoughtWorks, he is always happy to listen to me go on about any inane subject.
XTC has become the bedrock of my professional development, I’ve met (and reconnected with) so many wonderful people, to name just a few is unfair but here goes (Chris Matts, Chris Bird, Ben Matthews, Julian Kelsey, Andy Parker, Bob Marshall, Simon Stewart, Jon Jagger, Andy Palmer), I’ve learnt something from everyone I’ve met there.
I was lucky enough to meet Tobias Mayer in the lobby of the LSSC hotel, the short yet insightful conversations were a pleasure. I hope to see my fellow ThoughtWorkers who I met there, Jason Yip and David Joyce again soon. I will never forget the english contingent dancing at the awards dinner.
Agile 2011 was a special conference for me, I got the opportunity to volunteer, which I enjoyed thoroughly and am blessed to be able to do it again. Once again I met so many wonderful people, in particular, two couples had a significant impact on the rest of my year (and life for that matter), Simon and Saffron Bennett and Simon Cromarty and Johanna Hunt.
Finally, XPDays Benelux gave me the opportunity to meet Olaf Lewitz, whose sheer enthusiasm, energy and camera skills leave me in awe most of the time and for inviting me to Agile Coaches Camp Norway which had a much bigger effect on me than I was expecting.
2012 and beyond …
2012 has already started strongly for me, the Agile Coaches Camp Norway at the beginning of January was awesome (blog post to follow about this, especially the coaching dojo) and I’m currently starting to rediscover my tech leading skills and practicing my chartering and facilitation skills as part of an inception for my current client.
I have plans to be at Agile 2012 (as a volunteer again) in August and ALE in Barcelona in September. If I can fit it into this year, hopefully I’ll be a trainer at ThoughtWorks University and I really should get around to submitting some sessions for conferences
If you’ve made it this far, thank you so much for reading, I hope you got something out of this especially long post and as always, I’d love to hear your thoughts and feedback.
If your name hasn’t been mentioned here, please don’t be offended, I have been lucky enough to meet lots of wonderful people in my career so far, I have had so much fun and learnt so much, thank you to every single one of you!