Top 10 Technical Terms Every Software Engineer Should Know

Top 10 Technical Terms Every Software Engineer Should Know


4 min read

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


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.

Related: What Are the Advantages and Disadvantages of a Compiler?

3. Cache

A cache is part of either hardware or software that temporarily stores information. We use cache to improve performance, especially when there is a 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.

Related: Client-Server Architecture Made Easy (With Examples)

5. Refactor

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

Related: What is "Code Refactoring"?

Related: Ten Rules to Refactor code


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.

Related: Java Interview Question: What Is HTTP?

7. Unit Testing

Unit Testing is 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 use 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 handling many user requests.

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 to deliver applications to end-users by including more automation in the development process.

Related: What Does "Continous Integration" Mean?



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


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.

Code Smells

A code smell is a sign of a problem with the code written. This problem may or may not be neglectable, depending on the coding standard set by the team.

Examples of code smells are:

  • Lazy classes: classes that do too little.

  • Long methods: methods that do too much.

In many cases, code smells can be fixed by refactoring code.

Feature Flag

A feature flag is a software engineering approach to turning on and off a specific functionality during runtime without the need to push new code.

Feature flags are helpful to deliver more functionalities to users faster.

For example, if software engineers want to expose a new feature, instead of releasing new code and making the functionality available to 100% of users, they can expose the feature to a smaller number of users.

Exposing the feature flag to a smaller number of users allows software engineering to understand how users will interact with the new functionality.

Key Takeaways

After reading this article, you will know some of the most used technical terms among software engineers. If this article is helpful to you, you can subscribe to my FREE weekly newsletter.

Until next time! ๐Ÿ‘‹๐Ÿพ

Additional resources:

Did you find this article valuable?

Support Maddy by becoming a sponsor. Any amount is appreciated!