Simple Glossary for Non Technies
Published: 2022-05-03 04:06:17

Today I realized that some people dont know much about things like "Server", "Frontend" and others.

I used them on call, and ... Person was not on the same page with me.

Let's collect cool definitions! And after that we'll be able to share it as one article


**Debugging ** – The process of detecting and removing **bugs **from a piece of software. Both developers and quality assurance teams engage in this practice regularly to ensure that code is working as intended. They employ methods like automated and manual tests, as well as unit tests. My personal favorite type of debugging is widely applied and very efficient, and it's also got a humorous name: **rubber duck debugging**.

Simply put, many developers keep a rubber duck on their desk—yes, an actual rubber duck. When they run across a problem in their code that they can't figure out, they start explaining their code out loud to the duck—who is, by the way, an excellent listener. This process is very effective and helps developers iron out any flaws in their logic or identify code that isn't doing what it's supposed to be doing. In the unlikely event that you don't have a proper rubber duck, you can ask your co-worker to serve as a substitute!

**Bug ** – An error or flaw in your code that causes unexpected behavior in the associated program. My favorite story is one that most computer scientists are familiar with. In the late 1940s at Harvard University, an error was detected in an early electromechanical computer, Mark II.

One of the operators of Grace Hopper's team found a real moth trapped inside the computer that happened to be causing the machine to malfunction. The moth was taped to a log book with a note that read, "First actual case of bug being found." To my knowledge, this is the earliest usage of the term "bug" in the context of computer science.

**Library ** – A pre-written collection of code that can be added by a software developer to a program to achieve some specific functionality or automate a process. Without libraries and linking, you'd have to repeatedly copy-paste source code into your project directory, or re-write the code yourself.

**Repository** – A data structure where all necessary files for a project or application are stored, as well as the history of all changes made to those files. Repositories make it easy for you to track all changes in your development in case you ever need or want to restore an older version of your code.

**Wireframe **– A prior version of a software that typically includes the design of the project on a structural level (structure of content, functionality, and user journeys).

**Prototype **– A simple working version of the software that typically is the next step in project design after wireframing.

**Front end** – A ‘client’ software that the users interact with. It’s a presentation layer, the way the software looks.

**Back end** – A ‘server’ software that the users do not interact with directly. It’s a data access layer, the way the software works.

**Normalization**
The practice of reducing redundancy in a relational database by separating conceptually distinct data (e.g. books, authors) into different relations (tables). There are several different levels of normalization.

**Algorithm**
An algorithm is a set of instructions or rules designed to solve a definite problem. The problem can be simple like adding two numbers or a complex one, such as converting a video file from one format to another.


**API**
Application Programming Interface (API) is a set of rules, routines, and protocols to build software applications. APIs help in communication with third party programs or services, which can be used to build different software. Companies such as Facebook and Twitter actively use APIs to help developers gain easier access to their services.

**HTTP**
Hypertext Transport (or Transfer) Protocol, the data transfer protocol used on the World Wide Web.

**HTTPS**
Basically the same as HTTP, but uses encryption methods to secure the data passed to and from webpages.

**Request/Response**
The way the frontend and backend communicate with each other is with requests and responses. A frontend script can request data from the backend, and a script in the backend can then send that data as a response.

**Cache**
The cache is where data can be temporarily stored on a browser or computer in order to save time loading the same data over and over again every time it is required.

**Command-line**
The command-line is an interface for typing commands directly to a computer's operating system. This is the most direct and fastest way to perform operations on a computer's operating system like launching a PHP server, creating directory, executing scripts, changing file permissions and much more...


**Release**
Usually, this refers to a new version of the application. It very often is, but does not necessarily need to be, customer centric. The moments before the release are always tense because everyone tries to finish as many tasks as possible without causing a catastrophe in the production environment. That's why some companies host "no-release Fridays" to make it less stressful for the team and avoid potential trainwrecks just before weekend.

**Deploy**
Putting the code to the server where it’ll work.

**Compiling**
The process of converting the source code (written on the programming language, understood by humans) into machine code (understood by machines).

**Architecture**
A set of solutions for organizing the software structure: choosing structural elements and interfaces, the correlation between elements and their behavior.

**Open Source**
Source code freely available for making changes and free to download.

**Decomposition**
A project management technique used to split the complex problem into parts that are easier to execute.

**BACK END**
Backend development refers to the server side of development where the main focus is on how the site works. This usually consists of three parts: a server, an application, and a database. Users can’t see the backend work, but code written by back end developers is what communicates the database information to the browser.

**BOOTSTRAP (aka TWITTER BOOTSTRAP)**
Bootstrap is an intuitive and powerful front end framework that is an open-source collection of tools for creating websites and web applications. It was developed by Mark Otto and Jacob Thornton of Twitter to encourage consistency across internal tools, and was originally named “Twitter Blueprint.”

**FRONT END**
Front end development refers to “client-side” development, where the focus is on what users see. Front end developers will be engaged in analyzing code, design, and debugging applications along with ensuring a seamless user experience.

**ReactJS**
React is currently the most popular javascript front-end framework.
Developed by Facebook in 2013, React is used to build interactive user interfaces.

**MySQL**
MySQL is a relational database management system (RDBMS) developed by Oracle that is based on structured query language (SQL). A database is a structured collection of data. It may be anything from a simple shopping list to a picture gallery or a place to hold the vast amounts of information in a corporate network.

**NoSQL**
NoSQL is famous for its high functionality and ease of development with a performance at scale. NoSQL is called a non-relational database. It does not follow the rules of relational database management systems (RDBMS), and hence does not use traditional SQL statements to query data. 2 famous examples of NoSQL systems are https://www.mongodb.com/ and https://neo4j.com/.

**Docker**
Docker is a software platform that allows you to build, test, and deploy applications quickly. Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime. Using Docker, you can quickly deploy and scale applications into any environment and know your code will run.

**Kubernetes**
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services.
The name Kubernetes originates from Greek, meaning helmsman or pilot. K8s as an abbreviation results from counting the eight letters between the "K" and the "s". Google open-sourced the Kubernetes project in 2014. Kubernetes combines over 15 years of Google's experience running production workloads at scale with best-of-breed ideas and practices from the community.

**AWS**
Amazon Web Services, Inc. (AWS) is a subsidiary of Amazon providing on-demand cloud computing platforms and APIs to individuals, companies, and governments, on a metered pay-as-you-go basis. These cloud computing web services provide a variety of basic abstract technical infrastructure and distributed computing building blocks and tools. One of these services is Amazon Elastic Compute Cloud (EC2), which allows users to have at their disposal a virtual cluster of computers, available all the time, through the Internet. AWS's virtual computers emulate most of the attributes of a real computer, including hardware central processing units (CPUs) and graphics processing units (GPUs) for processing; local/RAM memory; hard-disk/SSD storage; a choice of operating systems; networking; and pre-loaded application software such as web servers, databases, and customer relationship management (CRM).

**Objects**
An object is a combination of related variables, constants and other data structures which can be selected and manipulated together. An object can include shapes that appear on a screen or the age of students in a school.