The importance of ignoring technology you don’t need
Software architect Rainer Stropek discusses the impact of REST, and explains the importance of selecting the right technology to become an expert in.
JAXenter: RESTful APIs are playing a central role in software architecture. What is it about them that has made them so important to software architecture?
So REST is kind of the ‘lingua franca’ of the internet. Whenever you have to approach a system and do something programming with the system, you probably will use in a new system today, a REST-based service.
And do common obstacles crop up for software architects?
Definitely, because REST is not a standard. REST is more an architectural guidance. And REST leaves a lot of things undefined. I’m a big fan of standards that are based on these REST principles, but that limit the degree of freedom.
Just a few examples – in talks that I give, I show standards for publishing REST service metadata (like Swagger or OData) – that makes it much easier to find such services and to handle them, because you can use code generators, you get better intellisense, you can – as a human and as a program – approach such services and ask them ‘Hey, service, what do you offer?’
REST as a basic standard doesn’t define anything about metadata. So I think the important thing here is for the software architecture say ‘Ok, we’re going the REST way, but we need more, we need a clear standard.’ Either you fill the gaps yourself, or you rely on more advanced standards that are built on top and are supersedes REST.
How do you tackle the problem of balancing a broad technical knowledge with areas of specific expertise?
I don’t know if there’s a general solution to this, but I can tell you my solution.
What I try to do is whenever I see a new technology, I try to do some kind of triage. So I ask myself ‘Is this technology relevant?’ I play a bit with it. Maybe I read an article or two. And sometimes I come to the conclusion that I can completely ignore a certain piece of technology.
I try to ignore as much technology as possible, because there is so much of it. And then there are these things where I think this might be interesting in the mid to long term. And then I actively look for… let’s call them ‘playground projects’. Either I do some kind of user group meeting session where I force myself into a situation where I have to learn more about a topic.
Or I write an introductory article because other people might also be interested in basic information to understand whether it’s interesting for them. And if it really turns out that, after a bit of playing around, that this technology is really relevant for me, well then I spend more time with it. I start reading, I do some exploration projects, things like that. And with that I try to balance, as you said, the breadth (the different technologies that are out there) and the depth (of any technologies that I think are important for me or for my business life).