<em>Update August 2017: I recently published a new video about Full Stack Development. Watch it here</em>
Companies Mentioned
Update August 2017: I recently published a new video about Full Stack Development. Watch it here
https://youtu.be/B0Vo2XFZZ-4
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 readhere, 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 like_MongoDB_ (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 _Laravel_because 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 an_application server_ like Apache Tomcat etc. I don’t use J2EE so I am not the right person to comment about it.
Front-end: This is the UI part which users of your applications can see and interact with. Basically there are three basic building blocks to this i.e HTML, CSS and JAVASCRIPT. So, as a full-stack developer you are required to know how to design/fix/troubleshoot simple webpages and make them interactive using JS. To build web enabled front-ends, it would be really helpful if you know some front-end frameworks like jQuery, Polymer,Twitter Bootstrap, Foundation, React or Angular to quickly spin up new web apps. I personally use React, Foundation or Polymer to quickly build UIs for my applications. When I started, I learnt HTML, CSS/CSS3 and JavaScript from individual books, each dedicated to the specific subjects to get the strong hold of these three founding fathers of web development. I don’t have to scratch my head today to fix minor issues with the UIs.NOTE: There are many full stack developers who know at-least one major mobile platform like Android or iOS. If you want to be one of those, you additionally need to learn Swift for building iOS mobile clients or XML/Java for Android clients. I am one of them, an Android developer to be specific.
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.
Cookies/Sessions/Authentication: You must be aware of how authentication works in real world and what methods are prevalent in the industry, to protect data. You should also have a hands-on experience of building a service where users have to log in. I am not saying that you should code/build an authentication system on your own (it’s best not to code you own, in-fact) but you should have a knowledge of setting it up in your tech stack, be it Java/J2EE or Django or Laravel or Javascript.
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 vanilla_JS_ or using the in-built libraries of the framework of your choice.
Vagrant etc: There are these new things called _pre-configured development environments_which 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.