“John, Can you deploy Branch 675 on UAT environment”.
If John was a fresher then he would understand nothing in the above instruction given to him by senior.
When we join any industry as a fresher then the most common problem we face is that we are not aware of the common terminologies/jargon used for conversation among colleagues.
In colleges we study about Algorithms, Languages, Database etc but we are never told about these common terminologies used in IT industry such as Branch, Trunk, Code Merge, Deployment, Ping etc.
Due to this a fresher like John might feel a little left behind and confused in learning new things. Freshers will eventually get habitual to these terms in few weeks, but it may hinder their learning.
So I have compiled a list of common terms used in IT industry that can be referenced by fresher and experienced person alike :
- Code Base
- Version Control System
- Local code
- Commit code
- Live Code and Live Environment
- Code Review
- Code Merge
- Live Deployment
To communicate between teammates some sort of messaging system is used such as Skype. So ‘ping’ simply means to send a message over the messaging system.
The entire code of the project you are working upon is knows as Code base.
The projects handled by IT industries are large and complex. These projects contain a number of different functionalities. So if a team of 100 is working on 2 features that are required by client then working on the same code may create chaos. So 2 different codes are maintained, these 2 different code bases are called branches. By this the teammates working on feature 1 can make changes to branch 1 and teammates working on feature 2 can make changes to branch 2. These 2 branches will initially have same code but as the changes are made by teammates the code will differ. Later when the entire application or software is to be given to client then these 2 branches are combined into one branch.
In the above example we created 2 branches for 2 features, similarly code can be separated for testing and development work. On testing branch tester will keep on testing new features and on development branch new features are developed.
The branches created, need to be kept/maintained at some place. This place is called Version control system.
Let us take an example : BranchA and BranchB are created to work on 2 features of application. Out of 100 team members 50 are working on BranchA and 50 on BranchB. Now we only consider BranchA in our example. Each person has his own system/PC where he/she makes the changes to code. But these changes need to be seen by other teammates of BranchA too, so that they can make changes accordingly. So BranchA is kept at a common place called Version Control System, by this teammate can put/commit his changes to that common place and other teammates can take those changes to their own system. Example:- Tortoise SVN is a version control system.
Local code is nothing but the code present on your personal system. For instance if you are working on BranchA then first you will make changes to the code on your own system(local system), then the test changes by running application on your own system(local system) and then put/commit the code to some Version Control System, so that others can take those changes too. So code present on version control system is branch code and code present in your local system is local code.
When you put code from your local system to a branch in version control system then it is called commit of code.
If you are working on a web application then you have to upload/put your application on some server such as Tomcat, Weblogic. The process of uploading/putting your application on the server is called Deployment. Actually the branches created are deployed to server from the version control system.
The server on which the code is deployed is called environment. When you work on large software then you will see that they do not have a single server/environment, they work on multiple environments. Why so?? This is because each branch created for different features, testing etc need to be deployed somewhere. These branches cannot be deployed on same server/environment so different environments are created. So, if environment is created for testing then it will contain testing branch code or if there are 3 other environments created just for development then those environments can be used for deployment of other branches handling different features.
When you hear the word ‘Live’ in your project you should become alert immediately. Live code is the code on which the client is actually working and Live environment is the environment where the live code is deployed. You should work very carefully in Live environment or code since client might be using the application as you make changes and if anything goes wrong then it may have serious implications. Live code/environment can also be called Production code/environment or Client code/environment.
After you make some changes to the code on your local system then before committing the code to some branch the code should be reviewed by your senior. In code review the senior will see if the logic applied is correct and all the standard coding practices are followed. Then senior will give you some feedback and ask you to make improvements to code if required before committing.
Merging of code is combining the code present in different branches into a single branch, so that all the functionalities of code can be present in single branch. For instance if a team is working separately on 2 branches for implementing 2 different features, then after they have completed coding the features we need to merge the code in 2 branches into single branch to see both features running simultaneously in single code.
After coding of all the features is complete then we need to give the application to client. This process of deploying final branch to Live environment is called Live Deployment. Live Deployment is a crucial stage in software development for a company since all the bugs and errors in code has to be resolved before deployment and perfect code needs to be provided to client. Companies generally have to book a time slot with client for live deployment, since during deployment servers may be down and client will not be able to access application, so client’s permission is needed before Live deployment.