IT industry, home of thousands of jolites…future home of thousands more. Each year hundreds of engineering graduates like us find their place in this immense world of opportunities. Like hundreds of seniors of ours, now I share a tiny place in the middle of this ocean of information.
As I write this article, I feel lucky enough to gain some knowledge in this field to put together and pen down some of the topics that I observed and can be helpful to my fellows who are taking the penultimate step before joining the industry.
Over the years I had a question in my mind, that why do these companies recruit from all the departments. So what advantage the people form IT backgrounds have over the others. If there is, how can we take ourselves a step ahead of others by applying the skills we develop during our curriculum? On the other hand if I am not from IT or CSE departments, how do I prepare myself to be ready for my upcoming carrier?
Now for the answer I came up with- on basis of my experiences, on an average, students who have IT or CSE as their majors do have a head start in reality. Although the companies considers all the freshers to be at the same level before the start of their training program, but when you are asked to learn some of the concepts of computer science that takes semesters to master in 10-12 week of time, the idea we have earlier matters quite a lot. As the projects we are going to work on are very loosely related to our studies, there is a lot to learn at the training periods.
Here I pen down some of the concepts that are nice to have before joining the industry, so that we can take it easy when we are asked to learn this in a short span of time. Why should we bang our heads on the monitors when we have the opportunity to start earlier and stretch our ideas further when others hit the panic button! So why don’t we start learning some of the topics that are going to hammered into our heads in a few months from now, and make our lives a bit easier then?
First, let’s talk about the projects most of our recruiters take. They are of two types on a high level- development and maintenance-support based projects. Now, most of us consider the support and maintenance or ad-hoc(enhancement) projects as ‘not so good’ kind. But in reality they are one of the most vital sources of our incomes. Let’s consider a bank that currently has all the required functionalities for working smoothly. After a year, due to new requirement of the customers, they need to introduce a new functionality. So, what are they supposed to do….do they plan to change the entire system or try to fit in a new functionality to the existing system? That’s where the enhancements project comes in. Similarly support and maintenance projects are also equally important. Consider, after running a system for a month the bank comes up with a fault in the application. They are not supposed to change the entire system to fix this issue. So we have support and maintenance teams to back them up whenever required. One of the main goals is to upgrade the systems regularly to provide advanced performance, mobility, stronger security and ease of access. That’s why apart from development these projects are so vital in reality.
Now, taking it to the main idea- whether we like it or not, programming will be a large part of our lives for quite a long time. If it has been some time since we tried out our coding skills, I think it’s time when we should start brushing up our programming abilities. But this time it’s better to go through some topics which we avoided earlier, like- file processing, preprocessors, details of pointers etc. I had to revise these again in my trainings when I found that they are not that complicated as it seemed few years ago. And for those who are not familiar with object oriented programming, I would suggest learning some basic concepts from friends. Since we learn to write codes in no time, but understanding the theory behind takes some time, I would recommend spending some time on it as it is the basic of applications we build on real life.
The interesting part here is using the database. Most of us worked on it more or less. Since our work mainly moves on the data available on the data store, it makes the databases extremely sensitive part of the applications. Mostly the ideas we get from our B.Tech course about the databases, are sufficient to start, it would be better to have some ideas about transactions, exception handling and stored procedures on the database level. Specially stored procedures as in most of the applications, database queries are replaced by stored procedures to have added security and better performance. Stored procs execute faster as they stay on a precompiled state and they are one easy way to get rid of sql injections. Remember those spooky lines from ethical hacking workshops:
1’=’1’ or ‘1
These stored procedures help us to secure our database from such unauthorized access to say the least.
As we see, these days standalone applications are quite less in number. Most of the applications use the in web one way or other. So to build an application that uses the web or an app that is hosted over the web, the understanding of web architecture is important. To brief things we can say anything that uses the internet, follows some standards set by W3C, such as protocols, data formats etc. Let’s consider our own web application-‘Elementary’. When we write down the web address on our browser and hit enter, the browser creates a collection of data called ‘request’ according to the standards set by w3c. Now, this request reaches a computer (which is decided by the address we write on the browser) on the other end through the ISPs. The computer on the other end, whom we lovingly call a ‘server’, on receiving the request, decodes it and processes the data using a program that is running (technically termed ‘deployed’) on that server. By processing the data the server comes to know what to do with it, say to send you to the next level, keep you at same place, logging you out or whatever. Accordingly it creates another data collection called ‘response’, which is translated to a html page (usually) and sent back to our machine to let our browser create a graphical representation and show us the result. This is on a very high level what goes on the background while we wait and curse the connection for being late on response.
When we work on a webpage that is large in size, we might want to make change to a certain part of the page without involving the long process of hitting the server, rendering a whole page and loading it on the screen. Just like the ‘Like’ button in facebook. Just think about a day when each time you like a button, the page gets reloaded. Awful condition right? To get rid of similar condition, AJAX is used. What it does is, it creates a mini cycle of all those process involved in web architecture and makes modification to a small part of the page without disturbing any other part.
It helps us achieving this functionality. Cool??
Now what is this XML? Good question. It is the most common and standard way to represent data irrespective of its platform and domain (technology). Our machines and servers may have different operating systems, moreover the languages, technologies used to write the applications have their own way of representing data. To make communication between these machines unambiguous and conflict free, XML is the answer.
Say, I want to send my name, age and address to some server. How do I do it?
1. My Name, 25, West-Bengal, 735102.
2. Name: My name
Address: State: West-Bengal
Which one is better? Either I send it in a predefined format or I format my details in a way so that anyone can understand. XML helps us represent data in second format. When we transmit a long sequence of data, predefining the order might be complicated. So a typical XML for this would look like:
<Person> <Name>My Name</Name> <Age>25</Age> <Address> <State>WB</State> <Pin>735102</Pin> </Address> </Person>
This is the main idea of using XMl- to serialize and deserialize data according to our requirements.
Here I just mentioned some of the basic technologies on which having some idea would help us make our life a bit easier at the time of our training. Once you find it interesting, you can go through the following over the internet; there are numerous resources to learn from. Some of the concepts are:
1. MVC architecture
2. Service oriented architecture
3. Client- Server architecture
4. Object relation models
6. Responsive web designing
And those who are planning to appear on the recruitment drives by the popular product based companies, algorithms and problem solving might be your ideal pastime now. They are addicted to the performance of their product and our ability to solve complex problems, i.e. what we can bring in to their companies.
So what do you say guys?? Should we start some planning how to first rule the training room, then the work floor of our recruiters and hoist the Jolu flag higher??