Skip to content

Clare Sudbery

ThoughtWorks

Clare Sudbery is a lead consultant developer with ThoughtWorks. Eight years ago she returned to IT with a sigh of relief after failing to persuade teenagers that maths is fun. Since then she has embraced all things XP and is on a mission to awaken the inner geek in clever women (and men) everywhere.

Inteview image for Clare Sudbery

What led you to become a developer?

It was way back in the early 90s and I had completed three years on a maths and philosophy degree without even touching a computer, then ended up working as a council housing officer. I had friends who were game programmers and realised I had missed a trick: software engineering was the perfect match for my analytical puzzle-loving brain. So I quit my job and studied for a Masters in Computation, going straight from there to my first software developer role.

Twelve years later I was bored and disillusioned and left the industry for four years. I didn’t think I was coming back. I spent those four years being a freelance writer, having a baby and then retraining as a high school maths teacher. But I was hopeless at controlling classroom behaviour and ended up running back to IT with a huge sigh of relief. For the last eight years, I have embraced learning and Extreme Programming, and I'm currently loving my role as a lead consultant developer with ThoughtWorks.

What’s your setup and development environment?

What’s your favorite stack to work with?

C# at the back end, using Visual Studio as my IDE. A lightweight REST API like Nancy in the middle. For the front end, I'm currently enjoying playing with Swift for iOS development, but I've never quite mastered front end development so I'd normally defer to whatever front-end experts I happen to be working with.

What are your top 5 go-to repos?

I don't think of repos that way. They're not like podcasts or websites or sources of entertainment. I dip into other people's repos briefly to see examples of whatever is relevant to what I'm doing, and then I forget all about them!

Having said that, this repo created by a colleague of mine contains some really useful advice for people who are new to coding: github.com/charlottebrf/coder-newbie-advice

What technologies are you most excited about now?

I’m currently working on a project as an infrastructure engineer, and I’m actively exploring how a test-driven software development mindset can be brought to the world of elastic cloud. I’m also excited about finally (after nearly 20 years) learning how to live comfortably on the command line. The book “Data Science at the Command Line” by Jeroen Janssens is helping with this.

Weirdly, although I've been surrounded by microservices enthusiasts for some time now, and worked on several service-based architectures, the universe has not brought me any microservices experience. It would be lovely to rectify that.

I'm really interested in what can be done with data science, machine learning, deep learning, etc. But I'm also increasingly aware of how these technologies can be misused or misunderstood, for instance when poorly-examined algorithms are used to make life-changing decisions about criminal justice, insurance, finance, etc.

But to be honest I've always been more focused on what's behind the technology. The patterns and processes we use to build software. The ways we interact as humans. For instance, I've always been an object-oriented gal but I'd love to find the time to dig more into functional programming and compare the two. I'm not that bothered which new shiny technology I'm using, I want to know what's going on behind the scenes.

(cartoon courtesy of xkcd: xkcd.com/1289)

What does your ideal workflow look like, from messing around to production?

If we're talking about personal projects: If I was a perfect human being with limitless time, I would use a simple tool like Trello to display work in progress and store a backlog which I would regularly review with a team of enthusiastic people, keeping an eye on current priorities and WIP limits. I would have deployment pipelines in something like Circle CI, deploying a progressive web app continuously to the cloud, with beautiful dashboards giving me useful actionable information about the current state.

I would have a fit-for-purpose test suite with a mixture of acceptance tests, integration tests, and unit tests, with an open-source code base in GitHub and a whole community of passionate developers helping me to build something amazing.

In reality... um... I feel very proud of myself for practising pair programming and TDD with small commits that are fully tested at every turn. On one of my personal projects, deployment is more or less continuous. On the other one, not so much. At Hack Manchester last year we managed to run mini sprints with some story mapping and mini retros. We won Best in Show which was very exciting, and the judges commented on how organised we were.

Our Hack Manchester team:

