Strategies such as DevOps, implementing microservices architectures, using containerization and orchestration and prioritizing security by design.
Effective API dependency management is a challenging but beneficial journey to transit. Embrace versioning and dependency management from the beginning.
Modularity, cohesion, low coupling, abstraction/information hiding, and good separation of concerns collectively form the bedrock good software design.
There are several types of API testing that should be executed depending the objectives. API is critical for ensuring quality, resilience and performance.
Container-based architectures present a paradigm shift in software development and deployment. They bring large technical and business benefits.
Immutability offers big benefits such as predictability, scalability, and concurrency for small cost. A valuable technique in the Software Engineer toolbox.
Backend for frontends pattern is a good strategy when looking at increasing team autonomy, speed of delivery and improved security and performance.
Temporal decoupling is one of the dimensions to think about when decoupling systems. Choosing the right approach involves understanding the properties we need.
The number of GenAI driven tools is increasing rapidly. How is it playing a role in the SDLC and what are the best tools around.
Developer challenges can be opportunities if played well. This article covers strategies to keep up with rapid tech advancements.
Arguably one of the best books in Software Engineering. The first lesson, the Myth of Man-Month about adding people in the middle of projects, is still relevant as ever.
Software engineering and programming are two distinct roles, each with its own set of responsibilities and skills. This article compares both disciplines.
The buy vs build decision includes cost, however it is not the only aspect. Reliability, performance, security, customization, and maintenance also play a role.
Understanding the differences between availability, recoverability, and disaster recovery is essential for building resilient and reliable software systems.
Unreliable tests make the team lose confidence in the automated pipelines. Understanding causes of flakiness and how to fix them will bring confidence back.
Idempotency ensures data consistency, fault tolerance, safe retrying, caching and optimization; regardless of how many times it is performed.
I suggest to focus on software engineering effectiveness rather than productivity. Key dimensions are code quality, automated testing, and collaboration.
The rise of low-code platforms has brought immense benefits to speed up development. However, software quality on low-code solutions should not be overlooked.
The economics of software engineering trade offs between cost of producing, releasing and maintaining software and benefits depending on the outcome.
To measure software quality, consider quantitative metrics and qualitative assessments, based on reliability, performance, security, maintainability, usability.
Effective software testing ensures that the software meets its intended functionality. Different test types are used depending on the case judiciously.
There are certain software engineering techniques that improve software quality and ensure long-term fitness of software systems.
Continuous Integration and Continuous Deployment (CI/CD) have emerged as game-changing practices. Going faster and releasing often is key for quality software.
Micro Frontends is an architectural style for building web apps by decomposing the UI into smaller, self-contained, and independently deployable modules.
Predicting the future is as challenging as necessary. This is also true in Software Engineering when estimating development effort, cost and schedules.
The capacity to withstand a fault without failure is fault tolerance. Monitoring and measuring failure metrics is key to understand what is going on.
Systems coupling has several dimensions. Hence, decoupling each aspect can take you in a different direction with conflicting trade-offs.
A classic debate in Software Engineering is about whether investing effort into building high quality software is worth it or not.
Scalability is the property of a software system to be able to handle a growing amount of work. This article provides comprehensive Software qualities for scalability.
In Software engineering, quality is defined as building software correctly and meeting specifications; basically, what the customer has requested.
Voice apps are serverless. This brings significant benefits from day 1. Hence, Serverless is not just part of what we do, it is what we do.