Dictionary

ADR (Architecture Decision Record)

An ADR is a document that records significant architectural decisions made during a software project. It captures the context, the decision itself, the reasoning behind it, and its consequences. This helps keep track of why certain technical choices were made, making it easier for future developers to understand the design decisions and avoid repeating past mistakes.

Agile

Agile is a methodology for managing software development projects that emphasizes flexibility, collaboration, and customer feedback. Instead of following a rigid plan, Agile teams work in short cycles called iterations or sprints, delivering small, functional pieces of the project incrementally. This approach allows teams to adapt to changes quickly and continuously improve the product based on real-world feedback.

AI (Artificial Intelligence)

AI refers to the development of computer systems that can perform tasks typically requiring human intelligence, such as recognizing speech, making decisions, and understanding natural language. These systems learn from data, adapting and improving over time without being explicitly programmed for every scenario. Common examples include virtual assistants like Siri or Alexa and recommendation algorithms used by streaming service

AJAX (Asynchronous JavaScript and XML)

AJAX is a technique used to create more dynamic and interactive web pages by allowing parts of a page to be updated without reloading the whole page. For example, when you scroll through your social media feed, new posts load as you scroll, thanks to AJAX. This makes web applications faster and more user-friendly by reducing the need to wait for full page reloads.

Alfa (Alpha)

The alpha phase is the initial stage of software testing, where the product is typically incomplete and tested internally by the development team. This phase focuses on identifying and fixing major bugs or flaws before it is released to a broader audience. It’s a crucial step to ensure that the core functionalities are stable and that the software is ready for more extensive testing.

Algorithm

An algorithm is a specific set of instructions or rules designed to solve a particular problem or perform a task. In programming, algorithms are used for tasks like sorting data, finding the shortest path in a map, or searching through a large database. Think of it like a recipe for a computer, guiding it step-by-step to achieve the desired result efficiently.

API (Application Programming Interface)

An API is a set of rules that lets different software applications communicate with each other. For example, when you use an app to book a flight, it may use an API to connect with the airline’s system and retrieve flight data. APIs make it possible to integrate different services and data sources, enabling the creation of complex, feature-rich applications.

Back-end

The back-end is the part of a software application that handles the business logic, database interactions, and server configuration. It’s where data is processed and stored, and it’s not visible to the user. For example, when you submit a form on a website, the back-end processes the information and saves it in a database, ensuring everything works behind the scenes.

Beta

The beta phase is the stage after alpha testing where the software is released to a limited audience outside of the development team. This version is more polished but may still have bugs that need to be identified and fixed. Feedback from beta testers is used to make final adjustments and improvements before the software’s official release.

Binary

Binary is a way of representing data using only two symbols: 0 and 1. All data on computers, from text to images to videos, is ultimately stored and processed in binary form. It’s like a language that the computer’s hardware understands, allowing it to execute the instructions written in higher-level programming languages.

Browser

A browser is a software application, like Chrome, Firefox, or Safari, used to access and display websites on the Internet. It interprets the code from web servers and shows it as text, images, and interactive elements. Browsers also manage cookies, history, and other settings to enhance your browsing experience.

Bug

A bug is an error or flaw in a software program that causes it to behave in unexpected ways, like crashing or producing incorrect results. Bugs can range from minor visual glitches to serious issues that prevent the software from functioning altogether. Developers use debugging tools to identify and fix these issues to improve the software’s reliability.

Clean code

Clean code refers to code that is easy to read, understand, and maintain due to its clear structure and good naming conventions. It avoids unnecessary complexity, making it easier for other developers to work with and modify. Writing clean code is essential for reducing bugs and technical debt, and for ensuring the codebase remains manageable as the project grows.

Client/Server

The client/server model is a way of organizing software into two parts: the client, which is the user’s device or application, and the server, which provides resources or services. For example, when you use a web browser (client) to visit a website, it requests data from a remote server, which sends back the content to be displayed. This model allows efficient sharing of resources and centralized data management.

Code

Code is the set of instructions written in a programming language that tells a computer what to do. It’s like a set of directions for a computer to perform specific tasks, such as displaying a website or processing user input. Without code, computers wouldn’t be able to run applications, perform calculations, or interact with other systems.

Coder

A coder is someone who writes code to create software programs, scripts, or websites. They may work with different programming languages and tools to build applications or automate tasks. Coders focus on translating logical instructions into a form that computers can understand and execute.

Code review / peer review

