{"id":40,"date":"2013-03-11T04:26:51","date_gmt":"2013-03-11T04:26:51","guid":{"rendered":"http:\/\/96.126.106.214\/?p=40"},"modified":"2023-11-26T01:02:53","modified_gmt":"2023-11-26T01:02:53","slug":"abstractions-and-specializations","status":"publish","type":"post","link":"https:\/\/codingismycraft.blog\/index.php\/2013\/03\/11\/abstractions-and-specializations\/","title":{"rendered":"Abstractions and Specializations"},"content":{"rendered":"<p>Sometimes when developing a solution I stop my coding for a several minutes visualizing my work as a battle between abstractions and specializations.<\/p>\n<p>The contrast of these opposites is a major characteristic of any program developed ever and the talent, experience and determination of the developer are stamping the final product.<\/p>\n<p>Countless projects have failed miserably due to an imbalance of these constituents.<\/p>\n<p>What is more interesting is the fact that quite of few of these failures had been driven by top level programmers who despite their talent somehow got lost in the process of overgeneralization, as they were trying to solve their particular problem using a very abstract and generic approach. Although such an approach might stand out from a pure theoretical perspective, the overhead of the generalization was such that led to very slow pace of advancement, code that was difficult to be adapted from newcomers to the team and usually resulted to an over engineered platform that was not able to follow the competitor&#8217;s evolution pace.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sometimes when developing a solution I stop my coding for a several minutes visualizing my work as a battle between abstractions and specializations. The contrast&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-40","post","type-post","status-publish","format-standard","hentry","category-programming"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":418,"url":"https:\/\/codingismycraft.blog\/index.php\/2026\/02\/09\/the-art-of-real-programming-why-tools-arent-engineering\/","url_meta":{"origin":40,"position":0},"title":"The Art of &#8220;Real Programming&#8221;: Why Tools Aren\u2019t Engineering","author":"john","date":"February 9, 2026","format":false,"excerpt":"In the modern software industry, there is a growing, dangerous belief: that programming is a \"boring detail.\" The narrative suggests that anyone can become an \"engineer\" in a few months, or better yet, bypass the craft entirely by using AI to \"glue\" components together. This is nonsense. The need for\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/codingismycraft.blog\/index.php\/category\/ai\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":44,"url":"https:\/\/codingismycraft.blog\/index.php\/2013\/04\/30\/do-programmers-get-the-respect-they-deserve\/","url_meta":{"origin":40,"position":1},"title":"Do programmers get the respect they deserve?","author":"john","date":"April 30, 2013","format":false,"excerpt":"Technical recruiters give me the impression that their shallow knowledge about the craft of programming almost always is paired with strong opinions about it. Most of them try to use buzwords, that they read about on the Web or a for dummies book, trying to impress or even evaluate seasoned\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":174,"url":"https:\/\/codingismycraft.blog\/index.php\/2017\/09\/16\/talent-is-the-best-metric-to-measure-a-software-developer\/","url_meta":{"origin":40,"position":2},"title":"Talent is the best Metric to measure a Software Developer.","author":"john","date":"September 16, 2017","format":false,"excerpt":"Like in any other activity that requires expertise, software developers can be classified based on their productivity and ability to innovate and create new approaches and solutions to specific problems. The main dimensions that dictate the quality of a developer are knowledge, experience and talent and the ability to recognize\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":68,"url":"https:\/\/codingismycraft.blog\/index.php\/2016\/05\/25\/falsifiability-and-unit-testing\/","url_meta":{"origin":40,"position":3},"title":"Falsifiability and Unit Testing","author":"john","date":"May 25, 2016","format":false,"excerpt":"Without a doubt, Test Driven Development (TDD) lies in the core of my software development approach. \u00a0I have been a very early adapter of automated testings since my C++ and C# days and always felt very enthusiastic about their impact on the quality of the software. I have to admit\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":35,"url":"https:\/\/codingismycraft.blog\/index.php\/2013\/03\/11\/programming-languages\/","url_meta":{"origin":40,"position":4},"title":"Programming Languages","author":"john","date":"March 11, 2013","format":false,"excerpt":"As a seasoned programmer I have used a wide spectrum of programming languages and development approaches. By the end of the 80's I was introduced to the concepts of Object Oriented Programming using as main language the C++ which I still follow very closely. As a heavy user of Visual\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":46,"url":"https:\/\/codingismycraft.blog\/index.php\/2013\/05\/01\/be-extra-cautious-of-early-decisions-in-your-development-cycle\/","url_meta":{"origin":40,"position":5},"title":"Be extra cautious of early decisions in your development cycle","author":"john","date":"May 1, 2013","format":false,"excerpt":"I do not see how can anyone disagree with The McDonald Theory which states that initiating a process is more important than finding the ultimate solution at once. In deed this is how science and technology are progressing and naturally the same principle applies to any human activity which can\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":1,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"predecessor-version":[{"id":41,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/40\/revisions\/41"}],"wp:attachment":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}