If we're talking about my professional life: I don’t like to be too prescriptive about exactly which tools, technologies or processes are used. I want those decisions to be reached by a team of people, taking local constraints and considerations into account - and these can vary widely. But generally I want to see the following:

  • Good communication with stakeholders to collaborate across the whole team in producing a well-prioritised backlog.

  • Agreed ways of defining value and measuring progress.

  • Small numbers of works in progress, with everybody swarming to clear blockages, and with deliberate slack built into the system (don't try to schedule every hour of every team member's life).

  • Just-in-time preparation, where appropriate team members get together at the start and end of each piece of work, to agree on the definition of done.

  • A high degree of pairing and mobbing, to spread knowledge across the team and reduce the need for long meetings.

  • Continuous integration and deployment, often to the cloud.

  • High involvement of dedicated test professionals.

  • Cross-functional teams with data, UX and devops functions kept in-team where possible.

  • Good communication and collaboration across all layers of an organisation, with as much autonomy as possible in individual teams.

  • Small commits, no branching, automated tests.

  • Test-driven development.

  • Fast feedback loops with user input contributing directly and meaningfully to ongoing development decisions.

  • Regular retrospectives where participants are given the freedom to examine and refine every aspect of their workflow, with no blame or judgment.

What are you currently learning?

I love to learn! I’m learning several things at once, which isn’t unusual for me:

  • Infrastructure engineering: Command line proficiency, Terraform, GCP, maintaining an ELK stack (Elastic Search, Logstash, Kibana).
  • Data engineering (data pipelines and how to service the needs of data scientists).
  • Swift and iOS development, but moving towards cross-platform mobile development.
  • I've also been consolidating my Software Queenery skills such as TDD, refactoring, clean code, and software design

(cartoon courtesy of xkcd: xkcd.com/1053)

What project are you most proud of?

I'm currently working on a personal Accounting & Reconciliation tool that has reduced the amount of time I spend on private accounting each month from 4.5 hours to 2.5 hours. It has a real practical use and the code is very satisfying.

What are beginner developers not learning that is critical in this day and age?

You know what, my answer to this may not be what you expect. I don't think we put enough emphasis on the fact that there is NO one specific technology or skill that beginner developers must learn.

What they must learn is that the learning never stops. The learning is the job. Everybody you meet, no matter how in awe of them you are, will have huge knowledge gaps and will still be learning new stuff. If they're really good, they will acknowledge this. They will embrace it and celebrate it. If they suggest otherwise, be wary of them.

The most important skills you need as a developer are these:

  • An open mind
  • An eagerness to learn
  • A willingness to communicate and collaborate
  • Empathy
  • The ability to think critically and analytically
  • The ability to pay attention

Let's Stop Making Each Other Feel Stupid

What tech challenges are you facing at your company?

I work for a global consultancy (ThoughtWorks), so we don't have our own in-house technical estate. As a consultancy, one of our big technical challenges is maintaining our Tech Radar - which people across the industry rely on to give advice about current tools and technologies. People would love it if we could tell them exactly what to use on their projects, but the reality is that there is such an explosion of new tools, libraries, etc each year that it is very hard to maintain an objective view and give advice that can live independent of company-specific constraints.

What music do you listen to whilst developing?

Anything you want to promote or plug?

I had a great time making this podcast about teaching software developers, with @CarlFranklin and @RichCampbell for Dot Net Rocks, and I'd love for people to listen to it: dotnetrocks.com/?show=1621

I'm speaking at Lead Dev London in June 2019 on the subject of time and working hours, with my wonderful friend and collaborator @SalFreudenberg: https://london2019.theleaddeveloper.com/talks/#sal-claire

I have two blogs:

Interview image for Chris Fritz
Chris Fritz

Freelance

Chris Fritz works on open source and helps companies around the world build incredible web frontends. He’s most well known for his work as a member of the Vue core team, writing and curating documentation, along with other tools and resources to make life simpler for web developers.

Interview image for Chris DeMars
Chris DeMars

Tuft & Needle

Chris DeMars is a front-end developer from Detroit, Michigan working remotely for Tuft & Needle. For his community contributions, he holds awards as a Microsoft MVP in Developer Technologies and Google Developer Expert in Web Technologies. He is also an international speaker and organizer for Vuetroit and co-organizer for the Ann Arbor Accessibility Group.

Interview image for Jesse Jorgenson
Jesse Jorgenson

Evernote

Jesse Jorgenson is an engineer at Evernote that focuses on front-end engineering, rich text editing, front-end dev-ops, and Node.js. He has a degree in mathematics from James Madison University and a background in music. He lives in Austin, TX and primarily lives off of breakfast tacos.

Be the first to read new interviews just like this one with Martin Konicek. from top developers.