I'm an independent software consultant working in London. I help developers and businesses work smarter, communicate better and write clean, well tested code. I enjoy helping people learn how to build better software, using leading-edge tools and frameworks (mostly in the .NET / C# / HTML5+JS spaces), while getting to go home on time without stress.
First and formost though, I'm a developer who enjoys building software that people use, especially open source frameworks and tools, and I can help you and your teams get the most from (and hopefully contribute back to) popular open source projects.
I can work with you and your business training developers through pair programming, agile "transformations", running retrospectives and doing hands on development and delivery, either solo or ideally as part of a team of your own coders.
If you're interested in talking about development practices and low-risk software delivery techniques, get in touch.
Prior to consulting full time, I spent 4 and a half years at JustGiving
as the sole "Coding Architect / Technical Architect". I led a team of around 30 technical staff on an industry leading site dedicated to online fundraising and charitable giving and loved working at a company staffed by real people. I helped scale technology and the technology teams at JustGiving from a small startup-scale dev team to several teams maintaining a top tier "web scale" site. JustGiving work in the .NET stack (C#/MVC/NancyFx/NHibernate/Ninject) are militantly agile in their development approach.
Day to day, I was responsible for guiding the team, working with the product managers on new product for the company, and working with the CTO and CIO planning the future of technology in the business. I spent time mentoring developers and offering guidance, delivering stories directly and doing tactical pieces of pairing and development. The rest of my time was spent prototyping and investigating new technologies for their application into the JG stack.
I occasionally speak and run in-house training sessions for charity developers and provide direct support to clients of our API.
Previously I've worked in the City on Sports Betting and mobile application development, for a major subsidiary of Vodafone in Manchester (Yes Telecom) and for an award winning eCommerce startup on intelligent pricing engines and end to end producrement software. In addition to this, I consult from time to time for a few small startups and freelance projects (if they appear interesting) and love dabbling in mobile software, great API design, fluent interfaces / DSLs, touch screen / "NUI" interfaces and anything else that looks interesting.
I've been working with C# since the first .NET betas and I'm a bit of a language feature nerd. I've been doing agile software development since 2005, along with adopting XP practices to make sure my code doesn't suck. I've done some tool building, lots of CI and lots of automation all to make this happen.
I'm an advocate of continuous delivery, open source software and tooling, and shipping fast and iterating. I love building software at web scale, with document databases, distributed caches and other buzzword-friendly-but-actually-useful technology. I've done a whole lot of the keyword matching "WCF, WPF, WF, MSSQL" stuff in the past and can know how and when to use it, but I'm much more at home these days producing software that trades in the domain of the internet - RESTful services, APIs and smart use of front-end tech.
Outside of coding, I've functioned a team leader of several 8-12 man teams, acted as a scrum master, run ideation workshops, retrospectives and hired teams of developers. When required to, I've managed out-sourced teams (using a pull-request model), but I'd not recommend it as a good way to build software.
I love what I do, otherwise I wouldn't do it. You only produce great software when you're enthusiastic about what you're doing.
Of the "influential set" of programming books, I probably enjoyed "The Mythical Man Month + Essays"
most because it served as interesting casual reading as well as education. If I recall I picked it up due to the number of times it's name dropped and was pleasantly surprised. I rate "The Pragmatic Programmer"
(it contains lots of knowledge many developers cultivate after a year or two on the job but it's very well written) and I've most recently enjoyed Clean Code
I've been working predominently with Microsoft tech since graduating The University of Manchester Institute of Science and Technology (UMIST) (now Manchester University
) with a degree in Computation.
One of my earliest childhood memories is attempting and failing to use a Commodore 64 (+ tape deck!)
and slightly later, an Amstrad PCW8512
. These memories certainly feel, at least in retrospect, as the starting point in my lifelong obsession with technology.
In the late 80's I moved with my family to Hong Kong
(primarily due to my fathers work), giving me an odd mix of cultural references from my childhood. I was obviously fairly young, however my memory of the island, the schools and the surrounding areas of the middle and far east (which I remember visiting on various holidays) is still clear and striking. My parents divorced in the early 90's and in 1992 I returned to the Manchester with mother and siblings. And a Gameboy
and a stack of 30 games.
The rest of my teenage years, in retrospect, were very happy. I became obsessed with videogames, but not really to play them, but more to break them. I gained a childhood obsession with what amounts to tedious bug testing of 8-16 bit games, and that lead to my needing to know how they worked. I dabbled around with various flavours of Basic, like any curious child and seemed to enjoy reading Computer Shopper
and PC Format
after my mother brought back an old 386 from work so she could work from home (complete with Dos, Windows 3.x and WordStar
) in 1993.
In early 1995, after much pressure and begging, my parents bought a 486-DX2, from Toys' R' Us, of all places. One of the early Compaq Presarios
, it had a CD-ROM drive and I could play Star Wars: Rebel Assault
on it. On top of that, I could play all of LucasArts adventure games
. After spending time with the admittedly fancy looking Game Boy and then Mega Drive
, the difference in both pace and aestetic of PC gaming was both exciting and addicting. For the first time I had the ability to start digging through the games files on the file system and see what I could break. We managed to get some kind of Windows 95
upgrade deal when we bought the computer (which I remember installing off 50+ floppies that I still have), and the short answer to the question "what could I break" was "Windows". And it was fun.
I broke that computer so many times I cost our family a small fortune in repairs. But then I learnt to fix it, and then I learnt how to fix other computers and other problems. At the same time, I started attending "The" Manchester Grammar School
. I remember touring the school at an open day, a very prestigious institution, established 1616, devoted to a high standard of learning and I remember seeing huge computer labs and feeling particularly excited. When I started school there however, it became apparent that the institution was just a little bit too traditional and they actually didn't teach anything more than basic word processing.
I was terribly dissapointed and recieved a very traditional education (including ancient greek and latin) instead of what I really wanted to learn. The education was worthwhile and character building. Like many people, I didn't really enjoy school at the time, but in retrospect very much appreciate the education I recieved, both for it's timelessness and the amount of prepairation for the outside world I received as a result. At the end of my education there, computing still wasn't an option (I briefly considered going to a sixth form college to remedy this) and I ended up specialising in Art (eventually computer graphics / design), English Language and Literature, History and Politics.
Throughout my teenage years I maintained a healthy obsession with videogames, cinema, and later as a result, music. The passion for these subjects combined directly lead to "taking programming seriously" and really getting into computing. From 1996 onwards, after reading about the "Internet" in PC Format, I convinced my mother to sign up to Compuserve
, and recieved one of their ever useless numerical username and email addresses and distinctly remember struggling to configure WinSock
to browse the early internet in Mosaic
. It was an ugly experience, but I discovered USENET
at the same time which somewhat sweetened the deal. I'd been subscribing to Empire magazine
since we returned to the UK, and I decided I wanted to make a website about films. It obviously didn't work (and in 1999 "Ain't It Cool News"
effectively did what I wanted to do) but I learnt HTML (3!) on the way and caught the web publishing bug.
I attempted to run a few websites until in 1997 "Grand Theft Auto"
was released on the PC and I got into the game modding scene. I'd dabbled earlier when Quake was released a year earlier, but spent more time enjoying laggy deathmatch than hacking the game. I distinctly remember DMA design releasing the data format documentation for GTA and a number of user created level editors and guides getting released (which for trivia, were later used by DMA to produce GTA2) and I built, at first, a few simple patches for the game. In order to distribute these patches, I started a website, which in turn, I needed to maintain. So I learnt Perl
. And then I spent some time attempting to learn C++ from the biggest book I had ever seen in my life. Then one month PC Format featured Borland C++ Builder
on it's covermount and I started to approach development seriously, in part due to the (for the time) groundbreaking RAD tools and WYSIWYG designers available in C++ Builder 3.
The dotCom bubble was in full force around that time, and I got a few small jobs producing websites for small firms, friends and friends parents, using my newly learnt development chops. It was all very small town, but exceptionally character building. My mum realised I was on to something, and despite her lack of technical knowledge did her best to encourage it. I enrolled in night classes at a local college when I was 15 and did a City and Guilds certification in C and C++
. The average age of the students there was about 35 and I felt a little out of my depth, but I managed to produce vending machine simulating C console apps with the best of them.
As any contrary teenager would, when I was at Manchester Grammar, effectively unable to do any technology, I spent all my time doing so (often letting my other work suffer) and as a result, when I graduated, I was absolutely certain I wanted to study computer science at degree level. I spent a large portion of my degree wishing I'd done art. In retrospect, this was because I don't feel the majority of the degree was interesting or well taught, it was over subscribed and not especially enjoyable, but I pushed through. I did occasional contract work on small development projects throughout uni. In the summer between my second and third years I started doing occasional work for the trading services department of the university, cumulating in the porting of a registrations system into the then-new .Net framework from VB6. I pretty much learnt VB6 on the job the first week there, and I loved programming with meaning again.
I've never really looked back.