DEV Community

Mukul Bichkar
Mukul Bichkar

Posted on • Edited on

Common Acronyms Every Newbie in Software Engineering Should Know — Part 1

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.
    A most common example that all software developers use daily is the CLI a.k.a (also known as) the Command Line Interface or Powershell for Windows Ecosystem. Many languages that support REPL are Python, Node.js, JavaScript etc. to name a few.

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Top comments (8)

Collapse
 
inozex profile image
Tiago Marques • Edited

Single responsibility principle
a class should have only a single responsibility (i.e. changes to only one part of the software's specification should be able to affect the specification of the class).
Open/closed principle
"software entities … should be open for extension, but closed for modification."
Liskov substitution principle
"objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program." See also design by contract.
Interface segregation principle
"many client-specific interfaces are better than one general-purpose interface."
Dependency inversion principle

Collapse
 
alephthoughts profile image
Abhishek Sharma

DRY- Do not Repeat Yourself.

Collapse
 
mortoray profile image
edA‑qa mort‑ora‑y

I wonder if you could guess somebody's age from the acronyms they know.
:)

There's no reason to know what FTP means anymore. It's an outdated insecure standard. Things like ssh-fs and https have replaced it.

The CLOB/LOB stuff is also highly relational DB biased. Do non-relational DBs have similar terms? That is, I'm not sure these terms are helpful to a newbie as you can build modern systems and never encounter them.

WYSIWYG seems dated now in the world of adaptive and responsive designs. What you see is never what you get anymore. I refer to things as just editors, visual editors, or source editors.

Collapse
 
kinglouisxvii profile image
Daniel Jakobian

Very good summary! Thanks for that :) Minor correction: afaik CLI means Command Line Interface, not Interpreter.🤓

Collapse
 
somedood profile image
Basti Ortiz • Edited

Very, very, very useful article/reference. Thank you for this. I only knew more or less half of the terms here. Glad to learn something new today.

Collapse
 
yo profile image
Yoginth

KISS is my favorite one 🤣🤣

Collapse
 
inozex profile image
Tiago Marques

GRASP - General Responsibility Assignment Software Patterns

Collapse
 
krishnabidwai profile image
Krishna Bidwai

Nice blog Mukul.