{"id":42,"date":"2024-06-21T02:47:03","date_gmt":"2024-06-21T02:47:03","guid":{"rendered":"https:\/\/think-twice.me\/?p=42"},"modified":"2024-06-21T02:47:14","modified_gmt":"2024-06-21T02:47:14","slug":"dont-be-an-architecture-hipster-a-guide","status":"publish","type":"post","link":"https:\/\/think-twice.me\/?p=42","title":{"rendered":"Don\u2019t be an Architecture Hipster \u2013 A guide"},"content":{"rendered":"\n<p>One of my more popular <a href=\"http:\/\/news.ycombinator.com\/\">HN <\/a>comments was a teardown of an all-too-common engineering subculture.\u00a0<a href=\"http:\/\/www.firatatagun.com\/blog\/2016\/01\/09\/analysis-of-software-architectures\/\">The article in question<\/a>\u00a0sought to teach \u201cSoftware Architecture,\u201d but ultimately annoyed me and many other HN readers.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Tl; dr:<br>Software architecture discussions are so polluted by software-hipsters that&nbsp;the majority of software engineers are disinclined to discuss and study architecture at all.<\/p>\n<\/blockquote>\n\n\n\n<p><strong>Know-it-all&nbsp;\/ hipster<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Probably studied philosophy, english, film-studies, or engineering.<\/li>\n\n\n\n<li>Lurks around discussions,\u00a0hoping to overhear a mistake,\u00a0<em>any mistake.\u00a0<\/em><\/li>\n\n\n\n<li>Uses an unnecessarily complex vocabulary<\/li>\n\n\n\n<li>Has a self-righteous and loud tone of voice, especially when correcting people.<\/li>\n\n\n\n<li>Enjoys correcting people, even on minor\/irrelevant points.<\/li>\n\n\n\n<li>If asked him a question you can be sure of two things:<br>1) he will never admit he doesn\u2019t know<br>2) he will answer with so many niche terms that you will end up\u00a0more confused than when you began<\/li>\n\n\n\n<li>He may be likened to <a href=\"https:\/\/web.archive.org\/web\/20230131031217\/https:\/\/www.youtube.com\/watch?v=zWiEGE1UKEs\">Dwight Shrute<\/a>, or the\u00a0<a href=\"https:\/\/web.archive.org\/web\/20230131031217\/https:\/\/www.youtube.com\/watch?v=tWI9XMiSj4s\">comic-book guy<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><strong>Architecture&nbsp; Hipster<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Loves UML making diagrams. Gladly presents them without a legend to people who don\u2019t know how to read UML diagrams.<\/li>\n\n\n\n<li>Love creating new unintuitive names for very simple ideas (e.g \u201cBroker topology\u201d). Proceeds to use these niche names\u00a0in discussions and judges other people for not knowing what a \u201cBroker Topology\u201d is.<\/li>\n\n\n\n<li>Gets really into programming fads that are hailed as panaceas but later get tossed out for a new panacea (e.g. microservices, Layered Architecture).<\/li>\n\n\n\n<li>Gets very emotionally attached to programming decisions, even if they will have no effect on the user.<\/li>\n\n\n\n<li>Loves engineering around\u00a0unlikely\u00a0\u201cwhat ifs\u2026\u201d.<\/li>\n\n\n\n<li>Prefers creating abstraction through classes instead of functions, even if no state is needed.<\/li>\n\n\n\n<li>Is bored by \u201cpractical details\u201d like logging, debugging, convenience,\u00a0fail-safes, and delivering quickly.<\/li>\n\n\n\n<li>Maximizes the number and obscurity of patterns used, leading to classes named things like\u00a0<strong>EventLoopListenerFactory<\/strong>.<\/li>\n\n\n\n<li>Only cares about performance if\u00a0obscure (e.g. tail-call optimization)<\/li>\n\n\n\n<li>Isn\u2019t actually very capable creating\u00a0software (hasn\u2019t won any coding competitions, has trouble with git reset, hasn\u2019t written any software that people enjoy using)<\/li>\n<\/ul>\n\n\n\n<p>Thus:<\/p>\n\n\n\n<p><strong>Know-it-all\u00a0\/ hipster<\/strong> =\u00a0<strong>Architecture\u00a0 Hipster<\/strong> + software architecture<\/p>\n\n\n\n<p>I don\u2019t dislike&nbsp;architecture. Architecture is a beautiful study. However, the complexity of the discipline makes an&nbsp;fertile ground for phonies; a space for phonies to use miscommunication as a tool to create an illusion of their own competence.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of my more popular HN comments was a teardown of an all-too-common engineering subculture.\u00a0The article in question\u00a0sought to teach \u201cSoftware Architecture,\u201d but ultimately annoyed me and many other HN readers. Tl; dr:Software architecture discussions are so polluted by software-hipsters that&nbsp;the majority of software engineers are disinclined to discuss and study architecture at all. Know-it-all&nbsp;\/&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-42","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/think-twice.me\/index.php?rest_route=\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/think-twice.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/think-twice.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/think-twice.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/think-twice.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=42"}],"version-history":[{"count":2,"href":"https:\/\/think-twice.me\/index.php?rest_route=\/wp\/v2\/posts\/42\/revisions"}],"predecessor-version":[{"id":44,"href":"https:\/\/think-twice.me\/index.php?rest_route=\/wp\/v2\/posts\/42\/revisions\/44"}],"wp:attachment":[{"href":"https:\/\/think-twice.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/think-twice.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/think-twice.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}