{"id":3086,"date":"2023-06-08T08:20:12","date_gmt":"2023-06-08T08:20:12","guid":{"rendered":"https:\/\/www.juniorjavadeveloper.pl\/?p=3086"},"modified":"2023-06-08T08:20:14","modified_gmt":"2023-06-08T08:20:14","slug":"jak-powinien-myslec-programista-abstrakcyjnie-strategicznie-taktycznie-przyklady-tego-chatgpt-ai-nie-potrafi","status":"publish","type":"post","link":"https:\/\/www.juniorjavadeveloper.pl\/en\/2023\/06\/08\/jak-powinien-myslec-programista-abstrakcyjnie-strategicznie-taktycznie-przyklady-tego-chatgpt-ai-nie-potrafi\/","title":{"rendered":"How should a software developer think? Abstractly, strategically, tactically - examples - this is what ChatGPT, AI cannot do"},"content":{"rendered":"<p class=\"wp-block-paragraph\">I often hear a question from my students - how should a programmer think? In this article, I will try to answer this question and explain why I mention these three methods - abstract thinking, strategy, and tactics. The approach I will describe comes from my experience as a programmer and mentor. I use the mentioned methods myself and teach them to my students.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, let me start by explaining the concepts presented. Then I will transfer the concepts to programming. Remember that when designing and implementing any element - even the smallest one - of an IT system, you should approach the topic abstractly, have an established strategy, and implement tactical actions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Clarifying the concepts will allow us to establish a common view on the issues I describe. In programming terms, I will present the concepts in the example of an application, an IT system supporting a private medical clinic.<\/p>\n\n\n    <style>\r\n        .wpj-jtoc.--jtoc-theme-basic-light.--jtoc-has-custom-styles {\r\n            --jtoc-numeration-suffix: \". \";\n--jtoc-numeration-color: #adadad;\n        }\r\n\r\n            <\/style>\r\n\r\n\r\n\r\n<div id=\"wpj-jtoc\" class=\"wpj-jtoc wpj-jtoc--main --jtoc-the-content --jtoc-theme-basic-light --jtoc-title-align-left --jtoc-toggle-icon --jtoc-toggle-position-right --jtoc-toggle-1 --jtoc-has-numeration --jtoc-has-custom-styles --jtoc-is-unfolded\" >\r\n\r\n    \r\n    <!-- TOC -->\r\n    <div class=\"wpj-jtoc--toc\">\r\n                                <div class=\"wpj-jtoc--header\">\r\n                <div class=\"wpj-jtoc--header-main\">\r\n                                        <div class=\"wpj-jtoc--title\">\r\n                        <span class=\"wpj-jtoc--title-label\">Table of Contents<\/span>\r\n                    <\/div>\r\n                                                                <div class=\"wpj-jtoc--toggle-wrap\">\r\n                                                                                                                    <div class=\"wpj-jtoc--toggle-box\">\r\n                                    <div class=\"wpj-jtoc--toggle\"><\/div>\r\n                                <\/div>\r\n                                                    <\/div>\r\n                                    <\/div>\r\n            <\/div>\r\n                            <div class=\"wpj-jtoc--body\">\r\n                        <nav class=\"wpj-jtoc--nav\">\r\n                <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#myslenie-abstrakcyjne\" title=\"Abstract thinking\" data-numeration=\"1\">Abstract thinking<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#dlaczego-potrzebne-jest-abstrakcyjnie-myslenie\" title=\"Why is abstract thinking necessary?\" data-numeration=\"1.1\">Why is abstract thinking necessary?<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#myslenie-abstrakcyjne_przyklad-programistyczny\" title=\"Programming example\" data-numeration=\"1.2\">Programming example<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#strategia\" title=\"Strategy\" data-numeration=\"2\">Strategy<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#co-daje-strategia\" title=\"What does the strategy bring?\" data-numeration=\"2.1\">What does the strategy bring?<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#strategia_przyklad-programistyczny\" title=\"Programming example\" data-numeration=\"2.2\">Programming example<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#taktyka\" title=\"Tactics\" data-numeration=\"3\">Tactics<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#czym-jest-taktyka\" title=\"What is tactics?\" data-numeration=\"3.1\">What is tactics?<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#przyklad-programistyczny\" title=\"Programming example\" data-numeration=\"3.2\">Programming example<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><\/ol>            <\/nav>\r\n                    <\/div>\r\n    <\/div>\r\n<\/div>\r\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"myslenie-abstrakcyjne\">Abstract thinking<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Abstract thinking \u2013 what is it?<\/p>\n<cite class=\" translation-block\">It is a process that allows us to reflect on things that are not present in the current space and moment. [\u2026] It also allows us to reflect on general concepts and principles [\u2026]. It is used to remember various aspects of a situation, predict and plan for the future, think symbolically and draw conclusions. [\u2026] Source: <a href=\"https:\/\/pieknoumyslu.com\/myslenie-abstrakcyjne-na-czem-polega\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/pieknoumyslu.com\/myslenie -abstract-what-it-is\/<\/a><\/cite><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Abstraction (programming)<\/p>\n<cite class=\" translation-block\">Abstraction - a kind of simplification of the problem under consideration, consisting in limiting the scope of features of manipulated objects only to features that are key to the algorithm and at the same time independent of the implementation. Source: <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Abstrakcja_(programenie)\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/pl.wikipedia.org\/wiki\/Abstrakcja_( programming)<\/a><\/cite><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"dlaczego-potrzebne-jest-abstrakcyjnie-myslenie\">Why is abstract thinking necessary?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Dlaczego potrzebne jest abstrakcyjnie my&#347;lenie? Powy&#380;sze opisy, tego poj&#281;cia bardzo dobrze wskazuj&#261; na najwa&#380;niejsze elementy tej metody. &ldquo;To proces, kt&oacute;ry pozwala nam zastanowi&#263; si&#281; nad rzeczami, kt&oacute;rych nie ma w obecnej przestrzeni i chwili.&rdquo;, programuj&#261;c b&#281;dziemy tworzy&#263;, pisa&#263; kod dla rzeczy, kt&oacute;rych jeszcze nie ma, nie istniej&#261;. &ldquo;Abstrakcja &ndash; pewnego rodzaju uproszczenie rozpatrywanego problemu, polegaj&#261;ce na ograniczeniu zakresu cech manipulowanych obiekt&oacute;w wy&#322;&#261;cznie do cech kluczowych dla algorytmu, a jednocze&#347;nie niezale&#380;nych od implementacji.&rdquo;, tak w&#322;a&#347;nie nale&#380;y tworzy&#263;, pisa&#263; kod &#378;r&oacute;d&#322;owy, w du&#380;ym uproszczeniu: minimalny, niezb&#281;dny zestaw element&oacute;w, cech; niezale&#380;ne od sposobu implementacji. <\/p>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"myslenie-abstrakcyjne_przyklad-programistyczny\">Programming example<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Let's imagine that we were asked to add a module that imposes limits on booking visits per week, e.g. a maximum of three visits - an IT system supporting a private medical clinic. The system probably includes concepts such as: Clinic, Visit, Patient and Reservation, as well as the mechanisms and processes of their joint interaction. However, the concept of Visit Limit does not exist yet, it needs to be defined and then implemented, i.e. write the source code. The definition of the term Visit Limit should be discussed and confirmed with the people ordering a given module. The newly created domain model \u2013 Visit Limit \u2013 must be compatible with existing mechanisms and processes. We do not treat this stage as an oracle, many elements may change in later stages.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"strategia\">Strategy<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Strategy<\/p>\n<cite class=\" translation-block\">A well-thought-out action plan in the event of a solution. Source: <a href=\"https:\/\/sjp.pwn.pl\/sjp\/strategia;2576315\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/sjp.pwn.pl\/sjp\/strategia;2576315 <\/a><\/cite><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Strategy (Game Theory)<\/p>\n<cite class=\" translation-block\">Strategy \u2013 a player's action plan describing his behavior in every possible situation. The strategy fully determines the action (move) that the player will take in a given situation, at every stage of the game, for every possible story leading to this situation. [\u2026] Source: <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Strategia_(teoria_gier)\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/pl.wikipedia.org\/wiki \/Strategy_(game_theory)<\/a><\/cite><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"co-daje-strategia\">What does the strategy bring?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">W telegraficznym skr&oacute;cie, strategia, to plan dzia&#322;ania, kt&oacute;ry pozwala zrealizowa&#263; wyznaczony cel. Okre&#347;la ona plan oraz cel, do kt&oacute;rego d&#261;&#380;ymy. Na temat planowania implementacji kodu &#378;r&oacute;d&#322;owego pisa&#322;em ju&#380; w artykule: <a rel=\"noreferrer noopener\" href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/2020\/11\/17\/stop-zanim-zaczniesz-pisac-kod-zastanow-sie-co-chcesz-kodowac-analiza-projekt-i-implementacja\/\" data-type=\"post\" data-id=\"1238\" target=\"_blank\">Stop! Zanim zaczniesz pisa&#263; kod zastan&oacute;w si&#281;, co chcesz kodowa&#263;? Analiza, projekt i implementacja<\/a>. &ldquo;Strategia &ndash; plan dzia&#322;ania gracza opisuj&#261;cy jego zachowanie w ka&#380;dej mo&#380;liwej sytuacji. Strategia w pe&#322;ni okre&#347;la akcj&#281; (ruch), kt&oacute;r&#261; gracz podejmie w danej sytuacji, na ka&#380;dym etapie gry [&hellip;]&rdquo;. Tutaj s&#322;owo gracz &#347;mia&#322;o mo&#380;na zast&#261;pi&#263; wyrazem aplikacja, system informatyczny. Programista, programistka b&#281;d&#261; musieli zastanowi&#263; si&#281; nad tworzonym kodem &#378;r&oacute;d&#322;owym na r&oacute;&#380;nych etapach jego dzia&#322;ania.<\/p>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"strategia_przyklad-programistyczny\">Programming example<\/h4>\n\n\n\n<p class=\"wp-block-paragraph translation-block\">In point <a href=\"#thinking-abstract_programming-example\" data-type=\"internal\" data-id=\"#thinking-abstractcyjne_programming-example\" target=\"_self\">Abstract thinking - Programming example<\/a> a model was created fields \u2013 Visit Limit \u2013 you should set a strategic goal. It may be an implementation, i.e. source code that will prevent the patient from booking more visits than the number indicated in the limit. It may as well be a functionality available from the administration panel, available to clinic employees, enabling the setting of such a limit. At this stage, I plan and set steps to achieve the goal. One step may be a naming convention for the classes and\/or packages you create. The next step is to determine whether it will be a single class or a whole new module. A very important step is to check whether and how I will be able to test a new class or module in the context of the entire system - integration tests.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"taktyka\">Tactics<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Tactics<\/p>\n<cite class=\" translation-block\">A course of action intended to achieve a goal. Source: <a href=\"https:\/\/sjp.pwn.pl\/znaj\/taktyka.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/sjp.pwn.pl\/znaj\/taktyka.html <\/a><\/cite><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Tactics<\/p>\n<cite class=\" translation-block\">(1.2) method of operation according to a previously thought-out plan. Source: <a href=\"https:\/\/pl.wiktionary.org\/wiki\/taktyka\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/pl.wiktionary.org\/wiki\/taktyka<\/a><\/cite><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"czym-jest-taktyka\">What is tactics?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Tactics are part of the strategy, they can be described as subsequent steps - elements of the plan - that must be performed to achieve the assumed strategic goal. Here we simply follow the next steps set for the selected strategy.<\/p>\n\n\n\n<h4 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"przyklad-programistyczny\">Programming example<\/h4>\n\n\n\n<p class=\"wp-block-paragraph translation-block\">Referring to the point <a href=\"#strategy_programming-example\" data-type=\"internal\" data-id=\"#strategy_programming-example\" target=\"_self\">Strategy - Programming Example<\/a>, the first step is to establish a convention nomenclature. In this case, referring again to the point <a href=\"#thinking-abstractive_programming-example\" data-type=\"internal\" data-id=\"#thinking-abstractcyjne_programming-example\" target=\"_self\">Abstract Thinking \u2013 Example programming<\/a>, where the domain model \u2013 Visit Limit \u2013 was created. I wonder what the English equivalents will be - Visit Limit - most of the systems I implemented were in English, the exception was the government system, written in Polish. The word Limit can be written as Maximum or Limit, the word Visit can be written as Appointment or Visit. In my opinion, getting the names right is of the utmost importance. The next tactical step is the implementation of a new module or a single class. If the created code is to be used by other modules in the system, it is worth creating a separate module, it will be easier to share it in the form of dependencies in the form of libraries - JAR files. As for the issue of integration tests, it would be ideal to be able to perform such tests on real test data, if this is impossible, you should use mocks - <a rel=\"noreferrer noopener\" href=\"https:\/\/pl.wikipedia. org\/wiki\/Atrapa_obiektu\" data-type=\"URL\" data-id=\"https:\/\/pl.wikipedia.org\/wiki\/Atrapa_obiektu\" target=\"_blank\">Mock, dummy object<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\">\n\n\n\n<p class=\"wp-block-paragraph\">To sum up, when designing and then implementing any element - even the smallest one - of an IT system, the topic should be approached very abstractly. After doing abstract thinking - thinking about things that do not exist - we move on to strategy - planning and setting the goal we want to achieve - and finally there is tactics - we start taking action, i.e. implementing the plan. Taking into account the above methods of thinking, it is much easier for me to approach the creation and implementation of any application or IT system. I encourage you to use these methods.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-poradnik-dla-przyszlych-junior-java-developer-039-ow wp-block-embed-poradnik-dla-przyszlych-junior-java-developer-039-ow\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"09aZnYNcG2\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/kontakt\/\">Contact<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&bdquo;Kontakt&rdquo; &mdash; Poradnik dla przysz&#322;ych Junior Java Developer&amp;apos;&oacute;w\" src=\"https:\/\/www.juniorjavadeveloper.pl\/kontakt\/embed\/#?secret=2FJpPsvzfo#?secret=09aZnYNcG2\" data-secret=\"09aZnYNcG2\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-poradnik-dla-przyszlych-junior-java-developer-039-ow wp-block-embed-poradnik-dla-przyszlych-junior-java-developer-039-ow\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"LvlFqKjDZm\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/mentoring-rezerwuj-termin\/\">Mentoring - book an appointment<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&bdquo;Mentoring &ndash; rezerwuj termin&rdquo; &mdash; Poradnik dla przysz&#322;ych Junior Java Developer&amp;apos;&oacute;w\" src=\"https:\/\/www.juniorjavadeveloper.pl\/mentoring-rezerwuj-termin\/embed\/#?secret=PRnxRVmJxi#?secret=LvlFqKjDZm\" data-secret=\"LvlFqKjDZm\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Zdj&#281;cie autorstwa <a href=\"https:\/\/www.pexels.com\/photo\/elderly-man-thinking-while-looking-at-a-chessboard-8438918\/\" data-type=\"URL\" data-id=\"https:\/\/www.pexels.com\/photo\/elderly-man-thinking-while-looking-at-a-chessboard-8438918\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pavel Danilyuk<\/a> z <a rel=\"noreferrer noopener\" href=\"https:\/\/www.pexels.com\/pl-pl\/\" target=\"_blank\">Pexels<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Cz\u0119sto s\u0142ysz\u0119 pytanie od moich uczni\u00f3w, uczennic &#8211; jak powinien my\u015ble\u0107 programista, programistka? W tym artykule postaram si\u0119 odpowiedzie\u0107 na to pytanie oraz wyja\u015bni\u0107, dlaczego wymieniam akurat te trzy metody &#8211; my\u015blenie abstrakcyjne, strategia, taktyka. Podej\u015bcie, kt\u00f3re opisz\u0119 wynika z mojego do\u015bwiadczenia jako programisty oraz mentora. Samemu stosuj\u0119 wspomniane metody oraz ucz\u0119 ich moich uczni\u00f3w, [&hellip;]<\/p>","protected":false},"author":1,"featured_media":3135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_ppp_document_settings_meta":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[6,50,41,7],"tags":[],"class_list":["post-3086","post","type-post","status-publish","format-standard","has-post-thumbnail","category-felieton","category-junior-level","category-mid-level","category-poradnik"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2023\/06\/Jak-powinien-myslec-programista_abstrakcyjnie-strategicznie-taktycznie_przyklady_bez-chatgpt-ai_medium.jpg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/3086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/comments?post=3086"}],"version-history":[{"count":47,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/3086\/revisions"}],"predecessor-version":[{"id":3587,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/3086\/revisions\/3587"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/media\/3135"}],"wp:attachment":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/media?parent=3086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/categories?post=3086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/tags?post=3086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}