
Meet The Crafters : Brad Robertson
What does craftsmanship mean to you?
Anyone who’s working on a craft is effectively just trying to further their knowledge and skills in a particular area. So craftsmanship as it relates to software development is a focus and a deliberate effort on improving your skills, improving your knowledge and ultimately trying to build better software.
So it’s more about the process by which you learn and develop yourself than the results that you’re getting out of it?
Yeah. Honing your craft is not just the goal of building something perfect, but that everything that you work on is ultimately a learning experience and teaching you how to get better at what you’re doing. The beauty of software (as opposed to, say, sculpting) is that you can go back an fix up what your may have incorrectly done the first time.
Some people call software development a science, some people call it an art. Which side of the divide do you feel you personally are on?
I think they’re actually kind of both correct. There are certain scientific principles I think that apply to a lot of software development. Certainly a lot of the theory is very scientific but when it comes to actually architecting and designing solutions to particular problems I think there’s a lot of creativity involved in that. And that could be looked at as an art. I think some of the best pieces of code I’ve seen are incredibly creative and they help inspire you to do the same with your own and don’t necessarily have strict scientific guidelines on how they’re built.
Cool. How did you get started with programming?
I went to university for computer science; the first bit of code I ever wrote was in university. So I don’t know what led me to computer science in the first place, because I didn’t really understand it at first but, I liked math a lot and I liked building computers so I thought those things would come together.
And what was your path to joining Influitive?
I was introduced to Influitive through a friend of mine who was running his own company, also a software developer working out of the same office originally as Influitive. So he had suggested to me that there was a company in his office that was looking for developers and I was starting to look around for opportunities because the current job I was at was not quite as inspiring as I wanted it to be. So I was introduced to the team through him and that started the whole process.
What’s the most interesting thing you worked on since you started at Influitive?
That’s a good question. It’s not really one thing - it’s the architecture of the whole system. We started as most companies do with this big monolithic app - where everything talks to everything and it’s just a jumbled mess of wires. Over time, we’ve started to actually tease out and tear it apart into different micro-services. The most interesting part for me was actually the communication of all these services, how they interact with each other, defining boundaries between them, and the form of communication that they use. All of that combined to me is just one big interesting problem.
Yeah, it must be a challenge to get it right the first time.
Oh, yeah, every time we built a new service we learned a little bit more, to the point where I think we’re starting to get the pattern down to more of a science than an art. But certainly going back to that earlier question, there were a lot of artistic choices made along the way.
Outside of coding, what’s your favourite experience you’ve had working at Influitive?
For me it’s actually not the day to day work writing code - all that kind of stuff is amazing - but what’s special about Influitive is the people here. The experiences that we have that aren’t just writing code and building software but interacting with really intelligent talented people. Things like doing teamwork exercises or brainstorming ideas for new products. That to me is the special part about Influitive. Not just that we build really cool things, but that there’s an extremely well-rounded group of people here, all with very compelling and interesting ideas for different products and process and how we run things. That’s my favourite experience in general.
What do you want to be working at in the future? What new technologies or practices or whatever are exciting to you?
I’m really interested in distributed systems - building services in such a way that there’s still a cohesive communication mechanism. Even though the individual pieces kind of do their own thing, the sum of the parts makes this whole massive architecture that our customers can utilize to all sorts of varying degrees.
If you weren’t a software developer what would you be doing?
I think I’d be working with my hands. Still sort of a craftsman, like carpentry or metalwork or something like that. I used to do a lot of metal work, like machining and welding in high school and I really loved it. And I’ve built a few things carpentry-wise at home so I think I’d probably be more of a skilled tradesman.
Cool. What qualities do you think are important in a software craftsman?
I think the most important for a software developer is not just raw talent and the understanding of how code works, but having an inquisitive nature. You need to be really interested in new ideas and technologies because they’re always changing as are best practices. The way that we communicate between services and how we store data is always changing. I think in order to be successful you have to be interested in it because you have to keep reading about all of these new ideas. Otherwise, your knowledge will be antiquated very quickly.
So to really be successful I think you have to want to learn and read about new things all the time.
What sort of practices would you like to see happening more in the industry?
I’d like to see more teaching about bigger conceptual ideas - like distributed systems concepts and things like that, from people who have done it. You meet a lot of coders and a lot of developers out there who are fine at writing software but I haven’t really done any workshops or worked with anyone who is more of a systems architect that’s literally written the code but also kind of envisioned these bigger systems. And I think in the industry that that is sort of special talent which you don’t really hear a lot about, it is just assumed that we have a distributed system or we have a service oriented architecture.