The placement season is near, and lot of ‘coding’ companies are recruiting. Here is a primer on the different profiles the companies offer.
First of all, let us make it clear that coding merely means writing lines in a particular ‘language’ which follow a structure and are meant to be executed. CSE(Computer Science and Engineering) Jobs, are those in which the core of problem solving involves basic CS principles. It is also different from a job like CFD(Computational Fluid Dynamics) Engineer, where even though the person would write significant amounts of code, the principles are derived from a different field.
Roles and Details
Most profiles tend to use the word “Developer” and “Engineer” interchangeably, and we would be using only Developer going forward except when there is a difference.
This is more of a general term than most of which would follow. A software developer is someone who works on a Software, or a Service and contributes code to it. This may involve adding new features, fixing bugs, or making the software work better. Many of the profiles given below can effectively be classified under Software Engineering, and are merely specializations. If this is the profile that has been mentioned, then it is better to talk to the company to figure out what the exact nature of the job would be.
A web developer is a specialization of the above said Software Developer where the difference is that he would be working on Web Applications. This is often confused with Web Designers, who deal more with the look and feel of the webpage. A webpage is in general merely a HTML page with information, while a web application is a software that a user interacts with over the internet. This involves a lot of challenges of its own like reducing response times, load balancing etc. that may not be present in other areas. But also involves certain benefits like no need to consider installation platforms etc.
Not so long ago, most operations of web application happened on the servers, and the browser was used just to show the results. Often the only people who worked on the front end were designers and a handful of front end engineers whose job was not that challenging. However this has currently changed a lot, as people have started writing full applications that reside on the browser and treat the server like a datastore, interacting with it just to get data. This has given rise to mainly 3 profiles:
1. Backend Developer – The amount of job of a backend developer varies a lot, in many older applications, he was responsible for a lot of what the user finally viewed. However in modern times, a backend engineer works on serving data in particular formats to the frontend, and the rest is taken care of by the frontend code. Backend engineers have to write code, that computes the data as fast as possible and returns the data. The challenges lie in writing performant code, that can scale and handle a lot of users. The developer would also have to write code that processes the data in the back end, for later use.
3. In many web applications, and in most web applications that have only a few developers, the web application is divided into modules. A particular engineer might handle both the backend of that particular module, and are generally called web developers. Sometimes, they are also called full stack developers, although that is a much vertically integrated job.
A computer system in this context is merely a combination of the hardware and software for a specific application. For a installed software, like a browser, this would entirely lie within your computer. But for most large applications, this would be spread across multiple servers : Webservers that serve the web application, database servers that store the data, storage servers to handle the storage of content, networking to connect all these together, and other specialized services like caching services, logging services, analytics services etc. A systems engineer would be responsible for architecting the whole structure. They would be responsible for the block level architecture of a computer service. As can be inferred from the description, this is a higher level job, and rather than coding involves more of architecting components such that they work together.
SysOps or Systems Operation Engineer is someone who manages and monitors the system the software is running on. He makes sure that all the various parts that we covered above in systems engineering work as expected, and in general write code for the monitoring and maintenance of these systems. In general, he would be in charge of the operations of all the servers that the services run on, and the interconnects between them.
Applications developer is a software developer who would in general be working on a user facing application, rather than things like database, and infrastructure. If it is in the web area, where most of the current work is in, it is same as that of a Web developer. The other important area for applications developer is developing Mobile Applications, which I would be explaining below. The third part of applications developer is writing software for desktop computers. Microsoft would be the leading recruiter in this area.
Mobile Applications Developer
The major difference in this profile from an applications developer lies in the fact that the way people interact with mobile applications is very different from desktop software. A mobile application is often close to a web application from the perspective of a user. Hence this introduces challenges that both a Web Developer and a normal applications developer has to face, with other considerations like writing battery efficient code, and the limited screen area they have. The developers in this field have to exclusively work on Obective-C/Swift for iOS development, Java for Android development, or .NET platform for Windows Mobile development.
Research Developer & Research Scientist
A research engineer is generally an engineer in the research team, that would finally be responsible for implementing and testing out the research findings. They would work closely with the research scientist to either test the research work for practical considerations, or to implement a simple software, that would then be taken forward to the software team. They form a connect between the research teams and the software/hardware teams, and they generally do not conduct research but understand and implement it.
A research scientist on the other hand would be researching in the areas the company is involved in, and in general this profile is reserved for Doctorates, and only in rare cases opens for Bachelors and Masters. However most research firms offer a form of gateway researcher position, where the person would be in a research team, with the expectation that once he gets a feel of it, would later go for a PhD.
There is not much to tell about the exact work a researcher would be doing, since it varies a lot, however currently a significant percentage of the research recruitment is in area of Data Mining and Machine Learning.
If you have any questions, feel free to discuss in the comments section. Vox Populi wishes Good Luck to people sitting for placements!
This article has been written by Abhimanyu Mongandh Ambalath.