Full stack developers are hard to come by nowadays, just ask any hiring manager at most companies. Even myself, working for a startup, I personally get to be a part of that hunt. And it isn't fun and it's time consuming. It's not so much that's it a difficult thing to do, but more that it's a long term commitment that many programmers don't get the opportunity to do at their cubicle jobs. I know from personal experience as for many years I hated CSS, JavaScript, databases, etc. and I avoided them religiously.
As soon as I started to build websites for myself however, that essentially had to change.
There are many different elements to consider in a stack, such as architecture, design, cloud services and even more nuanced technologies that many developers don't take into account, such as stream processing technologies by companies like Ververica.
So today I'll be going over a few pointers, tips and methodologies that I myself used during the past 10 years that have helped me tremendously in becoming full stack developer.
I'll say this, it's not an easy road and it won't happen in 6 months, no matter what anyone tells you. I know very few full stack developers, and they get huge praise from me because I know the amount of work that went into building that up. So let's get started.
Get a server
First off, get yourself a server. Any server will do, you don't need a fancy 99$ a month octa-core server. When I first started programming for myself outside of work, I went ahead and went with a 5$ a month shared hosting server and it was great for about 5 years, until that company got purchased by a larger company and then collapsed in on itself.
And while you don't technically "need" an external server to make websites, as you can always just use your own computer for years and years, it's going to help you figure out how websites work, why they work, and most importantly, why they don't work much of the time.
A server will help you figure out why websites don't work
That last one is huge. When I first began as a hobby programmer, every single deployment to my server failed for various reasons. Not randomly, like I used to think. And learning these edge cases are a huge part of being a full stack developer.
knowledge lies in that which we do not yet see (deep thought..)
I personally recommend going with one of GoDaddy's shared hosting services, as they come at a low price point, and their user interface is very friendly and welcoming.
Make any website
Next up, and this is the hard one. Make your personal website. Just 3 pages, Home, About and Contact and that's it. Draw up a quick mockup or wireframe. Good project management skills to have as well. Because this whole process is about learning. Learning everything that goes into building a website. And that includes the business parts as well. But more on that down below.
Learn everything that goes into making a website
Pick your language, and stick with it. I chose .NET because that's what I was using at work and it just made sense. Create a new project, and you pretty much have a full running website at this point. Now delete everything there, and start from scratch. That step is important too.
Create everything yourself here. Later on when you're decent at the entire process, you can pick and choose what you want to reuse, but for now, we want to practice our CSS and design skills.
And I know so many programmers that think this looks amazing:
Button
But can't see that by just tweaking a few styles, and not exaggerating the design we actually can make it look much cleaner:
Button
spend quality time with your design
For me this is the fun part of the project. I get to to constantly tinker with the look and delete and remove and update. And those cool ideas that you had in your head start to appear slowly, and next thing you know you're the proud parent of a new website.
Share it with the world
Once you have your design worked out, it's time to push it live. Jumping around different tasks is important when getting acquainted with a full on stack. So find out how you want to deploy your project and head on over to your server and enjoy the next few hours as you configure DNS records, file permissions and edge case scenarios.
So at this point, you should be able to create a brand new site, do some basic design work and then deploy it to a remote server. And you should be able to do it again and again. Each time will be different of course, but the main points are there.
That was the easy part really, and the fun part. We didn't really do too much aside from learn how the entire process works together to make a website appear online. Now we can focus on the actual work. And luckily, if you still have your business website up and running, we can continue to use it.
Many sites have static content pages, with just an email that someone can reach you at. We can change that by adding a contact box where users can send you message directly.
We need data
And because we're trying to cover the full stack, let's add a database to our project. And this is really where a project takes off. Data storage is key for any and all sites nowadays. Lucky for us, we don't have any traffic yet, so we can just focus on creating a database and absorbing it into our site.
We'll create an admin later on, where we'll be able to read our messages. But for now, just having them stored somewhere is good enough.
Each and every programming language has their own way of using a database, so you'll have to research how that process will work with your framework. Again, because I'm a .NET developer and I'm sticking to the .NET Stack, I'm going to be using Sql Server as my DMBS and .NET has a plethora of ways that I can go about accessing that data. Pick your poison at this point. And that's a huge part of the benefit of being a full stack developer. That you can build something up using your entire knowledge base.
Assuming that your server isn't on fire yet and all has gone well, it's time to push that database live. This should be similar to when we deployed our website to our live environment.
Feel free to rejoice in your success by performing a query or two. So at this point, we should have essentially covered an entire stack of building up a website, from mockup to full design, to database implementation and deployment.
now do that for years and years
Now do that everyday for years and years. Kidding aside, that's essentially it. I get many people that tell me they wish they could be full stack developers so that they wouldn't have to rely on others for work. And I ask them why they don't just do it. It's a long road, it's a stressful one as you're constantly jumping around doing different things. But stress is good. It makes our bodies stronger in order to put up with those stresses later on.
And this is just the programming/design phase of being a real full stack developer. There's plenty more that you can add to your repertoire in order to make yourself more valuable.
There's plenty of work with Analytics, SEO, UI/UX, Graphic Design and the list goes on and on really. Just recently I've found myself working more on the UI/UX elements of my websites, and it's for sure a steep learning curve, but it's incremental knowledge that gets stronger and stronger the more you do it.
So if you're looking to become one with the tech gods, then I hope this quick outline can help you out on that path as you find your own technical stack in life.