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

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:...

Accelerate - Building and Scaling High-Performing Technology Organizations - Book review and my personal notes and insights

Delivering software fast and keeping the quality is challenging. Accelerate brings the light through data on the devops culture and practices. Devops (even though the term wasn’t there?) has been adopted by the industry for a while and Accelerate dives into the practices on what makes successful teams to delivery software fast and also what hold them back to improve the delivery process. Besides that the book is accessible for different profiles within the technology world (software engineer, cyber security, quality engineer, etc) [1]. This post follow the same structure as the book, but instead of three (as the third...

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...

Jest timers and reactjs - A use case for using jest time related functions

This post explores the possibilities to use fake timers with jest. Such feature is needed for async testing, whereas is needed to await for some computation to finish. Such computation can vary on time, for example, 1 second, or 10 minutes. In a test case scenario, the waiting for this computation is not needed [1]. Jest offers fake times, to advance in time or run pending computations without the need to wait for them to complete. Jest is not used in reactjs projects only, therefore, the examples used here use reactjs as a library to build web interfaces. For pure...

Firebase UI localization - Tutorial on how to setup the translated web version

Firebase ui (user interface) has helped me to build an application with social login with almost no code to write, the ui library provides an implementation of firebase authentication for web ready to use. As such, the expectation of easy to use also points to an localization easy to integrate. Therefore, the i18n for the firebaseui [1] has some tricks and is not as straight forward as it could be, it requires manual building for each specific language, and also it is required to ship the generated bundle with the application. In this post, I am going to explore my...