Settings

Theme

Ask HN: What is “full stack” actually?

36 points by serverhorror 11 years ago · 87 comments · 1 min read


I'm reading all those "full stack" topics and can't help but scratch my head.

What does it describe? Is this some common basic term I'm actually missing?

To me full stack would start way down at the hardware design and end just when the computation has finished and (possibly) persisted to disk. A vast field that I can't possibly hope to learn in a lifetime.

Dear HN please enlighten me

IgorPartola 11 years ago

I define it in practical terms: can you start from scratch and deliver and maintain a product? This is a term that's often used to describe web or mobile development, so in this context I take it as being able to do things like platform setup and maintenance, write a backend, write a front-end, do the design, etc.

This term really caught on with people who develop for the web because there actually is a divide here: some people really prefer the front-end work (JS/HTML/CSS), some people prefer the backend work (sysadmin/app logic/data stores) and some people prefer both.

So basically, if someone says "full stack", they likely mean that you can develop and run the entire product, not just a part of it.

Having said that, I strongly encourage everyone to go deeper. Learn some C. Figure out the difference between a function and a syscall. Understand what the kernel does and how it works (whichever kernel you happen to use). Write a toy libc. Program for a microcontroller (try adding RAM to a microcontroller circuit for added fun). Play some Minecraft. Write a bit of assembly. Create a data store. Develop a JS framework for DOM manipulation. Create a toy programming language. Write a malloc implementation. Write a kernel module (maybe a driver to that microcontroller device you put together). Write a web server. I find that the more of this kind of stuff you do, the more aware you become of what `display: block;` will do and how to structure your code better.

  • notacoward 11 years ago

    Thank you. I'm sure a lot of people will say you don't really know some of that stuff, and they're kind of right, but it's always helpful to have a buffer of stuff you "kind of know" around the stuff you really know. That way you don't get lost as soon as you hit the boundary. You know which way to turn, how to recognize what's still relevant (to your original problem) vs. what's not, what phrases to search for if you need to find out where the real experts hang out. If you've been in the space before, even briefly and superficially a long time ago, it can really help. Without that you can't even know what "full stack" really means.

    • IgorPartola 11 years ago

      And personally I don't. That list of stuff to try, is more of a bucket list, though I have touched some of it and found it thoroughly enjoyable. Currently working on a malloc() implementation.

    • ethbro 11 years ago

      Or to trot out the concise summary, a buffer of "kind of know" helps you know what you don't know. Which can be pretty darn useful.

  • amirmc 11 years ago

    > "So basically, if someone says "full stack", they likely mean that you can develop and run the entire product, not just a part of it."

    On the face of it, this sounds reasonable but it glosses over the fact that better tooling/frameworks/etc make it much easier to get started. If you use something like Parse/Heroku or their ilk, then you can get away with not having to know much about backend development (or the problems around it). In effect, when you define 'full-stack' as the ability to ship a product, then the 'stack' is actually narrowing over time.

    This is just an observation and as I said elsewhere in the thread, I don't find the term particularly useful anyway.

    • kohanz 11 years ago

      Not only is the stack narrowing, but most people who use the label "full-stack" have fixed the definition of that stack (the set of front-end and back-end components that they have experience with). So the complete definition would be "I'm a full-stack <list one or more stacks you're comfortable with> developer".

      To say "I'm a full-stack developer" without that context is meaningless and will inevitably be untrue.

      • ethbro 11 years ago

        > To say "I'm a full-stack developer" without that context is meaningless and will inevitably be untrue.

        Well, couldn't one suppose that it's at least indicative of having touched the architectural groupings at each level.

        Whether or not you find value in it (e.g. industry and academia being fairly divergent on this), having worked with a data store layer informs something about an ability to work with any data store layer.

  • johan_larson 11 years ago

    My working definition of "full-stack developer" boils down to "can write a complete web application". That requires substantial skills in the browser (HTML/CSS/JS/jQuery), server (Python/Django, perhaps), and storage layer (MySQL is a common choice).

    This definition omits some things that become more important as the application becomes larger, such as cloud deployment, performance optimization, project management, and designing for reliability. But I think of those as more architect or project manager skills, rather than developer skills.

    I should add that all three tiers are complicated enough to have specialists of their own. It's perfectly reasonable to be a database expert, full stop. But there seem to be a lot more opportunities for people who know the whole stack.

  • vkjv 11 years ago

    I echo this sentiment. Full-stack means that you can support all aspects of the stack, and here's the key, that need to be supported by a dedicated person.

    For example, most people "out source" their network / system administration to a company like Rackspace or Amazon. I would still consider someone utilizing their services to deliver a product "full-stack".

    • IgorPartola 11 years ago

      Right. I find this term most useful in terms of building a team. Do you need to hire one person or two to get the job done?

      Now, that's not to detract in any way from people who specialize. A good front-end developer with design skills can often get the job done faster and simpler. A good backend specialist can get performance under control sooner.

