A computer program is nothing but a set of instructions provided to the computer. Computer programming enables a professional or a coder to write a code which controls the performance of a computer, application or a software program. Computers and laptops can do amazing things.
Right from the very basic spreadsheets, document creation, calculators to the large analytics capabilities provided by complex supercomputers which perform weather analysis and financial transactions, great things are possible in today’s modern world. However, none of it could be achievable without the intervention of a computer programmer. A program could be as basic as addition of two numbers to as complex as adjusting the thermostat based of the readings from a temperature sensor.
Computer programs like the one written for Microsoft Word in year 1983, has been into existence and maintenance with additional enhancements being added by the developers since decades. However, the programmers need to use specialized languages to interact with the computers.
There are multiple categories of programming languages and their usability depends on the domain targeted by the programmer and also on the end objective or goal. Broad categories include the following,
Figure 1 Computer Programming Illustration
This background provides us an overall graph of how the computer programming has emerged over years. However, our specific focus here is on front-end and back-end programming languages, which we can say emerged from third generation onwards. Especially, the back-end programming languages emerged earlier to the front-end ones.
The front-end and back-end are two widely used buzzwords in software industry. In fact, they will still take your computer programming skills into mainstream and will help you focus on the core technology. Additionally, the choice will also necessarily decide how much you get paid as a software engineer.
The two terms go hand in hand to provide a user experience which is the most important factor today. As the name indicates, front-end is the one which is at front i.e. which the end-user or client experiences. While back-end is at the back, possibly abstract to the end-user/ client.
If we consider any web application, we have the following major components as shown in fig 2. The client/ end-user request for a particular web-page via front-end and receives the response via back-end.
Figure 2 Front-end v/s Back-end
Front-end Development: The front-end of the website is everything that is visible to the end-user. It is the complete look and feel of any web page. The things which are displayed on the browser when an end-user browses a website, is all about front-end for them.
Basically to summarize, front-end development is all about creating the visual and tangible parts of a web page. Today, with multiple hand-held devices and increased use of computers for every job role, it is all about user experience! Hence, front-end development is basically a combination of technical and creative skills. It is important to have an ability to imagine as well as to convert that imagination into reality.
With varying devices on which a web page could be accessed, it also becomes essential to create a dynamic and immersive experience for the user. The web page that is visible on a computer should automatically shrink to fit on a mobile screen, thereby called a Responsive Web Design (RWD). Front-end development began decades ago; however, it improved significantly over years with advancement in technology.
It boosts the overall interactivity, replies to user’s actions and dynamically refreshes the web page. It is also popular as it provides full stack of technologies for front-end as well as back-end development.
Spanning way ahead of these basic technologies, there are frameworks which support the front-end development and makes the developers life easier.
Frameworks provide a skeleton or a template to fit in the complete project. It becomes easier for a developer to embed the code in these pre-defined areas. To name a few popular frameworks, there is Angular.js powered by Google, Vue.js, Ember.js.
Figure 3 Front-end and Back-end Technologies
Back-end Development: As for front-end, it is about user experience, for back-end, it is about logic. The front-end developer’s dreams cannot be bought to real life applications unless it is backed up with some business logic or code at the back-end. This is where back-end development plays a major role. The role of a back-end developer is more technical and deals with fulfilling the requests from the front-end.
In this area, the developer deals with the databases, servers and the application programming interfaces (APIs). A single SEARCH button developed by the front-end developer needs tremendous amount of logic at the back-end to cater the actual result. In addition to the result, the time taken to implement that business logic and appropriate optimization of the time is also crucial for the same.
There are query languages like MySQL, PostGreSQL for querying and fetching results from the database. There are stacks like .NET, MEAN, LAMP etc. which provide a choice of programming languages too. There are multiple frameworks for back-end development like Express, Django, Spring etc.
A developer has to possess the knowledge of both, the front-end and back-end technologies. They cannot settle for one of these two. That being the reason; most of the jobs today are for ‘Full Stack Developer’, which includes knowledge of both. The full stack developer can render both – i.e. the client (front-end) as well as server (back-end) side.
It helps avoiding incompatibility between various systems. XML is being replaced by JSON these days for more efficiency and ease. Today, AJAX is becoming less popular since most of ready to use frameworks have AJAX already implemented in them. Another popular way of communication between front-end and back-end is REST (Representational State Transfer). It is also an architectural design which helps messaging between client and server using RESTful web services.