Code review is the process where developers review each other’s code to find mistakes, suggest improvements, and ensure it meets the project’s standards. It helps catch bugs early, improve code quality, and facilitate knowledge sharing among team members. This collaborative process is essential for maintaining high-quality, reliable software.

Commit

A commit is a saved change in a code repository, usually accompanied by a message describing what was changed and why. It acts as a snapshot of the code at a specific point in time, allowing developers to track modifications and revert to previous versions if needed. Commits are a fundamental part of version control, helping teams collaborate effectively.

Computer Science

Computer science is the study of algorithms, data structures, programming, and the theory of computing. It explores how computers work, how to solve problems efficiently, and how to build software systems. It’s a broad field that underpins all modern technology, from smartphones to the Internet to artificial intelligence.

Computer Scientist

A computer scientist studies and develops new ways to use technology to solve complex problems. They might work on anything from creating new algorithms and data structures to researching artificial intelligence or improving cybersecurity. Their work often involves theoretical and practical aspects of computing, pushing the boundaries of what’s possible with technology.

Continuous Deployment

Continuous Deployment (CD) is the practice of automatically releasing every code change that passes automated testing into production. This means that new features, updates, and bug fixes are deployed to users without manual intervention, as long as they meet predefined quality standards. Continuous Deployment accelerates the delivery process, ensuring that users receive updates frequently and without delay.

CI (Continuous Integration)

Continuous Integration is a technique for developers to cooperate on a software project, where they work in small increments merging changes done by all of them as often as possible (at least once a day).
Sometimes called: Trunk Based Development. Read more about Continuous Integration

Conway’s law

Conway’s law states that software systems tend to reflect the communication structure of the organizations that develop them. For example, if a company has separate teams for front-end and back-end development, their software might end up with a clear divide between the front-end and back-end components. Understanding this law can help teams design their processes to encourage better software architecture.

Data center

A data center is a facility that houses a large number of servers and other computer equipment used to store, process, and distribute data. It’s the backbone of many online services, including cloud storage, streaming, and web hosting. Data centers are designed for security, reliability, and scalability to handle vast amounts of information.

Data mining

Data mining is the process of analyzing large datasets to find patterns, trends, or relationships that can provide useful insights. Businesses use data mining to understand customer behavior, make predictions, and support decision-making. It involves techniques like clustering, classification, and regression to extract meaningful information from raw data.

DDD (Domain-Driven Design)

DDD is an approach to software development that focuses on creating a model of the business domain in which the software will operate. It emphasizes collaboration between technical and domain experts to build software that accurately reflects the business’s needs. This approach helps ensure that the software is aligned with business goals and is easier to maintain and extend.

Database

A database is a structured collection of data that is stored and managed electronically. It allows users and applications to efficiently store, retrieve, and manipulate data. Common types of databases include relational databases (like SQL) and NoSQL databases (like MongoDB), each serving different data storage needs.

Deploy

Deployment is the process of making software available for use, typically by moving it from a development environment to a production environment. This process can include copying files, setting up servers, and configuring settings. Deployment can be manual or automated and is a crucial step in delivering software to end users.

Design pattern

A design pattern is a reusable solution to a common problem in software design. It’s like a template for how to solve a particular issue in a way that has been proven effective. Examples include the Singleton, Observer, and Factory patterns, each providing a structured way to address specific design challenges.

DevOps

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops) to shorten the development lifecycle and deliver high-quality software continuously. It emphasizes automation, collaboration, and monitoring throughout the entire process, from coding to deployment and maintenance. The goal is to improve efficiency and reliability in delivering software products.

Front-end

The front-end is the part of a website or application that users interact with directly, including the layout, design, and interactive elements like buttons and forms. It is typically built using technologies like HTML, CSS, and JavaScript. Front-end developers focus on creating a smooth and intuitive user experience.

Fullstack

A fullstack developer works with both the front-end and back-end parts of a software application. They are capable of building the complete application, from the user interface to the server logic and database management. Fullstack developers have a broad skill set, allowing them to work on various parts of a project.

GUI (Graphical User Interface)

A GUI is a user interface that includes graphical elements like buttons, icons, and menus, making software easier to use. Unlike command-line interfaces, which require users to type commands, GUIs allow users to interact with software visually and intuitively. Common examples include the desktop environments of Windows or macOS.

Integration test

An integration test verifies that different modules or components of an application work together as expected. Unlike unit tests, which test individual pieces of code in isolation, integration tests check the interaction between multiple parts of the system. This ensures that combined functionalities operate correctly and smoothly.