amirmc 11 years ago

There's no fixed definition and I've found that people use it when they're asking for 'broad' skills -- where broad is defined by their own experience (cf. most of the other comments here). For example, most web developers would consider front-end and back-end as 'full-stack', whereas an OS/systems person might consider knowledge of hardware up through kernels into the application layer as 'full-stack'.

It's about as useful as the term 'Ninja' or 'Rockstar' in that it's used when people can't articulate succinctly what they mean (or they don't really want to take the time to do so).

  • guan 11 years ago

    It should really include hardware and electronics down to the transistor level, and higher level skills like UI, architecture, marketing.

    • ecaradec 11 years ago

      it should really go down to quantum physic, thermodynamic and up to philosophy...

      • ethbro 11 years ago

        It all collapses down to a figment of my imagination anyway.

        (Btw, now hiring full solipsist developers. I'll find you if I'm interested)

notacoward 11 years ago

1. Start at the top of the stack (nearest to the user, furthest from the hardware).

2. Keep learning about lower layers until you get tired or things just don't make sense any more.

3. Define that as "full stack" and ignore anything still below.

For most people the process seems to terminate somewhere around the kernel/user boundary, much like someone in a boat who's aware of the vast shapes moving below but never gets a clear sighting. IMX a typical "full stack" engineer can manage things like routing tables and logical volumes, understands that context switches and page faults matter, but becomes increasingly unable to explain what they really are to others. By the time you get e.g. to different kinds of cache misses or database/compiler internals (even those are still out in user space) forget it.

TBH I think most "full stack" engineers are half-stack at best. So am I. Twenty years ago the upper parts of a modern stack didn't exist and I could explain pretty much everything in the lower parts from tty to network to disk plus VM/schedulers/etc. Maybe back then I could have called myself a full stack engineer. With today's deeper stack (and my own career progression) I'm down to about half, somewhere in the middle. I don't actually know anyone who's truly full stack any more.

FooBarWidget 11 years ago

In my opinion "full stack" is what all developers actually should be.

15 years ago, it was normal that, as a developer, you know how to administer a server, know how Unix works, know how to setup/debug the database. Maybe know a bit of C.

