Interview with Zdeněk Němec
We are here again with an API expert talking about his life, ideas, and insights. This time, the man of the day is Zdenek Nemec, the guy searching for beauty and elegance among DSLs and ASTs for Apiary and a witty interviewee.
Q: Zdenek, you have been working in the sphere of technology for more than 15 years. When did you realize you would become a computer engineer?
A: Video games! My first program was a cannon shooting game written in Pascal. And when I've played the first Diablo multiplayer over 36.6k modem the course was set.
Q: Your first computer was Amiga 1200. Do you still have it working? How did you get so lucky to get one as a child? Is there any special memory connected with it?
A: That computer is incredible. It is still running and working flawlessly! It has a 20 MB (!!) drive attached to it. The hard drive hosts the full OS, The "Worms" game, a spreadsheet, a word processor and still has more than 50% of free space left. Talk about efficiency!
Q: You have a wide development experience and are currently injecting the treasure into Apiary.io. Your team seems to be incredibly cheerful. Do you have a funny story to share? What do you like most about your job?
A: People. I am incredibly lucky to work with the most talented people in the industry! Furthermore, the whole API community is just awesome. Especially people around API Craft and RESTfest conferences! These conferences are always a blast. Lots of fun and always so many emerging ideas shaping space.
Plus watching the heated discussions between Mike Kelly and Kevin Swiber on forms in hypermedia is always fun!
Q: Here, in API2Cart, we love the definition, data is your API. Could you say a few words about MSON?
A: APIs are really all about semantics. The semantics of your resources and transitions. The meaning of your data, if you will. Everything else is just a technical – implementation – detail.
If you look at an API, the first thing you want to know is WHAT you can do with it and WHAT you can get from it. Not HOW you do that. Unfortunately, nowadays, many APIs (documentations) are mixing the two together making it hard to understand what data you can actually get and what you can do with them.
MSON (markdown syntax for object notation) aims to facilitate just that – it gives you a clear, human-readable look at what the data are. It is the description of your data – the definition of the semantics of your application domain.
And frankly, as an API consumer the "WHAT" is the only thing you should care about. The "HOW" part should be driven by the server. Failing to do so results in the common problem of many APIs today – coupling clients with the server – and thus prohibiting the API evolution. Making changes to API unnecessary complex due to its brittle clients.
Q: On your website, you write that you are dreaming about better designs. What is imperfect about those we have today? What would you change?
A: Communication and understanding. Programmers are usually good at problem-solving. Not so much in communication. If I could change one thing, it would be encouraging the communication between everybody involved in building and consuming the API.
The API design – or architecture – is only as good as it is the understanding of it. It is OK to choose a certain architectural style if everybody involved understands the consequences.
Need a temporary API fast? Have control over the clients? Cut corners. Couple the clients with the server. Hard code everything.
Need an API that lasts for years and can be evolved? Decouple clients from implementation. Possibly choose the style that made the world wide web so resilient.
The point is, everybody working with an API (including its stakeholders) should understand the pros and cons of the API design being used.
Q: How would you define what an API is for a non-techie person? What about API-eCommerce connection and its pluses?
A: I tend to think about API as an interface between humans. APIs allow humans to create programs that process and manipulate various resources in distributed systems. From reading a web page or ordering apples to operate a remote device.
When it comes to eCommerce it is a no-brainer. APIs allow your customer to access what you are offering. As Kin Lane said, an API is the wholesale presence of your company on the web. What are the benefits of your company having a Web page? An API for business is what its web page was 15 years ago.
We want to thank Zdenek Nemec for finding time to share his memories, knowledge, and insights with our readers. :)