Matheus Marabesi website, sharing ideas about software development - Listing posts on page 3

Terraform HashiCorp certification - infrastructure as code, the udemy course companion

Infrastructure as code (IaC) is a growing trend as the devops became the standard to delivery applications. As such, cloud providers have each, their own way of offering infrastructure, in the past, administrators had to manually execute commands on the servers and manually provide resources (which it’s the case until today). Terraform provides a solution through code for managing infrastructure. It is a single place to talk to different providers and keep the changes repeatable and versioned, giving confidence to change the infrastructure of any application. The idea is to automate as much as possible and you do not manage...

TDD revamped, five years and many more to come

This post goes through my journey that started at least five years ago with testable code, specifically using Test-Driven Development (TDD). I remember when I found it out it was a moment of magic, even though, it took some time for me to realize that TDD changed my way of thinking. Not just about my code, but about software development in general. Throughout this post, there are references on the first TDD international conference, XP and agile, if some of them is not familiar to you, feel free to jump to the references. As a companion, I offer a youtube...

XP explained second edition (WIP) - book club at Codurance

Extreme programming (XP) [1] is a methodology focused on the technical and social aspect of software development. It focuses on two main pillars: agile and technical excellence. Technical excellence is the structure that allows teams to be agile. On the other hand SCRUM is the methodology that got traction and is the most adopted by the industry as a means to “be agile”. Therefore, as already explored by Martin Fowler SCRUM has a place in the party, but is not the main course. Kent Beck popularized different technical practices on writing XP and this post aims to go over the...

My technical reading path - Software engineering journey

This is a list of readings on software engineering related topics, on the books I read, podcasts I like to listen to, magazines or other resources. I also shared the books I read in 2020, which is liked with this post. Across this blog I have a more general list that I keep updated as well. Have fun and suggest any other reference you might want to be listed here. 📚 books 🗞 links 🎵 audio Software engineering 📚 Head First Software Development: A Learner’s Companion to Software Development 🗞 https://engsoftmoderna.info 🗞 Software Engineering: A Practitioner’s Approach 8th 📚 Accelerate:...

On one hundred percent code coverage - how to approach coverage and void misusing it

The mindset for testing for developers has changed over the years as the software industry is evolving. Even though, testing practice is not widely used, it is integrated in the development cycle of the application. As such, code coverage became a popular subject among developers and discussions have been risen in order to agree on a consensus of code coverage. This post aims to give this discussion a push and share what I think about code coverage, what I see teams doing and what I understand that is effective or not. Test State Coverage, Not Code Coverage The Pragmatic programmer...

Kubernetes quick notes deployment (WIP)

As opposed to docker that operates on the container level directly, kubernetes has a different approach as such there are a set of steps required to get the application running into the cluster. For example, in docker a simple docker run creates the container and starts it. In kubernetes, first we need to create a deployment and then expose it. Creating a pod A pod is the smallest unit on the kubernetes cluster. Pods are a group of containers that are related to each other. Manually It’s not possible to run an empty pod, it is required to have an...

Jest asserts beyond equals - tips for improving assertions

Testing with jest is an activity that developers do to keep the application maintainable and time proof. Therefore, learning a testing framework can be a consuming task, often it has many features to explore. The assertion API (Application Programming Interface) usually is one of the most important, as this is the one that the developer uses the most during the TDD (Test Driven Development) [1] flow. The gist of the assertion API [2] is to compare values, as such the equals match is the most used (in my experience). On the other hand being one of the most used can...

How to lose your developers - Mindmap around software development, what not to do to lose developers

This post is random thoughts around software development from a developer point of view (strong opinions on the way!). The content covered is mainly based on my career, and the opinions expressed might not fit all scenarios. Do not take the text as a saint grail or a tutorial, it is more like a conversation on what I think about software development, soft skills, hard skills and management. On top of that, I was inspired by the book Mind Map Mastery from Tony Buzan [1] and also by The software craftsman: professionalism, Pragmatism, Pride by Sandro Mancuso [2], which I...