Ever since I started programming and even today whenever I read the documentation I come across many acronyms or jargons which are pretty common in software engineering. Knowing the full-forms is not mandatory but knowing what it means and what it does is important. So, I have compiled a list of common acronyms that are commonly used and might help some others like me.
FTP — File Transfer Protocol
It’s a network protocol for transferring files between a client and a server on a network. FTP is built on a client-server model which uses two different connections namely control and data to communicate between the client and the server. The control channel is used only for controlling the communication whereas it’s the data channel that handles the actual file transfer. Using FTP, a client can upload, delete, update, download, rename, move or copy files on a server. FTP works in two different modes i.e. active and passive which determine how the connections are made. In active mode, the client establishes the control channel with the server whereas the data channel is established by the server. Whereas in the passive mode both the control and data connection is established by the client. So, the passive mode helps in scenarios when the client is guarded by a firewall and server cannot establish a connection with the client.
TCP/IP — Transmission Control Protocol/Internet Protocol
So, TCP/IP as the name suggests consists of 2 parts TCP and IP. IP is the address system of the internet and its sole responsibility is to deliver packets of information from source to destination. It cannot handle the error checking or ordering of this packets that’s where the TCP comes to rescue. It’s something like sending a puzzle in different pieces through the mail and the different pieces can travel different routes and arrive out of order. The IP ensures that the pieces arrive at the destination. It’s TCP who is responsible for assembling the pieces together and also communicates if any of the pieces are missing. TCP is the one who maintains a connection with the sender before the first piece is sent to after the last piece is sent.
WYSIWYG — What You See Is What You Get
WYSIWYG is an editor, program or a website that allows the user to see the end results or outcome while they are working on the code or document. A simple and most commonly used example of a WYSIWYG editor is Microsoft Word. Another example of WYSIWYG HTML editor is Adobe’s Dreamweaver.
REPL — Read Eval Print Loop
A simple, interactive computer programming environment that takes user inputs, evaluates them, and then print/returns the result to the users. The 3 steps in each iteration of the loop consist’s of:
Read: Reads the user input parses it and stores it into a data structure in memory.
Eval: Evaluate takes the data structure created in step 1 and evaluates the expression.
Print: Prints the result of the expression evaluation obtained in step 2 and throws it back for the user to see it.
API — Application Programming Interface
An application programming interface is a set of well-defined procedures that facilitate the communication between two systems, components etc. It specifies how the components should interact. API is like a restaurant menu card, which has a list of dishes along with a description of the dish. You order a dish and don’t worry about how the restaurant kitchen makes the dish, you are only concerned about the delicious food. And any developer uses multiple 3-party API’s in most of the modern day web or mobile apps. Some common examples are the Google Maps API, Youtube API or Facebook API for logging in users.
ORM — Object Relational Mapping
It is a technique of converting data between incompatible systems using object-oriented programming languages. ORM tools provide a framework for mapping an object-oriented domain model to a relational database. They provide a way to handle object-relational impedance mismatch problems. ORM reduce the lines of code and provide the advantage of caching which reduces the load on memory. Common ORM tools and frameworks are Hibernate, Entity Framework, SQLAlchemy etc.
LOB, CLOB and BLOB — Large OBject, Character Large OBject, Binary Large OBject
Large Object is a data type for storing large objects. Character Large OBject is a collection of character data in a database management system (DBMS). A CLOB is used to store Unicode character based-data, such as large documents in any character set. A Binary Large OBject is a collection of binary data stored as a single entity. BLOB’s are typically images, audio, or other multimedia objects.
ER diagram — Entity Relationship Diagram
Before understanding entity relationship it’s important to understand Entity. An entity is a definable thing like a person, object, concept or an event — that can have some data stored about it. They are nouns for example, a customer, car, student etc. Entity relationship diagrams illustrate how the entities relate to each other within a system. ER diagrams are generally used in database design.
KISS — Keep It Simple, Stupid
KISS principle is about keeping the code simple, clear and readable. Writing code that is easy to understand and decipherable to humans other than yourself. A basic example is to write methods that are small and not exceed more than 40 to 50 lines of code. Each method should have a single functionality and should not solve multiple use cases. An advantage of following KISS principle in code helps other developers who pick up your code and it saves a few hours in understanding the code and implementing the changes.
SDK — Software Development Kit
A Software Development Kit is a downloadable software package that contains tools needed to build on a platform. It is heavily customized for a platform and contains libraries, APIs, Integrated Development Environment (IDE), and other tools which aid in debugging, building, running and testing your application. In a real world let’s say you need wheat bread, you cannot go to farm plant, grow and harvest wheat and make bread. It’s too much time and not worth the effort. So in terms of Software engineering, this is where SDK comes in. The libraries in Bread SDK would contain pre-written function like plantWheat(), growWheat(), harvestWheat() and makeBread() that the developer can call to make the process easy.
Test driven development is thought of as a practice every developer should adhere to, yet many of us privately struggle to be productive using TDD. In this article we explore some of the reasons why TDD isn't always a great choice and can hinder your productivity