Software engineering

Software has become part of the day to day life of many people. It is present in our smartphones, cars, and even in our homes. The software engineering field is vast and has many areas of expertise, as such, there are topics of interest that are under the umbrella of this page. The aim of this page is to build a collection of articles, tutorials, and resources that are useful for practitioners, students, and enthusiasts of software engineering. But before jumping in the content, let’s start with a brief definition of what this page understand as software engineering.

The software engineering as we know it was born in the 1960s, and it is a discipline that deals with the design and development of software systems [1]. It is a field that is concerned with the systematic approach to the development, operation, and maintenance of software.

List of content

Abstract desgn with paint in the all

May 19, 2024

Graphql vs rest

Graphql and rest are widely used choices for building APIs, in this post we will go over different features of each one of them. Comparing, discussing and going through the differences in a pragmatic way.

Woman signing on white printer paper beside woman about to touch the documents

Mar 31, 2017

Software engineering - is specification important?

Recently during my daily work I started to think about software specifications. The development world is living in the agile era and is even more aggressive with dead and quality. There are two extreme scenarios which we can begin with, the first is a team where developers don't have documentation...

A right hand holding cleaning product in a blue background

Aug 18, 2023

Clean architecture - Hexagonal architecture, Screaming architecture, DCI, BCE

Separation of concerns, isolating repetitive code, and decoupling responsibilities are key to maintainable software. Inspired by the Clean Architecture book, this post combines theory with practice, showcasing how to apply Clean Architecture principles through practical examples in both frontend and backend development and offer open learning resources for dive deep...

Abstract design

Jan 7, 2025

Software design

Software design is the internal quality of the design of software and the properties that make the software easier to understand and change in the future, specifically focusing on maintainability.

A website wireframe on a macbook screen on an office desk

Apr 16, 2016

Requirements Engineering - A tool for Use Case

Use case tool is a tool developed by a group of software engineering students in Brazil. The tool aims to improve the documentation and requirements gathering process in software development. The authors identified a gap in existing tools and developed a solution based on Use Case from UML. The tool...

Simple UI toggle on purple gradient

May 8, 2024

Feature toggles

Feature toggles have become a standard practice for teams that want to deliver software fast into the hands of the users without disruption. with this approach, new challenges and ways of working come into play when writing code, let's dive in in the theory and practice of feature toggles.

A close up of the cockpit of a racing car

Jan 5, 2025

Refactoring

Refactoring is often misunderstood as a major project requiring significant time and resources. In this blog post, we demystify this misconception and explore the true nature of refactoring. Drawing from Martin Fowler's seminal work, we explain why refactoring should be a continuous process integrated into daily development routines. Discover the...

References

  1. [1]L. Cameron, “Margaret Hamilton: first software engineer,” IEEE Computer Society. May-2023 [Online]. Available at: https://www.computer.org/publications/tech-news/events/what-to-know-about-the-scientist-who-invented-the-term-software-engineering