Quick guide to become a job ready programmer
You have a high chance of getting a job if you are a full stack developer. A full stack developer is expected to be fit in the roles of client side programmer as well as server side. Therefore a fullstack developer is always in demand. With expanded skill sets, a person can make himself fit in any of the openings. This article focuses on typical learning path to become a full stack programmer. No doubt it happens over the time with real time experience and practices, but with appropriate road map and approach, you can be a saleable programmer in no time. A full stack is someone who is master of frontend and backend both. Becoming a full stack developer requires expertise in front end technologies as well as backend programming.
After getting expertise in frontend and backend, it is essential to have expertise in frameworks because real world application development requires adoption of frameworks to build an efficient application.
A framework is a collection of pre-written codes (usually related to configurations and common operations), which we can use in our code and thus we can get rid of lots of boilerplate code and configuration stuff. A framework increases the readability and maintainability of our code. There are lots of frameworks available for frontend as well as backend development.
The world is changing at fast pace and so are the technologies. Every other day a new technology gets introduced and the older one gets obsolete. Keeping this in mind, we have to be adaptable with the changing trends.
This article focuses on typical learning path for beginners:
Below are the bare minimum action items which are forming the building blocks of becoming a web development programmer. Give a deadline of 90 days to yourself and accomplish these with great dedication.
1. First understand the basic client server and distributed architecture
2. Understand Monolithic V/s Microservices architecture
3. Understand Software Development Life Cycle
4. Learn frontend technologies
5. Learn frontend framework
6. Learn any programming language for backend development
7. Learn anyone of backend framework
8. Learn RDBMS and SQL/PLSQL
9. Learn ORM Framework
10. Learn version control
11. Understand DevOps
Additionally, go for certification. A certified developer always has an upper edge over a non certified developer, especially if you are just about to start your career Or if you want to get into a domain which you haven't worked upon.
1. Understand the client server and distributed architecture:
Give yourself a day or two to understand the concept of client server and distributed architecture. There are tons of online materials available to go through. Typical client server architecture consists of a client and a server. A client is an interface between real user and the server. A web browser is one of a client in web terminology. A user with the help of web browser interface, makes an HTTP request to the server. The server on the other hand, receives the request, executes the business logic, and forms and serves the response back to the client. Client receives the response, and renders it to the user. Here the client is the browser, anything which is visible to the user through a web interface called browser is frontend, while the operations happening over server forms the backend.
Anything which gets executed/computed over the server forms the backend of our application. For e.g. anything queried, added, edited, deleted in database. A server is a central machine which stores pages (HTML files), business logic, and database. To request anything from the server or make any changes to the data, we need to learn anyone of the server side programming language like- J2EE, PHP, NodeJS, Python. PHP being the old one, python, and nodeJS are in the current trend.
2. Understand Monolithic V/s Microservices architecture:
Understand the concept of monolithic and micro services architecture after you gained clarity on client server architecture. Monolithic architecture is a large standalone application with single presentation, service, data, and persistance layers. It has a single database and every component of the application is tightly coupled. Since monolithic applications are tightly coupled, break down of any one of the component may result in breaking down of entire application, thus halting the entire business.
In Micro services architecture, unlike monolithic architecture, the application is divided into smaller independent applications and each one communicates with one another. Each smaller application has its own database making them loosely coupled. The collection of smaller independent applications forms the bigger one. If anyone of the micro service malfunctioned, the entire project does not comes to a halt. The business keeps running except for the affected component.
3. Understand Software Development Life Cycle (SDLC)
This is again a theoretical part but very essential before you commence your journey towards actual coding. Give this a day and understand every bit of it. SDLC is an essential aspect for entire software development activities. SDLC is the building block for any software development project. It consists of different phases and each phase has its own activities, principles, processes, and user roles defined. Adoption of appropriate development methodology is very crucial for successful project delivery and closure.
4. Learn frontend technologies
Now, this is where your actual coding phase starts. From this phase onwards, you have to put significant efforts towards your journey of becoming a programmer. Once having an understanding of the client server and distributed architecture, start with front end technologies. HTML, CSS, and Javascript are the basic building blocks of developing a frontend. The front end technologies are the ones which execute on the web browser which is our client.
Block 30 days of your calendar and start learning and practicing HTML, CSS, and Javascript. Keep practicing until you end up developing a handsome web page which is dynamic enough. Later you can move towards frontend framework part: choose anyone from - Angular, Bootstrap, react js,.
HTML: hyper text markup language forms the skeleton structure of our web page. It forms the place holder for various contents like, images, words, paragraphs, in the form of divisions, sections, spans, header, footer and so on.
CSS: Cascading style sheet is for organizing the elements and tags of our html structure. It forms the layout of the html elements for e.g. alignment, coloring, font size, appearance, positioning, sizing, defining the font types, of elements and many more. There are two types of CSS, one is the internal one which can be embedded into the html page using the style tag, other one is the external which is a separate css file referred to and included by the html page.
Java script: For Dynamic web pages. It displays the page as per the user input. This can also be embedded in the html page or can also be included in the html page if the JS file is separate.
5. Learn frontend framework
Now that you have learned HTML, CSS, and Javascript, you have accomplished the prerequisites for learning frontend framework. Gaining expertise in frontend framework like Angular will alone makes you a sellable and job-ready frontend developer. Again you have to give a next set of dedicated 30 days to understand, learn, and practice the angular framework.
Angular: is a framework for front end development. We can write plain vanilla javascript code and develop our application but as the application complexity increases, it is hard to maintain the large chunk of javascript code. Moreover the application developed using plain vanilla javascript is hard to test. Angular gives our application a clean and loosely coupled structure that is easy to understand and easy to maintain. Apart from this it also gives us lots of utility code which we can reuse in a lot of applications specifically related to navigation and maintaining browser history. The area where angular excels is its ability to create single page applications (SPA). In a single page application, there is only one page and the components and layout of that page keeps changing at runtime as per the user's actions unlike multi page applications where there are multiple pages and altogether a new page gets rendered from the server every time a user performs some action. It is based on MVC (Model, view, controller) design pattern.
Bootstrap: is also a frontend framework having collection of templates for various UI needs. Efficient UI elements cab be developed using bootstrap framework.
6. Learn any programming language:
Programming language is something which is usually written in human readable form and later converted or complied into a machine readable form which is binary and hexadecimal form. Expertise in anyone of the programming language is essential for any application development be it a web app, mobile app, desktop, AI or MI and so on. Popular programming languages are C#, Java, Python, PHP. Every programming language is extended to be executed over a server for e.g. with Java's J2EE (Enterprise Edition), you can create JSP and servlets to make it executable on server.
Server side programming involves ability to receive HTTP request from the client, executes the business logic, make connection with database, fetch, update, and add data to and from the database, generating a response and sending it back to the client.
NodeJS is a runtime environment which executes javascript code outside the browser.
Assuming you have some computer background, learning and getting expertise in any programming language may take up to 30 days, but depending upon your calibre and dedication, it may go beyond that.
7. Learn backend frameworks
A framework helps us in focusing on writing business logic and remove the overhead of managing and writing lots of configuration stuff. It also improves the code readability and maintainability by removing the redundant code. The generic tasks can be taken care of by framework while specific tasks can be focused upon by the user. Some web development frameworks are:
Struts: Struts is a framework for developing java based enterprise applications. It follows MVC (Model-view-controller) pattern for developing web applications. It was one of the widely used framework over a decade ago but with the advent of other frameworks, the usage of Struts became very limited.
Spring : Spring is a vast Java based framework for varied development needs. Spring is also called framework of frameworks. Spring provide various modules for various development needs. Spring MVC, Spring ORM, Spring JDBC, Spring AOP and so on. Spring's IoC and Dependency injection makes it a powerful tool to make an application loosely coupled.
Spring boot: It is built on top of Spring framework and helps build micro services.
Django: Django is a Python based web development framework. It is an open source framework with large community base.
8. Learn RDBMS and SQL/PLSQL
Ultimately any business logic has to deal with the persistent data. To deal with data, you need to write classes in which connection to the DB has to be made, then writing complex sql queries to fetch and update data in databse. So understanding of RDBMS and SQL is a must. RDBMS stands for relational database management system, it is a system in which data is stored in tabular form and organized with the help of rows and columns. This system enables us to perform add, retrieve, delete, and update operations over the data. Setting up an RDBMS system, creating a DB, tables and getting expertise in writing complex SQL queries pertaining to Joins (Left, Right, Inner, Outer) and writing stored procedures should not take more than 5 days and can go hand in hand during your programming language learning phase.
9. Learn ORM Framework
ORM stands for Object Relational Mapping. Hibernate is one of the ORM framework. As the name suggest, in an ORM, the object content is mapped with the table and stored in the DB. With the help of Hibernate, you can get rid of connection making, DB creation, and query writing operations. Hibernate takes care of these stuffs for you, the developer can only focus on coding of business logic. A DB consists of tables, and table consists of rows, and columns. Hibernate maps a particular object with table and its column, and store the object value in the DB.
10. Learn version control
Version control is a repository system to store, maintain and organize the source code for the application. In real world, there are multiple developers working on an application. At the end of the day, all the developers have to push their code to a repository. Version control is a tool in which the code from different developers can be merged and stored. This also gives us the capability to remove the code conflict, fetch the code, revert the code to a previous version and so on. One such version control system is GIT.
11. Learn DevOps concepts
DevOps is a collaboration practice among developers, operations team and testers. Adoption for appropriate DevOPs tool can ease the process of building, deployment, and testing. Usually there is a separate DevOps team in a large project which takes care of DevOps activities. So understanding of DevOps and CICD concept is enough rather than learning an entire DevOps tool like Jenkins, or Azure devops unless you want to excel as a DevOps engineer.