Top 10 Technical Terms Every Software Engineer Should Know
Tags: webdev, programming
Published: 2022-02-07 10:58:52

Some days ago, I asked on my Twitter some technical terms that every software engineer should know, I received a couple of interesting answers.

![top10technicalterms-tweet.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1643560398566/t5H3O7BGI.png)

Let's dive in and see what these terms mean.

## 1. API

API stands for Application Programming Interface.

An API is a way to interact with external software or resource. 

An API is an abstraction between two components. These two components are an application and a web server on the other side. The API will serve to handle data transfer between the two components.

## 2. Compiler

A compiler is a program that turns a high-level language (such as Java) into a low-level language (machine code) that the computer can understand.

Please look at my recent [article](https://techwithmaddy.com/what-are-the-advantages-and-disadvantages-of-a-compiler#heading-what-is-a-compiler) to learn more about a compiler.

## 3. Cache

A cache is part of either hardware or software responsible for temporarily storing information. We use cache to improve performance, especially when there is the need for constant access to data.

## 4. Client-Server Architecture

A client is a piece of hardware (or software) that uses resources that a server makes available to use.

A server is a computer program that serves as a provider of information. It makes resources available to the client. 

A Client-server model is a computer architecture where the server delivers the client's resources.

## 5. Refactor

Refactor means changing the structure of a piece of code without affecting its behaviour and functionality.

I wrote an article time ago about [Code Refactoring](https://techwithmaddy.com/what-is-code-refactoring) and [Ten Rules to Refactor code](https://techwithmaddy.com/ten-rules-to-refactor-code) if you'd like to check them out.

## 6. HTTP

HTTP stands for HyperText Transfer Protocol.

It is a communication protocol (rules and procedures for computers to communicate).

HTTP is how we transfer information over the World Wide Web.

## 7. Unit Testing

Unit Testing is a type of software testing where software engineers test the smallest "uni" of a piece of software.

## 8. Framework / Library

I've put these two terms together, but they're not exactly the same.

A framework is a structure from which you can start creating software.

A library is a set of reusable code, and the software engineer decides when he needs to make use of a library.

## 9. Load Balancing

Load Balancing is a concept you'll often hear when talking about System Design.

It is a process used to spread the network traffic across several servers.

We use load balancers to address performance and availability issues, especially when we have to handle many requests from the users. 

## 10. CI / CD

CI stands for Continuous Integration.

CD stands for Continuous Delivery (or deployment).

Continuous Integration/Continuous Deployment is a set of rules, principles and procedures used to deliver applications to end-users by including more automation in the development process. 

## 🌟BONUS TERMS 🌟

**ENVIRONMENT**

When software engineers create software, they do that through different "scenarios" before the product reaches the end-users. Those scenarios are known as environments.

In software engineering, there are different environments:

- **Development environment**: you can run the code on your local machine with no harm. 

- **Staging environment**: this environment is a copy of the end application. Software engineers use this environment for testing purposes. Any change doesn't affect customers' data.

- **Production environment**: this is the end product that customers use. Any change can affect customers' data.

**HOTFIX**

A hotfix is a fix that software engineers do urgently when they need to repair some issues in the current release, and they can't wait 'til the next release.

**CONCLUSION **

I hope you've found this article helpful. What other technical terms would you add to the list? Let me know in the comments.

Until next time! 👋🏾

P.S: you can also find me on [LinkedIn](https://www.linkedin.com/in/maddalena-o-bb2372020/) or [Twitter](https://twitter.com/Maddy_Onyehara).

**ARTICLES THAT YOU MAY ENJOY READING**

- [What Are the Advantages and Disadvantages of a Compiler?](https://techwithmaddy.com/what-are-the-advantages-and-disadvantages-of-a-compiler) 

- [What Is A "Requirement” in Software Engineering?](https://techwithmaddy.com/what-is-a-requirement-in-software-engineering)