Update August 2017: I recently published a new video about Full Stack Development. Watch it here
Of-course, that’s impractical and not going to happen to you, unless you are reading this in a future where matrix style downloading of knowledge is a reality, but this article will at-least give you a brief idea about what you need to know, in order to become one.
So, I’ve written a detailed post about my journey to become a full-stack developer, on Quora. Following is the copy-paste version of my answer which you can read here, for my Medium friends.
I have been building web enabled applications for 5+ years now so I think I can answer your question. So you want to be a full-stack developer? Great! To become one you need to take care of these two things first:
This answer contains opinionated views and industry trends, so make clever choices before following any advice.
Back-end: This is the core layer of the any software stack where all the business logic resides. This is the hub. So in-order to build this hub, you would require a database, to persist the data, a programming language/framework to write logic with and a server which entertains users requests. Let’s consider options for all of the three things.
Database: I personally use MySQL to persist data but there are many other ones likeMongoDB (a NoSQL database) etc which you can use to persist the data. I have worked as an OracleDBA for 3 years but still I cannot use Oracle Database for my personal projects as it is nowhere cheap and using Oracle for simple apps is definitely an overkill.
Programming Language/Framework: You can use any programming language to write application logic but Java / PHP / Node / Python are in wide use across the industry. I use Laravel (which is a PHP based framework to write all of my applications’ backends). It is my personal favorite. (UPDATE 2017: I’ve transitioned into a JS/Node stack based developer). I’ve used Django( a Python based framework) in the past for two major projects. If you want to get a job in a corporate sector, I would recommend Java or Python for building backends. I use Laravelbecause you can literally find PHP on almost every server out there and I don’t have to look for cloud hosting options to host simple sites, in-case a need arises.
Server: This area is practically dominated by Apache2 web server. Though Nginx is catching up quickly. You can use either ones, to host your app/site, so basic administration commands are desirable from a full stack developer like how to start/stop/restart servers etc. In-case you are using Java, you would require anapplication server like Apache Tomcat etc. I don’t use J2EE so I am not the right person to comment about it.
This is an absolute minimum for building a full fledged web/mobile app on your own and with this knowledge, you can call yourself a beginner full-stack developer. Though there a few things you need to learn additionally, in-order to be a proper, industry-level full-stack developer. Some of those things, according to me, are as follows:
Caches: You must be aware of what Redis or Memcached are and how these can be used to solve latency problems. I don’t care if you’ve used any of these in the past or not. You just have to be aware that these kind of things exist.
Containers: Things like Docker have become industry standard for deploying code on the servers. So make sure to familiarise yourself with Docker and Kubernetes.
RESTful APIs: You should know the concepts of REST or SOAP and how to design REST/SOAP compatible APIs for your web or mobile clients.
Secure HTTP/SSL: As the world is moving towards increased security, it would be very helpful for your web services to be fully secure and for that you would require the knowledge of SSL. You at-least need to know, what it is and how it works. If you know how to set it up, it is an additional advantage.
Cronjobs/Shell scripting: As a full-stack developer you sometimes have to write maintenance scripts for database backup or server cleanup. I write mine in BASH but there other ones like KSH, CSH etc.
Git/Version control: It is equally important to protect the code you write. So you need to know how to keep the code in control using version control systems and how to make use of it in-case of any mishap.
Ajax: You must know how to make AJAX calls to the back-end using jQuery or vanillaJS or using the in-built libraries of the framework of your choice.
Vagrant etc: There are these new things called pre-configured development environmentswhich you can download and start using without installing anything extra plus these environments can be discarded at will. Personally, I don’t use it but many full-stack developers are actively using these systems.
If you know every single thing on this list. Congratulations, you are a full-stack developer.
If you liked this post, kindly recommend it to your network and follow me for more posts like this. You should also subscribe to my YouTube channel, if you like developing digital things.