{"id":669,"date":"2022-10-31T12:09:11","date_gmt":"2022-10-31T12:09:11","guid":{"rendered":"https:\/\/infobip.com\/developers\/?p=669"},"modified":"2023-09-11T14:33:33","modified_gmt":"2023-09-11T14:33:33","slug":"pay-attention-and-take-notes-writing-great-documentation-in-tech","status":"publish","type":"post","link":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech","title":{"rendered":"Pay Attention and Take Notes &#8211; Writing Great Documentation in Tech&nbsp;"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>How do I write great documentation for my tech project?<\/strong>&nbsp;<\/h2>\n\n\n\n<p>To answer simply, you don&#8217;t. If you are reading this blog post looking for a guide on how to write great documentation I\u2019m afraid you are going to leave disappointed. It is my opinion that such a guide can\u2019t exist. Documentation, at all levels in tech, is a complex problem and for anyone to presume they had a solution to that problem would be particularly bold. To paraphrase Socrates, \u201cI am the wisest man alive, for I know one thing, and that is that great documentation does not exist.\u201d&nbsp;<\/p>\n\n\n\n<p>That said, over the years we are getting better at it, and if you care a lot about this problem you might be able to move the needle a bit and achieve some truly decent documentation. It\u2019s often the most we can hope for.&nbsp;<\/p>\n\n\n\n<p>What I\u2019m hoping to do in this blog post is to shed some light on why the problem is so hard to solve, go over some of the attempts to solve it, and generally open up a discussion about what we, as members of the tech community, can try to do about it.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why is documentation so hard?<\/strong>&nbsp;<\/h2>\n\n\n\n<p>In one of my first-ever lectures in school, the professor said to all the students, \u201cIt\u2019s easy to succeed in my course, all you have to do is pay attention and take notes.\u201d At the time it felt like a pretty innocuous statement. All we would have to do was show up, provide our undivided attention, and also write down everything that was happening.&nbsp;<\/p>\n\n\n\n<p>Then came the first actual lecture. I started by listening intently, taking in what the professor was saying, and trying to break down the concepts in my head such that I could understand and internalize them. I looked down, my notepaper was blank. I had failed part two of how to succeed in the class.&nbsp;<\/p>\n\n\n\n<p>So next lecture I tried to take better notes. I scribbled line after line of detail as the professor went over the material. Great result, my note paper was full! I read over my notes after class, and in my head, there was a lot of, \u201cWait, what does that mean?\u201d and, \u201cI don\u2019t understand any of this.\u201d I had failed part one of how to succeed in the class.&nbsp;<\/p>\n\n\n\n<p>While this story isn\u2019t directly relevant to documentation in tech, it highlights what I see as one of the main problems: it\u2019s really hard to think or do, while also documenting that which you are thinking about, or doing.&nbsp;<\/p>\n\n\n\n<p>As humans, we are awful at multitasking (no developer really needs convincing of this, even predating memes, Dilbert was making jokes about the damage caused by the dreaded \u201ccontext switch\u201d). So our options traditionally have been to either think, then document, then do, or think, then do, then document. I must urge you not to start with anything other than thinking, I believe that is how we ended up with PHP.&nbsp;<\/p>\n\n\n\n<p>In the world of sequential development, you see a lot of \u201cthink, document, do\u201d going on. We talk about how we are going to solve the problem, or what the API is going to do, someone writes it all up on a wiki page, and then other people go away and develop that based on what the wiki page says.<\/p>\n\n\n\n<p>The biggest problem with this is it only documents what was expected. Outside of what we can predict, before starting there is a wealth of chaos that gets injected into a project before we are done. Some limitation or other will create an edge behavior which, if not in the original documentation becomes a piece of implicit knowledge, a \u201cknown unknown\u201d. <\/p>\n\n\n\n<p>Back in my early days with OpenMarket, the company that Infobip has acquired, there was a famous wiki page titled simply, \u201cUndocumented Magic\u201d with a body that said only, \u201cGood luck out there\u2026.\u201d and linked to a second page, \u201cDocumented Magic\u201d.&nbsp;<\/p>\n\n\n\n<p>In more agile development we tend to see more of the \u201cthink, do, document\u201d approach. We think a little about what the problem is and what might solve it, do something, evaluate and repeat if needed. Once we\u2019ve finally settled and solved the problem we then document what we did. Great! And like many things agile vs sequential, I do think this is an improvement. <\/p>\n\n\n\n<p>Unfortunately, if you\u2019ve ever finished something you iterated on multiple times throughout the process and then try and write down how it ended up, it&#8217;s a pretty heavy process and it&#8217;s really hard to do a good job when you just want to think about something else. Think of it like short-timers syndrome for a project: It&#8217;s done, and you kind of just want to wash your hands of it, but now you have all this boring writing to do.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>So what do we do?<\/strong>&nbsp;<\/h2>\n\n\n\n<p>There\u2019s genuinely only one real approach that I have seen be effective in tackling this problem. That is to take the documentation from being a static, disconnected entity and make it a living piece of the actual work being done. I\u2019ll run over some examples of how I\u2019ve seen this done at different levels. And, we are in luck, because our industry has developed some solid open-source tools to help support this, so a special shoutout to all the contributors out there.&nbsp;<\/p>\n\n\n\n<p>At the code level, the technique is pretty simple. All you have to do is structure your code with readability in mind and name everything perfectly. The pros are obvious: your code becomes self-documenting in its existence. Consider the following examples:&nbsp;<\/p>\n\n\n\n<p><strong>Example 1:<\/strong>&nbsp;<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>private final Map&lt;String, Thing&gt; map = new HashMap&lt;&gt;(); \n\npublic void purge() { \nfor (Map.Entry thing : map.entrySet()) { \n    \t\tif (thing.getAgeMillis() &gt;= 10000) { \n        \t\t\tmap.values().remove(thing); \n    \t\t} \n        } \n} <\/code><\/pre><\/div>\n\n\n\n<p><strong>Example 2:<\/strong>&nbsp;<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>private final Map&lt;String, Thing&gt; thingsRegistry = new HashMap&lt;&gt;(); \n\npublic void deleteOldThings() { \n   thingsRegistry.values().removeIf(Thing::isOld); \n} <\/code><\/pre><\/div>\n\n\n\n<p>You get it, right? The cons here are that no one teaches you how to do this well in school, you are expected to write code like example 1 in interviews, and naming things is really, really hard. But, it\u2019s not that hard to do a decent job. I\u2019m looking at you Spring\u2026 TransactionAwarePersistenceManagerFactoryProxy\u2026&nbsp;<\/p>\n\n\n\n<p>At the next level, we have project documentation. This is where tooling comes in handy. Both at OpenMarket and now at Infobip,&nbsp;we\u2019ve seen great success with Swagger generating YAML from our API annotations and having our deployables self-host the Swagger UI which displays that YAML. I just did a google search, and there are so many other options like this out there. <\/p>\n\n\n\n<p>The one real pro here is super strong; your API documentation is accurate and up to date with the function described. We used to document all of our APIs only in wiki pages, and I can\u2019t tell you how many times I\u2019ve referenced a wiki page while writing a curl command only to have to submit a support ticket because the wiki was out of date. I\u2019d rather there just wasn\u2019t a wiki page so I didn\u2019t waste my time. <\/p>\n\n\n\n<p>On the downside the Swagger generation isn\u2019t perfect &#8211; you often have to put additional Swagger-specific annotations on your APIs to get the YAML it creates to best describe the function. It also tends to rely on specific frameworks to be in use, and this couples you to a technology stack a bit more than I would like.&nbsp;<\/p>\n\n\n\n<p>One more level up and we tend to get into a harder space to talk about. But I\u2019ll try anyway! Two tools\/approaches I\u2019ve found really useful at this level are behavior-driven development\/testing (BDD) and contract testing. Tools like Cucumber for BDD allow not only for behavior to be clearly specified in a \u201cgiven, when, then\u201d format, but they also take that specification and run it as tests against the product. The result of something like this is that at the end you have not only a clear description of the product\u2019s behavior but an indication that it really does that thing as described.<\/p>\n\n\n\n<p>The drawback with these tools is someone has to write the infrastructure that makes them work, and that\u2019s not free. For contract testing, a tool like pact.io can be really good. It forces you to define contracts between you and your consumers and makes it hard to break those contracts. Again the downside here is that it&#8217;s not magic &#8211; someone has to put in the work and make it happen. Further, with contracts it takes both sides buying in to make it work.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Where do we go from here?<\/strong>&nbsp;<\/h2>\n\n\n\n<p>That\u2019s always the question, and the discussion around documentation is alive and well. Tooling improvements for living documentation keep coming, and the approach is regularly being validated as probably the best.&nbsp;<\/p>\n\n\n\n<p>Putting all that aside, no matter how much better the tools and approaches get, I think it\u2019s important to always keep in mind that the best we can ever hope for is decent. So, ultimately, it\u2019s on all of us as software professionals to keep that in mind: to always be wary &#8211; validate and verify risky assumptions, and never ever trust that six-year-old wiki page.&nbsp;<\/p>\n\n\n\n<p>Good luck out there\u2026.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How do I write great documentation for my tech [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[28,253,254],"tags":[46],"coauthors":[133],"class_list":["post-669","post","type-post","status-publish","format-standard","hentry","category-blog-post","category-developer-experience","category-engineering-practices","tag-developer-docs"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pay Attention and Take Notes - Writing Great Documentation in Tech&nbsp; - Infobip Developers Hub<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pay Attention and Take Notes - Writing Great Documentation in Tech&nbsp; - Infobip Developers Hub\" \/>\n<meta property=\"og:description\" content=\"How do I write great documentation for my tech [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech\" \/>\n<meta property=\"og:site_name\" content=\"Infobip Developers Hub\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/infobip\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-31T12:09:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-11T14:33:33+00:00\" \/>\n<meta name=\"author\" content=\"Infobip Devs\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@InfobipDev\" \/>\n<meta name=\"twitter:site\" content=\"@InfobipDev\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Infobip Devs\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech\"},\"author\":{\"name\":\"Infobip Devs\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/e04a9012051f81b6a2f6976e156f6ce0\"},\"headline\":\"Pay Attention and Take Notes &#8211; Writing Great Documentation in Tech&nbsp;\",\"datePublished\":\"2022-10-31T12:09:11+00:00\",\"dateModified\":\"2023-09-11T14:33:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech\"},\"wordCount\":1554,\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"keywords\":[\"developer docs\"],\"articleSection\":[\"Blog Post\",\"Developer Experience\",\"Engineering Practices\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech\",\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech\",\"name\":\"Pay Attention and Take Notes - Writing Great Documentation in Tech&nbsp; - Infobip Developers Hub\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\"},\"datePublished\":\"2022-10-31T12:09:11+00:00\",\"dateModified\":\"2023-09-11T14:33:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.infobip.com\/developers\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pay Attention and Take Notes &#8211; Writing Great Documentation in Tech&nbsp;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"name\":\"Infobip Developers Hub\",\"description\":\"Build meaningful customer relationships across any channel\",\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.infobip.com\/developers\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\",\"name\":\"Infobip Developers Hub\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"width\":696,\"height\":696,\"caption\":\"Infobip Developers Hub\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/infobip\/\",\"https:\/\/x.com\/InfobipDev\",\"https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ\",\"https:\/\/github.com\/infobip-community\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/e04a9012051f81b6a2f6976e156f6ce0\",\"name\":\"Infobip Devs\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/f61078713800c4e479dce745cd206b82\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f29655934347a5aa15879f9af9ac1f05b87167e0f7ed4074a04132eaa9f631c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f29655934347a5aa15879f9af9ac1f05b87167e0f7ed4074a04132eaa9f631c4?s=96&d=mm&r=g\",\"caption\":\"Infobip Devs\"},\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/author\/infobip-devs\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pay Attention and Take Notes - Writing Great Documentation in Tech&nbsp; - Infobip Developers Hub","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech","og_locale":"en_US","og_type":"article","og_title":"Pay Attention and Take Notes - Writing Great Documentation in Tech&nbsp; - Infobip Developers Hub","og_description":"How do I write great documentation for my tech [&hellip;]","og_url":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech","og_site_name":"Infobip Developers Hub","article_publisher":"https:\/\/www.facebook.com\/infobip\/","article_published_time":"2022-10-31T12:09:11+00:00","article_modified_time":"2023-09-11T14:33:33+00:00","author":"Infobip Devs","twitter_card":"summary_large_image","twitter_creator":"@InfobipDev","twitter_site":"@InfobipDev","twitter_misc":{"Written by":"Infobip Devs","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech#article","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech"},"author":{"name":"Infobip Devs","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/e04a9012051f81b6a2f6976e156f6ce0"},"headline":"Pay Attention and Take Notes &#8211; Writing Great Documentation in Tech&nbsp;","datePublished":"2022-10-31T12:09:11+00:00","dateModified":"2023-09-11T14:33:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech"},"wordCount":1554,"publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"keywords":["developer docs"],"articleSection":["Blog Post","Developer Experience","Engineering Practices"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech","url":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech","name":"Pay Attention and Take Notes - Writing Great Documentation in Tech&nbsp; - Infobip Developers Hub","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/#website"},"datePublished":"2022-10-31T12:09:11+00:00","dateModified":"2023-09-11T14:33:33+00:00","breadcrumb":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.infobip.com\/developers\/blog\/pay-attention-and-take-notes-writing-great-documentation-in-tech#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infobip.com\/developers\/"},{"@type":"ListItem","position":2,"name":"Pay Attention and Take Notes &#8211; Writing Great Documentation in Tech&nbsp;"}]},{"@type":"WebSite","@id":"https:\/\/www.infobip.com\/developers\/#website","url":"https:\/\/www.infobip.com\/developers\/","name":"Infobip Developers Hub","description":"Build meaningful customer relationships across any channel","publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.infobip.com\/developers\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.infobip.com\/developers\/#organization","name":"Infobip Developers Hub","url":"https:\/\/www.infobip.com\/developers\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","width":696,"height":696,"caption":"Infobip Developers Hub"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/infobip\/","https:\/\/x.com\/InfobipDev","https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ","https:\/\/github.com\/infobip-community"]},{"@type":"Person","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/e04a9012051f81b6a2f6976e156f6ce0","name":"Infobip Devs","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/f61078713800c4e479dce745cd206b82","url":"https:\/\/secure.gravatar.com\/avatar\/f29655934347a5aa15879f9af9ac1f05b87167e0f7ed4074a04132eaa9f631c4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f29655934347a5aa15879f9af9ac1f05b87167e0f7ed4074a04132eaa9f631c4?s=96&d=mm&r=g","caption":"Infobip Devs"},"url":"https:\/\/www.infobip.com\/developers\/blog\/author\/infobip-devs"}]}},"_links":{"self":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/comments?post=669"}],"version-history":[{"count":7,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/669\/revisions"}],"predecessor-version":[{"id":2017,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/669\/revisions\/2017"}],"wp:attachment":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media?parent=669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/categories?post=669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/tags?post=669"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/coauthors?post=669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}