Software engineering is the use of engineering fundamentals within the field of software development. The primary goal is the creation, improvement, and maintenance of software. Software engineering takes into account engineering concepts, such as rigorous testing, the hardware and software environment, and systematic discovery.
How do I use this section?
Back in the day, to craft a robust software application, developers dove deep into the heart of the problem the software aimed to solve. They would often start with something like a pseudo-code or flowchart: START INPUT: User requirements PROCESS: Analyze and design solution OUTPUT: Software application END This demanded an in...
When it comes to software development, there are always crucial decisions the development team has to make in the beginning of the development process, regarding the principles and technologies that they will use. Everyone has different opinions, and often come to disagreements, especially when having to choose a project management methodology. T...
In this lesson, we will learn about managing source code, with a focus on following key points: What are version control systems? Understanding git workflow using examples. Understanding remote code hosting provided by GitHub. Often while working with code, you encounter a situation when you wa...
What is Git? In the past decades, software engineering started to become more complex than ever, requiring larger project structures, and more collaborators on the same project. These advancements in technology and software development showed an increased need of a version control system. This type of system is responsible for changes track...
CI/CD pipelines-- where CI stands for Continuous Integration and CD stands Continuous Delivery-- is a software development practice through which all developers make code changes to a central depository multiple times a day. It automates the entire software release process. The pipeline builds code, runs test cases (continuous **inte...
Managing the configuration settings of an application is an increasingly important aspect of modern software development. These configurations used to be stored with their associated application code repositories and any changes required a new version of the code to be deployed, even if a single configuration needed to be changed. As teams nowada...
Unveiling the Magic of Jenkins: Mastering CI/CD Pipelines The world of Continuous Integration and Continuous Deployment (CI/CD) is a realm where code changes transform into features, almost like spells turning frogs into princes. But, how does one master this arcane art? Enter Jenkins, your wand for automating, building, testing, and deploying...
Embarking on a Journey with Docker: Understanding Its Essence Why Docker? The Fundamental Question Before we dive into the nuts and bolts of Docker, let's first examine the "why" behind it. Understanding the problem that Docker solves will give you a much deeper comprehension of its significance in software development, far beyond the sup...
Setting the Stage: A Refresher on Docker and Its Ecosystem Docker Unpacked: More Than Just a Definition Before we delve into the art of building containers and images with Docker, let's take a moment to revisit what Docker actually is and what it brings to the table. Docker is an open-source tool designed to facilitate the building, d...
Introduction As Docker continues to gain popularity as a containerization tool for developing, deploying, and managing applications, it's no surprise that it has become a hot topic in the tech...
One of the most important steps in the software development process is to detect and identify the origin of errors, so that they can be eliminated. These errors can include memory leaks, different kinds of exceptions, or even just business logic mistakes, and can be identified during the debugging process, using the proper debugging tools - de...
Introduction Linux is an open-source, Unix-like, freely-distributable computer operating system (OS) built around the Linux Kernel. This operating system is responsible for managing the system’s hardware and resources, such as its CPU, memory, and storage, _as well as managing the communication betwe...
In this lesson, we will learn about bash and its basic commands, with a focus on the following key points: Getting an introduction to bash and its commands. Understanding how to perform operations using the command line. Computers provide two kinds of interfaces to the user: Graphical User Inter...
Security risks in software applications are all around. Especially in these times of constant cyberattacks happening every minute, they can affect everyone — including individuals, businesses, and governments. For that reason, ensuring security in software development is essential. Cybercriminals are constantly looking for ways to use the vulnera...
We use web applications for so many things in everyday life. Thus, several times a day, we find ourselves inputting sensitive information into many different types of online channels. As developers, we face a lot of challenges, of which security is both important and often underrated. Because of that, we should be dedicated to making more of an e...
Network topology is the way a network is arranged, including the > physical or logical description of how links and nodes are set up to > relate to each other. The configuration or topology of a network plays an important role in its performance. There are many possible ways for arranging a network, and all come with different advantages and di...
What is an orchestration system? Kubernetes, in its most common usage, is a container orchestration system. Of course, we need to define what that means! Look no further: > An orchestration system provides automated configuration, > coordination and management of complex computing networks, systems and > services. So these systems a...
The Importance of High-Quality Data In the modern business landscape, data is often considered the lifeblood of an organization. Industries like banking, insurance, retail, and telecommunications heavily rely on data to drive performance and gain a competitive edge. The Cost of Poor Data Imagine you're an archer, and your data is the bo...
Introduction to Terraform What is Terraform? Terraform is an open-source infrastructure as code (IaC) tool that automates the provisioning, management, and destruction of infrastructure across a variety of cloud providers and on-premises environments. Terraform uses a declarative language to define the desired state of your infrastructure...
The Domain Name System (DNS) is a critical component of the internet, allowing users to access websites and other online resources by using simple names rather than long strings of numbers. Let's go deeper and learn more about DNS. What is DNS? The Domain Name System (DNS) is a server-based network that converts human-readable domain names...
A Comprehensive Guide to Centralized Logging with the ELK Stack Why Logging Matters The Vital Role of Logging Logging serves as the central nervous system of modern software applications. Think of it as th...
Introduction: Navigating the Monorepo vs. Polyrepo Maze Welcome to the world of code repositories! Imagine your codebase as a library: would you prefer one massive room containing all books and resources or multiple specialized rooms? This question brings us to the crossroads between Monorepo and Polyrepo architectures. What is a...
Introduction Azure is a cloud computing platform headed by Microsoft that offers a large spectrum of services ranging from storage to analytics and networking. But, what is cloud computing first of all? Well, to put it simply, _cloud computing is the use of technological resources to store, retrieve, and pr...