Interface

An interface defines a contract or a set of rules that different software components must follow to interact with each other. It specifies the methods, properties, and behaviors that an object or class must implement. Interfaces help decouple code, making it easier to modify or extend without affecting other parts of the system.

Iteration

An iteration in software development is a short, repeatable cycle during which a set of features is designed, developed, and tested. In Agile methodologies, iterations usually last one to four weeks and result in a potentially shippable product increment. Iterations enable teams to deliver small, manageable updates and gather feedback continuously.

Lean

Lean is a methodology focused on maximizing value while minimizing waste. In software development, this means streamlining processes, reducing unnecessary work, and delivering only what the customer needs. Lean encourages continuous improvement and efficiency, ensuring that the development process remains focused and effective.

Log

A log is a record of events, messages, or errors generated by software applications, servers, or devices. Logs are essential for troubleshooting, performance monitoring, and security auditing. They provide insights into the behavior and state of a system, helping developers and administrators diagnose and fix issues.

Markdown

Markdown is a lightweight markup language used to format plain text into structured documents like websites, README files, or documentation. It uses simple syntax like # for headers and * for bullet points, making it easy to read and write without complex tags. Markdown is widely used for its simplicity and readability.

MMP (Minimum Marketable Product)

An MMP is a product version with just enough features to be marketed and sold to early adopters. It’s more polished than an MVP, focusing on delivering a compelling user experience. The goal is to release a viable product that meets core needs while allowing for feedback and future improvements.

Monitoring

Monitoring involves tracking the performance, uptime, and health of software applications, servers, or systems. It helps detect issues like slowdowns or failures before they affect users. Monitoring tools collect data and provide alerts, enabling teams to quickly respond and maintain smooth operation.

MVP (Minimum Viable Product)

An MVP is the simplest version of a product that includes only the core features necessary to solve a problem and validate an idea with real users. It’s used to gather feedback and test assumptions before investing in a fully-featured product. This approach helps minimize risks and ensure that further development aligns with user needs.

OOP (Object-Oriented Programming)

OOP is a programming paradigm based on the concept of “objects,” which can contain data and methods. It organizes code into reusable, modular pieces, making it easier to manage and scale. Common OOP principles include encapsulation, inheritance, and polymorphism, allowing developers to create flexible and maintainable software.

Pair programming

Pair programming is a software development technique where two programmers work together at one workstation. One, the “driver,” writes the code, while the other, the “observer” or “navigator,” reviews each line of code as it’s written, offering suggestions and catching potential issues. They frequently switch roles, promoting collaboration, knowledge sharing, and higher code quality.

Two colleagues in front of computers, writing a code together
Peer review

In programming, a peer review is the process where one or more developers examine another developer’s code to ensure it meets quality standards, adheres to coding guidelines, and is free of bugs or logical errors. This collaborative review helps improve code quality, knowledge sharing, and maintainability.

Pipeline

A pipeline is a series of automated steps that code goes through from development to production, including building, testing, and deployment. Pipelines help ensure that code is reliable and meets quality standards before being released. They are a key part of CI/CD practices, making software delivery faster and more consistent.

Plain Text

Plain text is unformatted text without any special styling, like bold or italic, and without any complex code or markup. It’s readable by humans and machines alike, making it ideal for storing simple information or configurations. Plain text is often used for documentation or as a format for data exchange.

Production

Production refers to the live environment where software is made available to end users. It’s the final stage of the development lifecycle, where the application is fully operational and serves real customers. Deploying to production means the software is ready for everyday use, so it must be stable and reliable.

Programmer

A programmer writes code to create software applications, scripts, or websites. They use programming languages like Python, JavaScript, or Java to implement features, solve problems, and automate tasks. Programmers focus on translating ideas and logic into instructions that a computer can execute.

Proxy

A proxy server acts as an intermediary between a user’s device and the Internet. It receives requests from the client, forwards them to the appropriate server, and then sends the server’s response back to the client. Proxies are used for various purposes, including improving security, caching content, and bypassing geo-restrictions.

Push

Push is the action of sending committed changes from a local code repository to a remote repository, like GitHub. This allows others to access the updated code and collaborate on the project. Pushing is a fundamental part of version control, enabling teams to share progress and work together efficiently.

Queueing

Queueing refers to the practice of managing tasks or data in a sequence, where each item is processed in the order it arrives. It’s commonly used in software systems to handle requests or messages, ensuring that they are processed in a controlled and orderly manner. Queueing helps balance workloads and prevents bottlenecks.

Refactoring

Refactoring is the process of restructuring existing code without changing its behavior to improve readability, maintainability, and performance. It involves cleaning up code, simplifying logic, and removing redundancies. Refactoring helps keep the codebase healthy and adaptable as the project evolves.

Release

A release is a version of a software product that is made available to users. It typically includes new features, bug fixes, and improvements over previous versions. The release process can involve several stages, including alpha, beta, and production, ensuring that the software is stable and meets quality standards.

Repository

A repository is a storage location for code, often managed by a version control system like Git. It contains all the files, history, and metadata needed for a project, allowing developers to collaborate and track changes. Repositories can be local (on a developer’s machine) or remote (on platforms like GitHub).

REST (Representational State Transfer)

REST is an architectural style for building web services that use HTTP methods to interact with resources. It’s designed to be simple, scalable, and stateless, making it ideal for APIs that interact with different systems. RESTful services use standard methods like GET, POST, PUT, and DELETE to perform operations on data

Router

A router is a networking device that forwards data packets between computer networks. It directs traffic on the Internet, ensuring that data sent from one device reaches its correct destination. In software, routers can also refer to components that manage navigation within web applications.

Scrum

Scrum is an Agile framework for managing complex projects, particularly in software development. It uses roles, events, and artifacts to organize work into short, time-boxed iterations called sprints. Scrum encourages collaboration, adaptability, and regular reflection to continuously improve the development process.

Search engine

A search engine is a software system that indexes and retrieves information from the Internet based on user queries. It helps users find relevant websites, documents, and other content quickly. Popular search engines like Google and Bing use algorithms to rank results based on relevance, quality, and other factors.

SEO (Search Engine Optimization)

SEO is the practice of optimizing websites to improve their visibility and ranking on search engines. It involves techniques like using relevant keywords, creating high-quality content, and improving website performance. The goal is to attract more organic (non-paid) traffic to the website by appearing higher in search results.

Server

A server is a computer or software that provides services, data, or resources to other computers, known as clients, over a network. Servers can host websites, manage databases, or store files. They are a critical part of the Internet’s infrastructure, enabling online services to function.

Server room

A server room is a dedicated space that houses multiple servers and networking equipment used to support an organization’s IT infrastructure. It is designed for optimal cooling, security, and power management to ensure that servers run efficiently. Server rooms are essential for organizations that need to manage and store large amounts of data.

Serverless

Serverless refers to a cloud computing model where the cloud provider manages the infrastructure, allowing developers to focus solely on writing code. Instead of managing servers, developers deploy functions that automatically scale and execute in response to events. This model simplifies deployment and reduces operational overhead.

SOAP (Simple Object Access Protocol)

SOAP is a protocol for exchanging structured information in web services. It uses XML to encode messages and can operate over various protocols like HTTP and SMTP. SOAP is known for its robustness and extensibility, making it suitable for complex and secure service interactions, but it’s often considered more cumbersome than REST.

Software Developer

A software developer designs, builds, and maintains software applications. They work with programming languages, frameworks, and tools to implement features and solve problems. Developers focus on creating functional, reliable, and user-friendly software based on project requirements.

Software Engineer

A software engineer applies engineering principles to software development, focusing on designing, developing, testing, and maintaining complex software systems. They consider scalability, performance, and reliability, often working on large projects with multiple components. Engineers typically have a deeper understanding of system architecture and software lifecycle management.

Source Code

Source code is the human-readable set of instructions written in a programming language that forms the foundation of a software program. It is the original code that developers write and modify before it is compiled into binary code that computers can execute. Source code is essential for understanding, maintaining, and updating software.

SPA (Single Page Application)

A SPA is a web application that loads a single HTML page and dynamically updates content as the user interacts with the app, without reloading the entire page. This makes SPAs fast and responsive, providing a smoother user experience. Popular examples include Gmail and Google Maps.

SPI (Service Provider Interface)

SPI is a set of guidelines or interfaces that a service provider must implement to integrate with a service. It allows different service providers to offer implementations for a service that can be swapped or extended without changing the core code. SPIs are often used in plugin architectures to enhance software modularity.

Sprint

A sprint is a time-boxed period, typically lasting one to four weeks, during which a Scrum team works to complete a set of predefined tasks. Each sprint begins with planning and ends with a review and retrospective. The goal is to deliver a potentially shippable product increment at the end of each sprint.

SQL (Structured Query Language)

SQL is a standardized language used to manage and manipulate relational databases. It allows users to perform tasks like querying data, updating records, and creating database structures. SQL is essential for working with databases, enabling efficient storage and retrieval of information.

Staging

The staging environment is a pre-production environment used to test software before it goes live. It is set up to closely mimic the production environment, allowing teams to catch bugs, validate features, and ensure everything works as expected. Staging provides a final checkpoint to verify the software’s stability.

System test

System testing evaluates the complete and integrated software system to ensure it meets the specified requirements. It tests the system as a whole, including interactions between different components. System testing helps verify that the software functions correctly in a real-world scenario.

TDD (Test-Driven Development)

TDD is a software development approach where tests are written before the code itself. Developers first create a test case that defines a desired function, then write the minimal code needed to pass the test, and finally refactor the code to meet quality standards. This cycle helps ensure that code meets requirements and is less prone to bugs.

Technological Stack

A technology stack, or tech stack, is the combination of programming languages, frameworks, libraries, and tools used to build a software application. For example, the MERN stack includes MongoDB, Express, React, and Node.js. Choosing the right tech stack is crucial for a project’s success, affecting its scalability, performance, and maintainability.

Tester

A tester is responsible for evaluating software to find and report bugs, ensuring it meets quality standards before release. They perform various types of testing, such as unit, integration, and system tests. Testers play a crucial role in the software development lifecycle, helping to deliver reliable and user-friendly products.

Testing

Testing is the process of evaluating software to ensure it works as expected and is free of bugs. It involves different methods, such as unit testing, integration testing, and acceptance testing, to check various aspects of the application. Testing helps improve software quality and user satisfaction by identifying and resolving issues early.

Testing pyramid

The testing pyramid is a model that describes different levels of software testing, with the largest focus on unit tests at the bottom, followed by integration tests, and a smaller number of system or UI tests at the top. The pyramid emphasizes automating lower-level tests, which are faster and easier to maintain, while relying less on more complex, manual tests.

UAT (User Acceptance Testing)

UAT is the final phase of testing where real users validate that the software meets their needs and requirements. It’s performed in a production-like environment, focusing on real-world scenarios. UAT ensures that the product is ready for release and that it works as intended for end users.

UML (Unified Modeling Language)

UML is a standardized visual language used to represent the design and structure of software systems. It includes diagrams like class diagrams, sequence diagrams, and use case diagrams to model various aspects of the system. UML helps developers and stakeholders communicate ideas clearly and understand complex architectures.

Unit test

A unit test is a type of software testing that checks individual components or functions of an application to ensure they work correctly in isolation. It helps identify bugs early in the development process, making it easier to fix issues before they affect other parts of the system. Unit tests are fast, automated, and form the foundation of reliable software.

Version

A version represents a specific state or release of software, often indicated by a version number like 1.0 or 2.1.3. Versions help track changes, improvements, and bug fixes over time, allowing developers and users to identify and use different stages of the software’s evolution. Proper versioning is crucial for managing updates and compatibility.

Version Control / Git

Version control is a system that tracks changes to code and allows multiple developers to collaborate on a project. Git is a popular version control tool that enables developers to create branches, merge changes, and maintain a history of the project’s evolution. It helps manage different versions of the code, making it easier to track changes and collaborate effectively.

Webservice

A web service is a software function that allows applications to communicate with each other over the Internet. It enables different systems, often running on different platforms, to share data and services. Web services can be built using various protocols, including REST and SOAP, and are essential for integrating diverse applications.

Websocket

WebSocket is a protocol that enables two-way, real-time communication between a client (like a web browser) and a server. Unlike traditional HTTP, which requires a new connection for each request, WebSocket keeps a persistent connection open, allowing data to be sent and received instantly. It’s commonly used for applications requiring live updates, like chat apps or stock tickers.

World Wide Web

The World Wide Web (WWW) is a system of interconnected documents and resources linked by hyperlinks and accessed through the Internet using web browsers. It includes websites, web pages, and online content accessible via URLs. The WWW revolutionized how information is shared and accessed, making it a fundamental part of modern life.

QA (Quality Assurance)

QA is a process that ensures software meets quality standards and works as expected. It involves activities like testing, code review, and process improvement to prevent defects and ensure the product is reliable and user-friendly. QA helps maintain high-quality software through systematic evaluation and feedback.