{"id":93,"date":"2018-11-02T04:47:04","date_gmt":"2018-11-02T04:47:04","guid":{"rendered":"https:\/\/makemeaprogstg.wpenginepowered.com\/?p=93"},"modified":"2023-07-23T14:57:45","modified_gmt":"2023-07-23T14:57:45","slug":"what-is-a-full-stack-developer","status":"publish","type":"post","link":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/","title":{"rendered":"What Is a Full Stack Developer, Anyway?"},"content":{"rendered":"<p>&#8220;What is a full stack developer&#8221; is a question that mystifies non-programmers.\u00a0 I understand this because I run a content agency that pairs techies with non-technical editors.\u00a0 The term comes up, and those not steeped in tech kind of squint at you if you say that and ask, &#8220;what&#8230;.?&#8221;<\/p>\n<h2>What Is a Full Stack Developer?\u00a0 The Short Version<\/h2>\n<p>So first, let&#8217;s give the short, direct answer to this question.\u00a0 <strong>A &#8220;full stack&#8221; developer is a software developer with a general enough skill set to build all required components for a working piece of software.\u00a0 They can handle the database, the programming logic, and the user interface, and they put it all together to deliver.<\/strong><\/p>\n<p>In a nutshell, that&#8217;s what we software people mean when we toss around this term.\u00a0 But I can understand if you&#8217;re still scratching your head.\u00a0 You&#8217;re probably wondering about some things now.<\/p>\n<ul>\n<li>Why is it some kind of special thing that a software developer knows how to build all of the parts of the software?<\/li>\n<li>Why is writing all of the software called &#8220;stack&#8221; and what does it mean for it to be &#8220;full?&#8221;<\/li>\n<li>What is the origin of this expression?<\/li>\n<li>How does one become a full stack developer?<\/li>\n<li>Should you want to be a full stack developer?<\/li>\n<\/ul>\n<p>For the rest of this post, I&#8217;m going to answer those questions.\u00a0 When you&#8217;re finished, you&#8217;ll know everything you could ever have wanted to know about the term &#8220;full stack developer&#8221; and some things about software development in general, besides.<\/p>\n<p><!--more--><\/p>\n<h2>Software Development Is More Specialized Than You Think<\/h2>\n<p>From the outside looking in, software probably <a href=\"https:\/\/makemeaprogrammer.com\/software-engineer-same-as-software-developer\/\">seems kind of uniform<\/a>.\u00a0 You go learn to program and then you, well, program.\u00a0 Sure, there are different languages and stuff like that, but they&#8217;re all just kind of different flavors of the same thing, the way that there are all sorts of different makes and models of car, but they all get you around town.\u00a0 Right?<\/p>\n<p>Well, not really.\u00a0 There are certain fundamentals that underpin it all, but there&#8217;s so much variance that you wouldn&#8217;t even recognize some of the deliverable work product as being the same thing.\u00a0 So rather than it being like different makes and models of car, think airplanes, submarines, and unicycles.<\/p>\n<p>Some software developers build web interfaces like the one on which you&#8217;re reading this post.\u00a0 Others write extremely specialized code that lives inside your Fitbit and has no visual component.\u00a0 Still, others make animal sacrifices to keep 50-year-old mainframes running inside banks.\u00a0 (Alright, the sacrifice part might be a mild exaggeration.)<\/p>\n<p>Because software is so specialized, there are software professionals that really couldn&#8217;t deliver a complete product on their own.\u00a0 If you build the logical guts of the Fitbit, you might not know anything about how to build the app on your phone that shows users the step counts.<\/p>\n<p>And you probably also don&#8217;t know how to physically construct and fabricate the device.\u00a0 So your contribution could not, in fact, stand alone.<\/p>\n<p>Thus, we have the difference between what I will, for now, call a self-sufficient generalist software developer and a highly specialized one.<\/p>\n<h2>What Is a &#8220;Stack&#8221; and What Does That Have to Do With Being a Generalist?<\/h2>\n<p>You&#8217;ve probably guessed that our self-sufficient generalists are &#8220;full stack&#8221; and the specialists are, well, not.\u00a0 I guess they&#8217;re &#8220;half stacks&#8221; or &#8220;empty stacks&#8221; or something.\u00a0 The negative condition is actually not specified, so you and I are probably free to coin something here if we want.<\/p>\n<p>But why &#8220;full stack?&#8221;\u00a0 Who reached into the deep, dark bowels of the weird naming barrel and yanked that one out?<\/p>\n<p>Well, <a href=\"https:\/\/makemeaprogrammer.com\/what-is-a-stack\/\">a &#8220;stack&#8221; is actually a really core concept in computer science<\/a>.\u00a0 But relax.\u00a0 Before you close the tab, it&#8217;s actually not hard to explain.\u00a0 Imagine that I stacked a deck of playing cards on top of one another.\u00a0 That&#8217;s a stack.<\/p>\n<p>Seriously.\u00a0 That&#8217;s it.\u00a0 The last thing you place on the stack goes on top, and it has to be the first thing to come off.\u00a0 It&#8217;s a simple physical concept, and it&#8217;s a core and simple concept in the software world.<\/p>\n<p>It&#8217;s so core, in fact, that we started applying it to other concepts.\u00a0 The various pieces of software that route messages around the internet are affectionately known as <a href=\"https:\/\/learningnetwork.cisco.com\/thread\/5769\">a network &#8220;stack.&#8221;<\/a>\u00a0 And the group of programming languages, frameworks, and libraries that come to make up developers&#8217; toolboxes became known as their &#8220;stacks&#8221; in the same way that a tool belt became a generic metaphor for the tactics any professional of any kind can bring to bear.<\/p>\n<p>So a &#8220;stack&#8221; of languages and technologies is the set of languages and technologies needed for delivering a software product.\u00a0 And a &#8220;full stack&#8221; developer is one that knows all of them.<\/p>\n<h2>How Does One Become a Full Stack Developer?<\/h2>\n<p>Given the ubiquity of the term, especially coming from the mouths of recruiters, you might want to know how to become one.\u00a0 And that&#8217;s actually pretty straightforward.<\/p>\n<p>If you&#8217;re not a programmer, the alphabet soup of technologies that go together might seem daunting.\u00a0 It might even seem random.<\/p>\n<p>But it&#8217;s really not.<\/p>\n<p>Spend some time in the industry and you&#8217;ll see patterns emerge.\u00a0 Software shops that bill themselves as &#8220;rails shops,&#8221; for instance, will use a pretty common set of languages and frameworks.\u00a0 Same with Java shops or .NET shops.\u00a0 There will be some variance, but you&#8217;ll see a core of common technologies emerge in the way that, say, food pairings do.\u00a0 There are a lot of foods out there, but similar combinations of them become recognizable as &#8220;breakfast,&#8221; for instance.<\/p>\n<p>Once you&#8217;ve identified a stack and you learn some of its core techs, you&#8217;re almost there.\u00a0 At this point, you just need to make sure that you know a representative language\/framework\/tool for each common component of an application.\u00a0 At its most basic, this tends to involve a database (or another data storage mechanism), an application language (like <a href=\"https:\/\/makemeaprogrammer.com\/best-way-to-learn-c\/\">C#<\/a> or Java), and some kind of user interface framework (e.g. one of the many Javascript frameworks available).<\/p>\n<p>Once you know a group of these technologies and you have all of the components covered, you can safely call yourself a full stack developer.\u00a0 You don&#8217;t necessarily need to be an expert in all of them, either.\u00a0 You can be passable in some, competent in others, and maybe an expert in one or two.<\/p>\n<h2>After All This, Should You Want to be a Full Stack Developer?<\/h2>\n<p>You now thoroughly understand what this term means, even if you&#8217;re not (yet) a techie.\u00a0 At least I hope you do, anyway.\u00a0 Please <a href=\"https:\/\/twitter.com\/daedtech\">tweet at me<\/a> if you have any questions.<\/p>\n<p>The million dollar question then becomes, &#8220;should you want to be a full stack developer?&#8221;<\/p>\n<p>And the answer to that is surprisingly nuanced.\u00a0 At first, it might seem like a no-brainer.\u00a0 The aforementioned recruiters all want you to be one.\u00a0 And isn&#8217;t being able to deliver a total piece of software without help\u2014being self-sufficient\u2014better than not being able to do so?<\/p>\n<p>It&#8217;s easy to say yes.\u00a0 Being a full stack developer\u2014a generalist\u2014makes you imminently employable.\u00a0 But it also makes you something of a commodity in that you&#8217;re a jack of all trades.\u00a0 And that can lower your rate and your earning potential compared to becoming a specialist.<\/p>\n<p>To put this into perspective, ask yourself whether it&#8217;s better to be a general handyman or an electrician.\u00a0 A general handyman can probably find more work more frequently.\u00a0 But the electrician probably commands more pay because of the expert, specialized nature of the work.<\/p>\n<p>There are tradeoffs either way, and it&#8217;s not a decision to be taken lightly.\u00a0 But it&#8217;s also not a no-brainer either way.\u00a0 I will say this, though.\u00a0 It&#8217;s an excellent career move in the early going to become a full stack developer.\u00a0 Become useful and employable and get a good sampling of work under your belt.\u00a0 That way, if you do decide to specialize for more profitability, you&#8217;ll have a solid experience base and the wisdom to fully understand the specialization choice.<\/p>\n<p><i>This post was written by Erik Dietrich. <\/i><a href=\"https:\/\/daedtech.com\/\"><i>Erik<\/i><\/a><i> is a veteran of the software world and has occupied just about every position in it: developer, architect, manager, CIO, and, eventually, independent management and strategy consultant. This breadth of experience has allowed him to speak to all industry personas and to write several books and countless blog posts on dozens of sites. <\/i><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;What is a full stack developer&#8221; is a question that mystifies non-programmers.\u00a0 I understand this because I run a content agency that pairs techies with non-technical editors.\u00a0 The term comes up, and those not steeped in tech kind of squint at you if you say that and ask, &#8220;what&#8230;.?&#8221; What Is a Full Stack Developer?\u00a0 The Short Version So first, let&#8217;s give the short, direct answer to this question.\u00a0 A &#8220;full stack&#8221; developer is a software developer with a general enough skill set to build all required components for a working piece of software.\u00a0 They can handle the database, the programming logic, and the user interface, and they put it all together to deliver. In a nutshell, that&#8217;s what we software people mean when we toss around this term.\u00a0 But I can understand if you&#8217;re still scratching your head.\u00a0 You&#8217;re probably wondering about some things now. Why is it some kind of special thing that a software developer knows how to build all of the parts of the software? Why is writing all of the software called &#8220;stack&#8221; and what does it mean for it to be &#8220;full?&#8221; What is the origin of this expression? How does one become a full stack developer? Should you want to be a full stack developer? For the rest of this post, I&#8217;m going to answer those questions.\u00a0 When you&#8217;re finished, you&#8217;ll know everything you could ever have wanted to know about the term &#8220;full stack developer&#8221; and some things about software development in general, besides.<\/p>\n","protected":false},"author":4,"featured_media":101,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-93","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-common-questions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What Is a Full Stack Developer, Anyway? - Make Me a Programmer<\/title>\n<meta name=\"description\" content=\"You likely hear the term a lot. But what exactly is a full-stack developer? Learn what a full-stack developer does and how to become one.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What Is a Full Stack Developer, Anyway? - Make Me a Programmer\" \/>\n<meta property=\"og:description\" content=\"You likely hear the term a lot. But what exactly is a full-stack developer? Learn what a full-stack developer does and how to become one.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/\" \/>\n<meta property=\"og:site_name\" content=\"Make Me a Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-02T04:47:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-23T14:57:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2018\/11\/What-is-a-full-stack-developer-anyway-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Erik Dietrich\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Erik Dietrich\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What Is a Full Stack Developer, Anyway? - Make Me a Programmer","description":"You likely hear the term a lot. But what exactly is a full-stack developer? Learn what a full-stack developer does and how to become one.","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:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/","og_locale":"en_US","og_type":"article","og_title":"What Is a Full Stack Developer, Anyway? - Make Me a Programmer","og_description":"You likely hear the term a lot. But what exactly is a full-stack developer? Learn what a full-stack developer does and how to become one.","og_url":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/","og_site_name":"Make Me a Programmer","article_published_time":"2018-11-02T04:47:04+00:00","article_modified_time":"2023-07-23T14:57:45+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2018\/11\/What-is-a-full-stack-developer-anyway-2.jpg","type":"image\/jpeg"}],"author":"Erik Dietrich","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Erik Dietrich","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/#article","isPartOf":{"@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/"},"author":{"name":"Erik Dietrich","@id":"https:\/\/makemeaprogrammer.com\/#\/schema\/person\/cd8d8862388cb8b1f3de0221d0c1eb9d"},"headline":"What Is a Full Stack Developer, Anyway?","datePublished":"2018-11-02T04:47:04+00:00","dateModified":"2023-07-23T14:57:45+00:00","mainEntityOfPage":{"@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/"},"wordCount":1449,"publisher":{"@id":"https:\/\/makemeaprogrammer.com\/#organization"},"image":{"@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2018\/11\/What-is-a-full-stack-developer-anyway-2.jpg","articleSection":["Common Questions"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/","url":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/","name":"What Is a Full Stack Developer, Anyway? - Make Me a Programmer","isPartOf":{"@id":"https:\/\/makemeaprogrammer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/#primaryimage"},"image":{"@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2018\/11\/What-is-a-full-stack-developer-anyway-2.jpg","datePublished":"2018-11-02T04:47:04+00:00","dateModified":"2023-07-23T14:57:45+00:00","description":"You likely hear the term a lot. But what exactly is a full-stack developer? Learn what a full-stack developer does and how to become one.","breadcrumb":{"@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/#primaryimage","url":"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2018\/11\/What-is-a-full-stack-developer-anyway-2.jpg","contentUrl":"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2018\/11\/What-is-a-full-stack-developer-anyway-2.jpg","width":1200,"height":675,"caption":"Full stack of cards"},{"@type":"BreadcrumbList","@id":"https:\/\/makemeaprogrammer.com\/what-is-a-full-stack-developer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/makemeaprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"What Is a Full Stack Developer, Anyway?"}]},{"@type":"WebSite","@id":"https:\/\/makemeaprogrammer.com\/#website","url":"https:\/\/makemeaprogrammer.com\/","name":"Make Me a Programmer","description":"Coding doesn&#039;t have to be hard.","publisher":{"@id":"https:\/\/makemeaprogrammer.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/makemeaprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/makemeaprogrammer.com\/#organization","name":"Hit Subscribe","url":"https:\/\/makemeaprogrammer.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/makemeaprogrammer.com\/#\/schema\/logo\/image\/","url":"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2019\/06\/Round-Small-Hit-Subscribe.png","contentUrl":"https:\/\/makemeaprogrammer.com\/wp-content\/uploads\/2019\/06\/Round-Small-Hit-Subscribe.png","width":248,"height":271,"caption":"Hit Subscribe"},"image":{"@id":"https:\/\/makemeaprogrammer.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/makemeaprogrammer.com\/#\/schema\/person\/cd8d8862388cb8b1f3de0221d0c1eb9d","name":"Erik Dietrich","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/691ca004bd18f464e9467b2f838e8fbc7a9a2c9eb8568b04a834ac653f3ab1d7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/691ca004bd18f464e9467b2f838e8fbc7a9a2c9eb8568b04a834ac653f3ab1d7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/691ca004bd18f464e9467b2f838e8fbc7a9a2c9eb8568b04a834ac653f3ab1d7?s=96&d=mm&r=g","caption":"Erik Dietrich"},"url":"https:\/\/makemeaprogrammer.com\/author\/erik-dietrich\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/posts\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":0,"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/media\/101"}],"wp:attachment":[{"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/makemeaprogrammer.com\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}