Fast forward to 2015. Lots of developers are purely frontend developers and don't know how to setup a server, or don't know how to administer the database. This is now the norm. The developers who could do all that stuff (as they should) are suddenly "full-stack developers".

  • casion 11 years ago

    You do realize that not all developers work with the web, right?

    A lot of us actually don't even touch the web all day long, not even for fun.

    • karmajunkie 11 years ago

      I've been developing professionally for 20 years and never encountered the term full-stack until it was used to describe a web developer who could implement design (not necessarily do the original design work), implement the front-end, and implement the backend. It seems to have now grown in scope to include mobile app development in at least one mobile platform as well as fully client-side frameworks like Angular, Ember, or React (which weren't in widespread usage when the term began to be used much more frequently, as I recall.)

      This definition including hardware down to the transistor is just silly, and its the equivalent of non-web devs chiming in with a "Hey we matter too!"

    • tcfunk 11 years ago

      While true, it's probably safe to assume that in the context of a "full stack" discussion, "developer" can be taken to mean "web developer".

      • vonmoltke 11 years ago

        The community needs to stop being so imprecise with language. "Developer" is a broad category, and I shouldn't have to figure out from the context of the discussion what "developer" means. In fact, I often run into discussions where the context isn't there.

    • collyw 11 years ago

      At the same time, In consider myself a database developer. A software developer that specialized in database driven apps. This used to involve desktop clients ten - 15 years ago. Now its far easier to go with Django and use a web app for the front end. (So I guess I am full stack no).

      I would assume that most decent devs no matter what their specialty will be able to get a very basic HTML page working. Or am I making too many assumptions?

    • fit2rule 11 years ago

      Where did the parent mention the web? I happen to agree with them that developers should be able to handle any level of abstraction, at any layer. But this doesn't have to be with web technologies - not all servers are web servers.

      • casion 11 years ago

        The OP said "In my opinion "full stack" is what all developers actually should be."

        It's not what all developers should be. For a lot of us, it would be a complete waste of time to learn technologies that we do not use, let alone have access to.

        • collyw 11 years ago

          You can be full stack with various different stacks. I use LAMP, so I am pretty out of date with any .Net technologies. But I would consider myself full stack to an extent.

          • Retric 11 years ago

            I have no idea how knowing databases or HTML is going to help someone write embedded code for RC controlled drone. And I am mystified by the idea that knowing ARM asm is going to help but a website, MMO, or tax prep software.

            At best full stack just means knowing one level deeper than necessary.

            • angersock 11 years ago

              So, if you know a little HTML, you can write a simple diagnostic page for your drone, or a product page for it.

              If you know a little SQL, you can throw a SQLlite database on the drone to easily track points and query the data of multiple drones being collected.

              If you know ARM assembly, you can write optimized math routines for your MMO running on mobile clients, or on low-power boards in a server farm. Or figure out why your web server is crashing in weird ways on your server. Or why certain overflows in your tax software aren't being trapped.

              "Full stack" means knowing about the rest of the tools so you can improve things beyond what CodeProject would let you do.

            • fit2rule 11 years ago

              Obviously it means the stack YOU ARE USING, not all kinds of alternative wild technologies that are out there. If you are using something that depends on a database somewhere in the stack, then knowing how to administer that database is definitely something a 'full stack' developer, in that context, would need to be able to do.

              • Retric 11 years ago

                So a C# .net developer should know what?

                Basic .net developer: (1 or more JS frameworks ex: Angular), HTML, JavaScript, CSS, C#, .net, LINQ, ORM(nHibernate), XML, SQL, T-SQL, …

                Full stack: That plus, basic network administration (TCP-IP, BGP, routing tables?), basic windows administration (installation, security, back, scripts, deployment, troubleshooting), basic IIS administration (setup, matinee, troubleshooting), basic DB administration (deployment, troubleshooting, backups, clustering, profiling etc.), basic team foundation server administration, ...

                Then to get an actual job you should know exactly the correct stack, including whatever wacky tools the team likes…

                PS: And people wonder why they have trouble finding good developers.

                • fit2rule 11 years ago

                  Well, you may think that standards are too high, but on the flipside, yes: the expectation that you are able to deal with such a suite of tools is also out there. Maybe this reflects on the quality of the stack more than anything else - on the other hand, .Net and C# development is pitched as a reason to not have to know any of those things, too.

                  • Retric 11 years ago

                    The problem IMO is out of the 100 or so developers I have worked with none of them fit that profile and IMO that's completely ok. Granted, I actually cover most of that except the networking side, and know a few other that come close. (Which is probably why I am standing up a continuous integration server today instead of actually coding.) But, it really just seems wasteful as the value of teams is they let people specialize.

                    • fit2rule 11 years ago

                      Nobody said everyone should be a full stack developer - just that more developers should consider the benefits of becoming more proficient with the layers of the stack with which they're not competent.

      • marssaxman 11 years ago

        I only hear the term "full stack" coming from people who mean "web developer" when they say "developer", forgetting that there is more to life than web-apps.

  • tscherno 11 years ago

    On big complex projects in "classically-organized" enterprises you can be successful for years without writing any html, js, css, sql or doing any administration at all.

    As a backend dev you get your data from web-services which are written by the web-services team (or another company) which in turn receives optimized database queries/procedures from the database team. You pass the data after processing to the template/fronted which is is the domain of the fronted-guys.

    Deployment is done by the ops team to servers which are administered by the infrastructure department in the data center.

    My first job as junior-developer was in such organization and it is quite enjoyable to have experts for every domain to learn from instead a lot of "Jack of all trades, master of none" people. The other benefit is that you can put all your effort in to mastering your particular domain.

    The drawback is obviously that you are isolated in your tier and don`t learn as much as if you would do a project "full stack".

  • atmosx 11 years ago

    > In my opinion "full stack" is what all developers actually should be.

    I've never seen guys who grok C, ASM and Perl being fascinated by JS and CSS3.

borednbearded 11 years ago

When I hear the term "Full Stack" or someone working as a "Full Stack Engineer" all I can think is someone who can hack its way through the full development stack when need be in a multitier architecture. I sometimes joke around that when a company says they need a "Full Stack Engineer", they mean they want a "Software Architect" without the title,authority and a higher salary.

  • VLM 11 years ago

    The full stack applicant only needs to know a slightly wider view than what the interviewer knows, which in situations with job ads full of stereotypes and cliches isn't very much. If the ad asks for a rock star ninja full stack expert, make an arduino blink a led, draw a pix of your cat in cubist style, bring both to the interview, its all good. In those situations its usually WAY more important to have gone to the same school, and match demographically.

  • Iftheshoefits 11 years ago

    I wouldn't call it a joke, at least in the insular world of SV VC webapp companies. I view "full stack" as a phrase the same way I view "we want someone whose passion is programming": they're both indicators the company is looking for people to exploit and pay poorly for the amount of labor expected.

NDizzle 11 years ago

I think "full stack" is a modern way to say "generalist".

I have considered myself a generalist for some time, since the early 00s. I can handle all of the normal IT work in an office, in a colocation facility, networking, power delivery, cooling, server purchasing / configuration, OS tuning / patching / securing, database design / development / optimization, application architecture / maintenance, and project management.

Typically I work with people at a very early stage and get everything up and going, add in most of the automation layers, and hand over the keys to someone else. Then I do it again on a slightly bigger scale.

rman666 11 years ago

This refers to a developer who can eat a large, or "full stack" of pancakes.

agentultra 11 years ago

It should be called, full heap developer. /snark

It's a pretty generic term watered down by its lack of concrete meaning. There are probably going to be a couple of hundred varying opinions and fifty or so disagreements about what it means before this post disappears off of the front page.

To me this makes it a meaningless term and one I don't feel bad poking fun at. It's a term used by managers and start-ups to get more for less from a single developer. We used to call "full-stack" developers, "generalists." Before that... I don't know, "whiz kids?" "Good with computers?" "Geeks?"

Many people agree that it means someone who knows how the whole technology stack works from keyboard and screen down to the processor. That used to be just, "programmer," but I suppose there is quite a bit more going on these days. I have my suspicions that few people actually know, "what's going on from keyboard and screen down to processor." Install just one software package on your machine and try to figure out how many dependencies it has, how many different languages and run-times, and "APIs" it uses. Then there's the operating system itself (often in the case of application developers). I think what we're really agreeing on is that "full stack developer" is a term for people who are capable of figuring out what broke when things go wrong and have a broad-enough range of experience to fix it.

atmosx 11 years ago

If you have the knowledge to:

1) Write an application backend (e.g. Ruby/PHP/Python/Java/ASP/JS)

2) Created a modern front-end (JS/HTML/CSS) for this application

3) Set up a VPS or go with AWS/Heroku/Whatever stack to deploy the app which means:

3.a) Set up the SQL or NoSQL database(s) 3.b) Set up the CDN for traffic control/protection/speed 3.c) Deploy a backup strategy 3.d) Write the firewall rules (if this is a VPN) and secure the host...

Well then by all means, you're a full stack developer. Some badasses use their own VPN to handle email (setting up an SMTPd daemon), write custom firewall rules, setup reverse-proxies (nginx) and use chroot, containers or jails (FreeBSD).

It's extremely hard to be good at all these, especially as the projects get larger and larger. Usually people are good either at systems administration (which is complicated and hard) or web-programming (which is complicated and hard).

Now being average on all of those, might be good for launching a startup-level MVP but I'm not sure it's going to work in the real world. There people who specialise in using specific cloud software, e.g. Amazon AWS ... If you try to work out the documentation and vocabulary it's a brand new world. I think Azure and Google might (almost) the same level of complexity for big projects.

vertex-four 11 years ago

A full stack web framework might mean a web framework that encompasses an ORM, routing, templating, email, possibly a built-in admin panel, and pretty much everything else that you need to develop a CRUD app. Recently, they might also encompass a front-end toolkit for doing AJAX-y things.

A web developer saying they work on the "full stack" means that they both write server-side and client-side code.

jader201 11 years ago

To me, full stack has always meant vertical coverage, not horizontal coverage.

That is, not necessarily experience in multiple web languages, but rather skilled in a particular stack from top (presentation) to bottom (database).

I consider myself, and look for jobs that are full-stack development, particularly because I like to work with JavaScript, CSS/HTML, server-side code, and database development.

barrkel 11 years ago

Full stack software engineer, to me, means knowing the full stack of abstractions from Javascript / Python / Ruby through C to CPU machine code for at least one architecture. Knowing hardware design isn't particularly relevant to software outside knowledge of how cache associativity works, cache hierarchy, CPU interrupts, page faults, that kind of thing - the API at the CPU architecture level. If you're writing device drivers, you've gone beyond full stack software - you've got to know more about specific hardware.

Full stack in practice means knowing where to look on the next layer down when something goes wrong, and having good intuitions about how things behave and how you can expect things to be implemented given what's available.

Full stack web engineer is less about depth of abstractions and more about breadth; knowing the browser, a back end language, a database, and enough about system administration to put it all together.

javajosh 11 years ago

I like the "he can make an application on his own" definition, but this masks the juicy part of this question, which is "well, what does that take?" Realize that, these days, you could build an arbitrarily complex program using nothing more than GitHub Pages with a dynamic shared data structure layered on and connected with some javascript, e.g. with Firebase. Personally, I'd consider that to be a kind of a stack.

But yeah, most people don't design software like that yet, so they mean server rendered pages, which means a server container of some sort, an application "middleware" process (something like node or PHP or Java), and a database process, all of which allow the user to, from one perspective, "pan and zoom" across some data corpus, and gives them the right to poke that data corpus at a few points.

emilsedgh 11 years ago

He could create a (good enough) [software] product alone.

dewey 11 years ago

http://www.laurencegellert.com/2012/08/what-is-a-full-stack-...

tl;dr Someone who's familiar with

- Hosting / Server environment (SysOp things)

- Application development (Front / Backend)

beenpoor 11 years ago

Full stack = Frontend + Backend Frontend = Think Consumer. He's the one that uses the backend, typically via browser. In the browser world, you have HTML + CSS + Javascript (add stuff like MVC framework, JS library etc). All these interact with backend to query or persist data on the backend Backend - Think producer. Typically these are your servers. Bunch of those actually. You will have servers to simple serve the HTML/CSS and other assets as well as database to persist data. They can be built on a language of your choice - but these days Javascript since you can write both frontend and backend in the same language.

I think the simplest way to think fullstack is to think of an end-to-end experience and list all the components.

jdmoreira 11 years ago

I'm an iOS Developer. For me going full stack looks like this...

* Develop the app. Let's say, swift + cocoa touch (front-end)

* Developing the backend services. Let's say, Django REST Framework (back-end)

* Setup and manage the PaaS. Let's say, Google App Engine or Heroku (infrastructure)

fit2rule 11 years ago

Full Stack in the modern context has been re-defined from what it used to be - its now more referred to in the context of web software development.

But in the 80's and 90's, it used to refer to someone who could handle development at any level of a stack of OS/Framework/API's - from either building their own new API/Framework, to using it, to using others, and so on. A Full-Stack Linux developer wouldn't have any problems busting out the kernel sources to add features/fix/debug, compiling libraries (add/fix/debug), building user-space apps (dev/fix/debug), etc.

But these days you mostly only hear it in relation with web technologies.

  • marssaxman 11 years ago

    I don't recall hearing the term at all in the '80s or '90s; I first encountered it some time in the last decade, around the time people working on web sites started to use "developer" as a synonym for "web developer".

    • fit2rule 11 years ago

      I heard it in the late 80's/early 90's, referring to Unix-based developers who could write a kernel module, device driver, user space daemon, user app - in fact I think I remember it referring to OSI and POSIX at first (i.e. can develop anywhere on the POSIX/OSI stack). I think its risen to popularity in the Facebook-era, but it certainly existed as a phrase and a concept in the 80's/90's.

aet 11 years ago

An old school example of "full stack" is LAMP: Linux/Apache/MySQL/PHP

http://en.wikipedia.org/wiki/LAMP_(software_bundle)

awjr 11 years ago

I call myself 'full stack'. 1) DevOps (provisioning, load balancing, infrastructure design, code deployment, db backup strategies) 2) Backend Dev (primarily APIs these days) 3) Frontend (primarily AngularJS) 4) Database Administration 5) Internet of Things IoT setup, design and deployment. 6) Language agnostic. 7) System Architect

What I don't do is draw pretty pictures. Don't mind UI design but the moment we start discussing changing the look and feel and PSDs you get somebody else cheaper in to do that.

Xeoncross 11 years ago

A full stack developer starts out as a kid that is too poor to pay someone else to do the parts of an application they don't understand.

So they learn databases, linux, Photoshop (wait, if poor; then GIMP), Javascript, PHRUBYPY, and $100 of free adwords credits.

These poor, full-stack developers try writing their own legal terms, finding the best examples of good UI to copy, and setting up social media accounts for their projects.

They also have a friend that is good with Canon/RED cameras and can help record a promo video.

bulte-rs 11 years ago

As far as I know, "Full Stack" is a misused term for developers who are able to do everything from devops to front-end development/ui/ux design.

  • Anderkent 11 years ago

    > are able to/or pretend to be able

    Why would you say this? It's incredibly offensive, and adds nothing to your argument. A full stack dev might not be as good as a specialized dev in any of backend / devops / frontend, but that's just the price you pay for being a generalist. That doesn't mean they 'pretend to be able' to do things.

  • NegativeK 11 years ago

    I keep seeing it as "I don't have any support and am forced to do a number of things poorly." Sometimes it unfortunately comes with a gross misunderstanding of the needs of some part of the stack.

    • bulte-rs 11 years ago

      I partly agree with this. Although I'm convinced there are actually people who CAN do a lot of "this stuff" quite good; I'm convinced that most of us mere mortals would be moderate in some of these at best while struggling with the rest.

jhildings 11 years ago

I would guess it mostly have to do with understanding the complete flow and parts of a web service or page. From the HTML/CSS in the front end, javascript somewhere in between and then how the backend language/API talks with the database.

Then how to configure/update/trouble shoot the web server and related issues like database performance and mail server errors

scotty79 11 years ago

You are full stack basically if given a computer and access to server you can build and deploy custom webapp in reasonable time.

bryanlarsen 11 years ago

I once ported Linux & U-boot to a proprietary ASIC, and then set up the rest of the stack, including writing my own "database" as a kernel driver, installing an embedded HTTP server, giving it an HTTP API and AJAX web pages.

Full-stack can mean whatever you want it to mean. Often it just means you're old.

AdrianRossouw 11 years ago

This was my take on it : http://daemon.co.za/2014/04/what-does-full-stack-mean

The term is very difficult to define, because you keep on getting different answers for what the stack actually is.

It's really a question of scope.

Dorian-Marie 11 years ago

Most of the time it means backend and frontend programming skills (eg: JS for frontend and Ruby for backend).

joshcrews 11 years ago

In my context, Ruby in Nashville, full-stack has meant you can do front-end html/css/js, backend application code AND the hosting/deployment/linux systems administration stuff too.

psaniko 11 years ago

It does not neccessarily imply mastery in all layers of the stack but rather familiarity and often the skills to understand and fix bugs in other areas other than your field of expertise.

Thaxll 11 years ago

Full stack means you're average at frontend and backend.

rvalue 11 years ago

For me, A full stack developer is some one who has knowledge of ML, Web Design w/ UX, Application Development for web and mobile, Databases and Big Data

amelius 11 years ago

"Full-stack" actually sounds to me like a stack overflow waiting to happen :)

dublinclontarf 11 years ago

HTML to SQL and all needed in between.

baccheion 11 years ago

Being a Full-stack Engineer means you have an understanding and can demonstrate competence at all levels of the stack (database/server administration, backend, frontend, architecture, design, marketing, product/user/business sense, and processing), not just one specific layer. When it comes to web or app development, being full stack means you can set up the web servers and database servers, administer those servers, design the information schema, write backend logic for the application (low-level code, middleware, and AI), write frontend logic, write client-side code, design the application's interface, conduct A/B user testing and get user feedback, optimize for search engines, set up internet marketing campaigns, and piece everything together. Essentially, a Full-stack Engineer can single-handedly create and market an application.

Full stack knowledge is typically needed and appreciated during the early stages of a startup, but larger companies dislike people with such broad-ranging knowledge and do everything to limit them, box them in, and prevent them from being hired. The typical excuse is that it's not possible to have knowledge that broad and still have strong depth of understanding in each area, but this is absolute garbage. Most idiots in middle management don't like Engineers like these because they'll become too dependent on them (middle management is obsessed with being able to see everyone as expendable, something that is not usually the case with a Full-stack Engineer). Also, a legitimate Full-stack Engineer is rare and special (even though 10-15+ years ago it was the norm to be this way), and management doesn't like people that are special.

By the way, while many job postings state they are seeking Full-stack Engineers, the term is usually just an empty buzzword used by management to lure in someone that knows Javascript. They don't believe there is such a thing as a Full-stack Engineer and think anyone claiming themselves to be one is full of it. So, while it's important for many companies (startups, especially) to have people with this skill set, they're still playing the same game of hiring in those that are expendable (no, "specialized"), mediocre (can't handle anyone that's skilled), and compliant (can't handle anyone challenging their authority).

I'm a Full-stack Engineer (if I'm not, then that's where I want to be), so I'll share my skill set as an example of what a Full-stack Engineer would know: - Hardware: VHDL, circuit board design - Backend: Python, Go, Java, Lua, C/C++, PBASIC, SQL - Frontend: Javascript, HTML, CSS - Machine learning knowledge - Able to set up and maintain servers - Can create wireframes and design a user interface - Can set up A/B tests and analyze user feedback - Can create and optimize internet marketing campaigns (most people don't realize this is almost 100% an engineering and optimization problem) - Good business and user sense

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection