Is Becoming a Full Stack Developer Worth the Money?

Was learning Python and JS - Trying to do little portfolio projects like making a calculator in JS and making a chatbot in Python... Because I am a dipshit and holy fuck I just want to get out of insurance. Please tell me my gay Odin projects and homosexual codeacademy joints will actually push to a slightly nicer cubicle.
 
Do online tutorials for free.
Pro code academy courses seem fun - Spent like twenty hours learning mocha and proper testing, which, after reading the posts on here, is absolutely worthless for web development because instead, I need to be copy/pasting CSS code to make corporate websites think that parallax scrolling effort is amazing or whatever.
 
I have been contemplating this ever since I heard about a program that costs $18,000 in total for 10 months.

I would like to further my career into geology/geoscience/GIS, and they're asking me if I have experience with Python, as ArcGIS uses Python. But I also wouldn't be averse to a career as a programmer/developer.

Here's an article deriding the term "full stack developer." (archive)

The author argues that everyone is "full stack," but that everyone has different strengths in different areas.

In software development (especially web development), we hear the phrase, “full stack developer,” as in “I’m a full stack developer” or “we’re looking for a full stack developer.” Guess what? There is no such thing.

All developers are full stack.*

and…

No developers are full stack.**

The phrase “full stack” is really just a business buzzword, not an engineering designation. Real developers do not run around saying to each other, “are you full stack?… I’m full stack… how about you?… you full stack?…” The phrase “full stack” is just what developers say to pander to recruiters who usually have no idea what that means. It’s what recruiters say to appease managers but usually have no idea why they are saying it. It’s what managers say because of course no one wants a team of half-stack developers, that would be crazy. Ever see a team of half stacks? It’s awful.
So where did this phrase come from?

This unfortunate phrase evolved from a technical descriptor meaning the full set of primary technologies that comprise a complete technical solution. It typically means the database and operating system (aka the “back end”) up through and including the user interface (aka the “front end”). Between those two points, is the control and business logic. This end-to-end solution relies on many ancillary technologies such as the network, hardware, load balancers, firewalls, etc., but typically “the stack” refers only to the database, the operating system, and the languages needed to make a complete software solution (typically one or more back end languages and one or more front end). On the surface it seems logical that if “the stack” is the set of technologies needed to make an end-to-end solution then you would want an engineer who is a “full stack engineer.” In other words, you want one engineer that can complete an end-to-end solution. Seems logical. It’s not. It’s very wrong (with a couple notable exceptions explained below).
So, when you ask a developer, “are you full stack?”, what you are really asking is, “can you work with the database, the operating system, and two or more programming languages?” Of course they will say yes. However the question itself is completely meaningless. Being “full stack” is the very definition of software engineer/developer. There are no other kind of software engineers. None. If you are a technologist but not “full stack,” then you are not a software engineer. That is literally what software engineer means. There are many other professions that are both highly technical but not full stack and they have their own names. Database Administrators specialize in the database, they are not full stack, and that’s why we call them Database Administrators. System Administrators specialize in the operating system and servers, they are not full stack, which is why we call them System Administrators. Web Designers (as opposed to web developers) specialize in user interface design, but not complete web solutions, which is why we don’t call them software engineers. If you’re not “full stack,” then you are not a software engineer. It’s self defining.

Saying you want a “full stack” engineer is like saying you want a “full medical” doctor or a “full fire” fire fighter. You don’t say those things because its redundant. There are no “half medical” doctors. There are medical professionals that are not “full medical,” such as nurses, EMTs, and physician assistants. That’s why they have their own names, they aren’t doctors. The moment you say “doctor” it means you get “full medical.” Being a software engineer means you have a specific set of skills that are required to fully engage in that profession. By definition those skills are “the full stack.” When you ask a developer “are you full stack?” you are actually asking “are you a software engineer?” If you’re talking to a developer and you need to ask “are you full stack?” then you don’t really understand developers or the stack. Want to hire great software engineers? Do it right. The question of full stack is meaningless unless you also ask about your stack in particular, and if you do that, then you didn’t need to ask “are you full stack?” in the first place.

* The first reason there is no such thing as a full stack developer is that all developers are full stack. “Full stack” is a meaningless and redundant designation.
While every developer is full stack, it’s very important to realize every developer is better or worse at one area or another, and some have purposefully specialized in only one part of the stack. Back to the Doctor analogy, while every doctor is full medical, some specialize and are no longer appropriate for other medical purposes. Do you want a heart surgeon doing your brain surgery? I don’t think so.

Even without purposeful specialization in any one area or another, every developer is simply better at one area over another. For example, in my case I have a masters degree in computer science and I’ve worked in dozens of languages, operating systems, and databases over the years. If you ask me, “are you full stack?” and I say yes, what have you learned? Nothing. What you really need to know is that I have different capabilities at different points in the stack. I am decent on the database, my skills are solid. I don’t make any big mistakes, but I am certainly not making the database tables sing in perfect harmony. I’m above average with user interface and design, but I’m not a UI/UX desiner and I can’t compete with those who are specialists in that specific area. However in the back and middle of the stack, my control logic, business logic, and architectural skills are exceptional. While I am “full stack” just like any software engineer, I have an affinity for the back and middle of the stack, and for architecture. I started as a scientific and engineering programmer, doing the control logic for AI systems. Someone else did most the database work, someone else did most of the UI, and my primary job was building the AI engine that drove the software. I could have done the data layer and interface too, but the question is, in an enterprise scenario, should I work the full stack just because I can? No. Absolutely not. I can and do work at all levels, but that doesn’t mean I always should. We all can, but in practice day-to-day in an enterprise environment, we shouldn’t. We each work where we are best. That is, if you know what you are doing.
In a multi-developer dev shop, if you want the absolute best software product, you need to immediately stop believing and pandering to the myth of the full stack developer.

If you think you need “full stack” engineers because you want smart engineers who understand software end-to-end, then stop saying “full stack” and start saying “expert” and “experienced. “ Start asking the right questions. On the other hand, if you need full stack engineers because that is your development model, then you are simply doing it wrong. If you have a team of developers working the full stack in silos, doing everything from the database to the UI, then you are doing it wrong, wrong, wrong. Wrong.

Like most things in life, there are a couple of exceptions; 1) You are a start-up or so small you only have one or two developers, or 2) you literally have no choice because the project must be kept to one person for strong business reasons. In those cases, by all means, talk about the full stack because you have no choice and that is a viable strategy. There are a lot of developers out there that really can deliver in that regard (I like to think I’m one of them). But when you grow, then grow the right way and break the “full stack” lie.

When someone asks me if I’m full stack, my answer is, “I’m a software engineer.” If you don’t understand my meaning, then you probably don’t understand enough to properly ask me any pertinent questions about my skill set anyway.

Still not convinced? Look at it another way, the reason the assembly line revolutionized production is because we learned that although a craftsperson can do it all, they shouldn’t. If you want to build chairs, you don’t hire 5 craftspersons that are “full chair.” You don’t tell each of them to go out and chop down trees, then tell all of them bring the wood back and cut it, then tell all of them carve the wood, etc. What you do is send one out to harvest wood — your best wood harvester. One sets up a cutting station and processes it — your best cutter. One sets up a carving station and carves — your best carver. One sets up and assembly station — your best assembler. One sets up a finishing station — your best finisher. You specialize and you create a flow. You build synergy. Software is no different. At every point in your software production process you should have a place for your specialist in that area to engage, do their best work, and move on. If you tell me your software doesn’t lend itself to that model, then I’m going to question your architecture and your leadership. If you want to run your dev team like its the 1700s that’s your problem, but don’t be surprised when your 10 full stack “artisans” are schooled by three hard driving engineering specialists led by a someone who knows how to get work done in this century.

When you ask for a full stack engineer in an enterprise environment, you may as well say, “I want a jack-of -all trades and master of none.
I know what you’re thinking. You’re still thinking “but I really want full stack developers!” Despite everything I just said you still think that because for you “full stack” means someone equally and perfectly proficient at all points in the stack. Good luck with that. Not only is that impossible, after two decades of software development I can tell you that assuming I could even find that person, I don’t need them nor do I want them. Give me a database expert, a control logic expert, and an artist with the UI, and I will beat your “full stack” team in every way, on every level, every time. Every time.

** The second reason there is no such thing as a full stack developer is that no developer is full stack in practice in enterprise production. At least not if you’re doing it right. They can be. They just shouldn’t be.

If you’re a manager or recruiter asking for full stack developers for a fully staffed dev shop, then I put it to you that you either don’t know what a developer is, or you don’t know how to run a dev shop, or both.

If you’re an engineer saying you are (or are not) full stack; stop it. Of course you are full stack. You’re an engineer.

Do you think it's worth the money to get an $18,000 education on full stack development, or is it not?
What is a full stack? Do they expect you design CPU architectures?
 
Last edited:
I have been contemplating this ever since I heard about a program that costs $18,000 in total for 10 months.

Bruh. If you're even considering paying 20K to learn to be a javascript monkey, just shoot yourself in the head now. It'll be much less painful. There are a trillion Chinese and Indian semi-morons graduating from Pune upstairs university every day who can do this work for 500 grams of rice and bunkbed in the l33t h4ckz0r dorm. Don't fuck yourself by trying to compete with them.
 
This is not a good idea. Even worse than a BSc. which while it may cost more and last longer, at least proves you can turn up on time and commit and manage that time enough (inbetween getting pissed) to have earned that degree.

Look up the LAMP stack. It's pretty straightforward even though nerds argue over its definition. Pretty much no one will argue with this, at its most basic:

L - Linux/OS - doesn't even really matter what distro.
A - Apache - Server software.
M - MySQL - Database software.
P - PHP/Perl - Programming software for CGI stuff to translate.

There's nothing stopping you developing on the WAMP stack either if you are starting out and Linux is your weak spot.

W - Windows/ OS
A - *
M - *
P - *

In fact when I developed on the LAMP stack (just basic and some not so basic DRUPAL), I developed in tandem on the WAMP stack. Sounds glorious! All it means is I went back and fore and tested my shit on different OS's. You pick an OS you need to and stick to it. Test on the other. No need to be clever.

The great thing about this setup is that it is fully testable on either platform, because it will be rendered as a web page at the end of the day, and no matter what the OS reading it, the whole fucking point of doing it is that it is 'universal'. Mac users can read those web pages and fill out those CGI forms as well as any other OS user.

For some reason I found it easier to develop using the LAMP stack, i.e. in Linux (LMDE), whilst not really being a Linux mastermind at all, just a very basic user. Had some better tools and I was just having fun anyway compared to windows. I had some problems maintaining the distro when it updated and got out of my depth. I was not able to get help from the Linux community. This is a common problem. A lot of devs just stick with windows because it's easier and you can get help easier. You only really use Linux if you have to or if you are learning (like I was). Just my perspective. Not gospel.

You can set up a local server on your home desktop/laptop and you will use this for testing before you 'Go Live', that is to say, start uploading things to whatever service provider you have chosen to host your site. First things first, you will need a domain name, such as 'kiwifruitz.org' - you check to see if it is available and if it is you register it. Namecheap provide such a service for example. A few bucks a year depending on the name.

But you will also need server space to host your domain 'kiwifruitz.org'. There are a lot of these. In fact there are so many that there are whole webmaster websites dedicated to keeping up with it all where you can also get lots of other info as well. I won't tout any here. Some names are household names, others are fly by night operations that may or may not be absolutely perfect for your needs. You need to figure out bandwidth requirements, but for a test website just buy the cheapest damn thing you can find, within reason. As long as you are not hosting porn or gore you shouldn't really fall foul of any terms and conditions. (I can hear null sobbing slowly and uncontrollably in the background here).

This server space or ISP is also going to balance out at a few bucks a month. I'm sure others will correct me if I got it wrong. It's been a while now and the game might have changed. But probably not by much. Just factor in that you will need to pay 'something' for this.

Ok. So you got your spiffy new domain name: 'kiwifruitz.org' and you have it registered for a whole year or more (costs more money) and you also have an ISP that will have a physical server where you will upload your PHP/Perl/HTML/CGI scripts to. Ditto it costing more for more years, and of course, great discounts are available if you buy in bulk! Then again, if it's a smaller ISP and also a particularly good one, it may get bought out by the end of the year or two by bigger entities, and you are in some version of SOOL. Just buy a year then renew.

To recap:

L - Linux OS
W - Windows OS

You will have decided this first and foremost. It's the first stage of the stack. The most comfortable one for you, you will have chosen.

Hint: Now is probably not a great time to learn Linux. Then again, it may be the best time of your life to learn Linux.

So you have your OS: Linux/Windows/WTF

Next pick your server that you are going to install.

A- Apache

Probably. Let's just go for that for now. There are bundles that help you to install both the Apache server software itself plus also any required modules for CGI stuff iirc. You'll need to read up on this. But the basic idea is to set up an actual real life real time server on your local machine. This will be used for testing before you 'Go Live' on your paid for server space.

It's free software keep in mind. Apart from the few bucks to register your domain name and the few bucks to maintain your 3rd party server, none of this costs a penny.

Now we come to the

M - MySQL

The database. This particular one is named after monty widenius' daughter 'My' -

"My" of MySQL is Monty's daughter

No matter. You may not even need a database at this point to get things up and running with a basic web page if you have never done this before. MySQL is also free. You can also use other databases, but this is the classic one for the LAMP stack. It runs a search and query langauge 'SEQUEL' - SQL in other words. Structured Query Language. It is how you populate and query databases to store and retrieve data, respectively.

Are you getting the picture yet?

Each one of these things is the whole leg of the elephant. You can't even eat one of them in one go. Buckle up buckaroo, things are going to get much more challenging.

Let's keep it simple. You've gone for windows because you are familiar with that. You can learn Linux later. You've chosen the standard latest distro of Apache for your server. You've decided to use MySQL as that's a standard as well, even if you won't be using it yet, or don't really know how to use it. You will need to know basics at some point though.

Now we come to -

P - PHP/Perl

This is the language used to interface (hence CGI - common gateway interface) between the web page and server and database. Perl can render HTML even, which is a common thing it is used for. It can also be used to execute 'forms' where maybe you knock up a nifty little temperature translator from Celsius to Fahrenheit all on the client (end user) web page. You can use both languages. In fact you can even use C or C++ for CGI if you need the speed and you know what you are doing. Perl is an interpreted language so it has some performance penalty, but it's generally fast enough for what most people want to do, because it misses out the compilation stage of languages like C (which make them faster because they are 'pre-compiled' beforehand and not 'on the fly' at runtime such as Perl is).

Perl is almost as fast as pre-compiled C though, the end user just takes a bit of a hit compared to you that had to take the time to compile it. I wouldn't sweat this right now. I also expect to have started some holy war with my ignorant comments. Don't listen to me. I really do NOT know what I'm talking about. And you can quote me on that.

But really this is academic shit. Very few people starting out are going to be using C for the needs of their CGI.

One thing you will need however, and it's a bit of a gotcha, is the fact you will need to know HTML to a rudimentary level, else all this is going to be painful for you. It's the weak link in the chain. By all means learn all the stages of the LAMP stack, but for pity's sake make sure you can knock up a half decent post on kiwifarms first. The html tags are there. You just have to find them. Experiment. I don't mean shit up the thread, I mean preview until you have something that looks good. Nice big headers, spaces, paragraphs, basic shit. Knock yourself out with listed items and strikethroughs. This will save you much frustration later.

I assume you are at least faintly acquainted with HTML.

In fact, if I were personally tutoring you, I would be a complete bastard to you the first day or two till you grokked how to handcode a basic page of html (HtmL is not case SENSItive). It would be painful at first, then like water off a duck's back. You can use editors all you like, but there is no substitute for knowing how the basics work.

From there it gets to be a fucking nightmare because we all end up using editors sooner or later and they are a fucker to debug when just some small portion of code does not render properly on the browser. This is why a lot of hackers/crackers do not like programming web pages or find it tiresome. It's hard enough debugging C++ but it's a strict language and there are tools for that. HTml iS A fuCKINg freE for All. And if it's just your eyeballs doing the dirty work (as they will often have to), it's a pain.

Btw, there are packages like IndigoPerl or ActivePerl* that help with integrating that in to your local machine desktop server thing. At least there used to be. Maybe theystill exist. Maybe something else is better now.


But I'm sure that there is something out there that can help automate what can be quite a daunting task when you first want to put the bare bones of Perl or even JAVA on a machine. Let's not talk about JAVA. Write Once Run Anywhere.

Where as Perl is: Write Once Read Never.

Little Perl joke there and if you ever got deep in to reg/ex (regular expressions) you would understand it if you came back 3 months later to maintain the code. Fuck it, 3 minutes later in my case!

Perl, all the power of C and with all the ease of use as C.

Nother little joke. Have you tried learning C?

Two books you need:

1: K&R
2: ABC (A Book on C)

C is a very terse language. Very powerful. Very bare to the metal. They even use it to write compilers. C++ is a superset of C. JAVA is based on elements from C++ such is Javascript.

Ah, Javascript.

Well, just like they left out you need to know htML to work on the LAMP stack, they also failed to mention you will need a certain amount of Javascript too. Love it or hate it. It's glue. It's a quick and dirty language but can be quite involved. People have written 3D ray tracing renderers in it iirc. Among other proof of concept stuff. It's still a nightmare though for what you will be using it for on the LAMP stack.


So let's recap.

You will need:

An OS (L)
A Server (A)
A Database (M)
A Language (P)

Linux/Windows
Apache
MySQL
PHP/Perl

Each of those is an abstraction layer again on top of the previous ones they sit on.

See the OSI model: https://en.wikipedia.org/wiki/OSI_model#Layer_architecture

The very lowest abstraction layer would of course be the very hardware you are running on. The consequent layers would then build on that and work their way up.


I’ll try to answer the actual question of what a stack is.

In the Internet architecture (TCP/IP, OSI, etc.), protocols and software are often “stacked” on top of each other, as they depend on each other for support. For example, TCP provides reliable transmissions of data, on top of IP. The same goes for LAMP, your Apache server needs to run “on top of Linux”. Think of this “stack” as your favorite stack of pancakes, where each pancake is a different layer.




----

But you will also need skills in both HTML and Javascript. Or else not much of the rest of that is gonna make sense.

If you know nothing at all and are starting at the very beginning. Then start with -

1: HTML
2: Javascript
3: PHP

There's probably more PHP code in the world in boiler plate form that you can hack out from different templates. If not then usually PHP is easier to 'parse' than Perl (see my earlier pithy comment).

This is how many street shitting code monkeys work (and why most of the internet has stopped working altogether the last few years) - they take already created and freely available boiler plate code and hack at it till they get something that just about works, then they don't test it, but give it to their bosses, who then deploy it, without testing it.

Any good software engineer will tell you: Coding is just 10 percent, testing is 90 percent. Depending on whatever methodology used. But you get the idea.

This is why you put the Apache Server on your local desktop/laptop first and test test test. It's not even worth paying for a domain or ISP by this point if you are starting out. But do it anyway because by the time you do get ready to 'Go Live' and you have all your code handy, the last thing you want to be fucking about with is finding a suitable ISP.


This was meant to be a shitpost and not a mini-tutorial. And tbf it probably still is more of a shitpost than a mini-tutorial. I've failed again! I'm ugly mom, admit it!

But whatever you do, for the love of sweet little baby jesus. Do not go paying that kind of cash or getting in to debt for these bullshit bootcamps. There's a lot of spergs out there that will help you out for free and shits and giggles.

Little Addendum:

Kiwifarms is one of the most sublimely programmed websites on the entire fucking internet. This is without getting in to shit that I have no understanding of that Jewsh has to deal with like Dos attacks and whatnot. Just talking the coding, the framing, the representation, the colours even, the fact you can switch themes. It's seriously fucking impressive. If this boy isn't seriously autistic, he fucking will be by the time he's finished. Also keeping up to date with 3rd party forum software, jumping through hoops, things outside his control, rolling with the punches.

More than anything, it's hard fucking relentless work every minute of the fucking day. And what's worse, you couldn't really keep that up if you actually were autistic.

Kudos.



ETA: concept of interpreted vs. compiled.
 
Last edited:
Coding as an employee, in general, is a miserable job with an insane burnout rate

It's sedentary, hyper-monotonous busywork that's glorified into some science or art by technocrats and neolibs for god knows what reason.

If you get into coding, might as well be creative or front-end related so you have some degree of creative license over your work. But yea, aiming for coding as a job.... you might as well become a technician that allows you to move your limbs once a while, it's healthier.

Also, "Full stack" is just a buzzword for basic web skills.
 
Build something from scratch first and see if you like it.

1. Go make a project using your free hosting page in github.io to learn the basics of webshit frontends and javascript.
2. Then spin up a free AWS instance to learn how to run a basic nodejs server and get it to communicate with said frontend. You should be able to install and make use of libraries to do the actually hard networking for you. You will also have to get familiar with at least one frontend library like reactjs or vuejs.
3. Then install a relational database like mysql and learn how to safely manipulate it from your nodejs server.
4. Then move on to learning how webhosting works.

I ordered these steps by how interesting they are. If the idea of grinding hours of javascript to make a browser button input a string into a database doesn't appeal to you, you should not work in webshit.

To me, if someone claims to be 'full-stack' I would expect them to at least be able to make and host an imageboard from scratch in a weekend. I have a feeling most full-stack devs aren't able to demonstrate competence every step of the way though. Some parts like like running a HTTP server are annoying enough that few bother to learn it in depth.
 
Do not go to college to learn programming. Do not go to a bootcamp to learn programming. Don't waste your money. If you do not have the requisite interest (autism) in the field to learn these skills yourself, your skills will be out of date in 10-15 years, and you will have a very hard time finding a job.

Learn yourself. Learn how to learn yourself. Constantly learn new things in programming. If you have a genuine passion for it and keep accumulating knowledge over the years you will have little trouble maintaining employment.
 
The phrase “full stack” is just what developers say to pander to recruiters who usually have no idea what that means. It’s what recruiters say to appease managers but usually have no idea why they are saying it.
That's nearly every tech term on any given job posting. You have no idea how many times I've had to tell HR people "If you can actually find someone who has all of those qualifications you definitely can't afford them."
 
Yeah, unless you're really into coding, it's a punishing job and extremely tedious and pretty much endless. Speaking from experience but you REALLY have to be into this shit 24/7 to make it your life on and off the work clock.
 
Yeah, unless you're really into coding, it's a punishing job and extremely tedious and pretty much endless. Speaking from experience but you REALLY have to be into this shit 24/7 to make it your life on and off the work clock.
Or just fake it until it's impossible not to anymore and hop to another job.
 
Back