Logo

Duncan Edwards: High quality code, building tech teams, and the worlds of a polyglot programmerPosted 10 months ago by Client Server

Growing up, Duncan Edwards knew he was going to be a software developer. For more than 20 years, he has done exactly that. He speaks to Client Server about his journey from a junior developer in his native Australia, to leading world-class engineering teams in London.



Client Server : You’re from Australia and now living in the UK. What prompted you to move over here?

Duncan Edwards : That's a good question. Australia has a very high standard of living. Great place to grow up but I did want to see the world. I didn't want to spend my whole life in Melbourne. I was fascinated by Europe. I was fascinated cold weather countries. So, I was doing fine in Australia. I had a nice job that I really liked, but I was thought, “No, I can't. I want to see the world now”. I have a British passport through my father, so I made the move to London and never came back. That's what I wanted. I didn't want to maybe go for a year and see the Tower of London and then come back and go, "That was fun." I wanted to change my life,

Client Server : How did you find the transition from working as a more junior developer in Australia to building a career here in the UK?

Duncan Edwards : Initially, it was terrible. I arrived in 2001 where the whole bottom went out of the tech market and then September 11 took down whatever else there was. So, finding that first job was really, really hard. I went from a really amazing job in Australia with a bright future. I felt invincible, and then I came overseas to the U.K, couldn't find a job. Sending applications became a full-time job. That was horrible, but that probably set me up for the rest of my career, because that was so tough that it maybe galvanised something inside me. And then I found my first job through Client Server back in 2001 – your chairman David Kerr placed me.

Client Server : You describe yourself as a polyglot programmer - what does that mean to you?

Duncan Edwards : Programming wise, it’s about more than knowing many different languages. It’s about being able to go into other worlds. In my career I've been a C++ developer. I've been a C# developer. I've been a PHP developer in a totally different ecosystem of Linux and WordPress and PHP, and now lately, I've been a React developer in JavaScript world. It gives you a perspective.

Client Server : Many top developers struggle going from coding full time to leading a team. How did you find that transition?

Duncan Edwards : It’s been tough. I was a team lead in my early 20s and I wasn’t ready for it. I don’t think I wanted to be a team lead, so I behaved like a developer. I was reading a biography of the triathlete Chrissy Wellington, who had a coach who would boast about how much faster he was on training rides. She said the problem was that he didn’t want to be a coach, he wanted to be a triathlete. I wasn’t ready to give up being a developer. As I've become a team lead in the last five years, I've seen that as an end to itself. It's like, I don't care if I get nothing done, as long as my developers are getting stuff done and they're happy and everything's functioning correctly. I enjoy the task of managing people instead of seeing it as an annoying thing that I have to do.

Client Server : How do you build a tech team?

Duncan Edwards : Because I've done a lot of programming, it's reasonably easy to win over the respective teams. I can generally come into situations and for whatever reason, people seem to trust that I know what I'm talking about. You really need to win the respect of the team as quickly as possible or they won't respect you and they won't do what you want or they won't work with you.

Client Server : That brings up a really interesting point about managing headstrong developers. How do you get the best out of people like that?

Duncan Edwards : That's hard. Those guys, the headstrong guys, are the hardest because they find it very difficult to see other people's point of view. I like to talk things over. I like to reach consensus on a group call. I think what tends to happen is if someone wants to do it one way or another, everyone just goes away and creates their own worlds. But if two people disagree, then we need to talk it out until everyone's happy. If we've got two people going off doing different things, that's never really going to be reconciled. I find if you just make people do that, they will eventually reach consensus.

Client Server : You’ve talked about producing high quality code – what does that mean to you?

Duncan Edwards : This is a big topic. There are two elements. One is how the code performs. Is it fast? Is it robust? Does it have very many bugs? You want to get to the stage where there's nothing to support because everything works. That's the performance aspect to the code, and the second thing is the bit that you don't see, which is all really about the readability of the code. It's very rare that you'll produce code in a vacuum. Programming nowadays is always a team game. The ability for other people to be able to read and understand your code is probably the single most important aspect of it. If you write code that's hard for people to understand, then that's a problem. All the code that I like my teams to write, we need to be able to come in and fix stuff or come in and add stuff to it. But generally, it means reading code that is easy enough to understand that you can just hand it over and someone will understand it.

Client Server : Twenty years ago, you were placed in your first UK role by Client Server. And in 2021, Client Server placed you again. How did you find the experience this time around?

Duncan Edwards : It started by me finding a job that I thought I would be suitable for and applying to it. For whatever reason, that job, I think it was filled or I wasn't the right person. That job never really eventuated, but that ended with my talking with Callum Marsland in Client Server’s Frontend Team. He interviewed me quite in depth, more in depth than anyone had, for about maybe 30 to 60 minutes. There were technical questions, but also lots of more open ended questions: “What do you want with your career?” “What are you looking for?” “What's the niche?” He then did something that no one else has done: he said, “I'm going to go away and find the right positions for you”. That's quite different. Most places, they have positions and they basically want to put you through for anything that matches. You're C#. This is C#. Great. Callum took a little bit of time to actually find roles that really matched, and then he went through four of them. We got it down to the two that I went forward with. I felt that the jobs Callum introduced me to were real and he also seemed to have a communication channel with the customers that was actively being engaged. So, there was an element of pre-checking too. It meant I could focus my attention on doing well in the interviews without worrying about whether any of it was real, or whether I was wasting my time.

Client Server : How do you feel about the role you’re starting?

Duncan Edwards : If you actually look at the job description, I'm not an amazing fit. There's probably half of the stuff on there that I don't have, but I was actually a really good fit for the job, but it took a little bit of soft skills of someone actually doing their job, like Callum, to see that. When Callum talked to [the employer] and then they talked to me, they were really happy. The job brief is not always a great indicator of what they're actually looking for. I'm glad he made the effort, because I'm really excited about starting this job, but I don't think with keyword matching I would've even got put forward for it.

Client Server : Finally, what are you excited about?

Duncan Edwards : I was a UI developer three jobs ago, and I'm back doing UI stuff now, and that's exciting. The React, the JavaScript space is just explosive at the moment. I've never seen anything like it. So, I'm just excited to see what else they're going to build, what web development's going to look like in five years. I think that UI development is really exciting space, and also I think people are still strong with microservices. I don't think the microservices space has matured. I don't think we've quite got it right yet. Most of the C# jobs I've looked at are people that are trying to transition from a monolith to a microservices infrastructure and having a bit of a hell of a time. But it's certainly exciting.