Posts

Reflections on Hard Decisions: Avoiding Coupling, Denial and Dogma

Image
Previously, I was blogging about two very HOT Button Issues (The Death of Microservices and Why Waterfall can be better than Agile(Sometimes). Today I want to expand and correlate these two topics a bit more. It's important to say again that I like agile, and I do it for +14 years. I have no problems talking about Agile issues. You shouldn't either. Hard questions sharpen our solutions. There is a huge difference between go trough a set of hard questions to justify investment harder than power or politics game to archive a result. The difference is one is healthy the other is not. There are "Healthy" matters like: Coupling, De-coupling, execution, Agile / Waterfall we should be able to navigate, talk, analyze trade offs without dogma or any issue whatsoever. However is hard to us to talk about some subjects right? What happens is that there is so much FEAR and TABOO on companies that some subjects cannot be ever on the table. Effective Learning means, we can talk a…

Don't Outsmart hard choices: Why architects are the ultimate tech debt perpetrators

Image
Problem-solving is both a blessing skill and also a curse. It's on every software architect/engineer veins. It's pretty addictive and makes us feel useful and smart. Having sharp problem-solving skills is always great. I mean talent is gold. We want more talent, and what talent do intelligent solutions to complex problems. The heart of software engineering is fixing problems. Don't get me wrong this is good. However, sometimes we need to go with HARD DECISIONS. I can't think of a harder choice today than decide to pay the technical debt. However, once you got a design wrong and started things with the wrong feet is easy yo keep pushing problems aways without belly and keep the debt growing. Why does it happen?  


Waterfall could be better than agile(sometimes)

Image
Sounds crazy, right? How could that possibly be the case? Before I continue, I need to say I',m doing agile for +14 years non-stop, and I sincerely believe Lean / Agile does good things. However, like everything in software, there are trade-offs. You might be thinking(Crazy Brazillian), and Agile is about incremental, fast feedback cycles, effective learning, and practical, tactical way to avoid waste and risk by shipping code to production often. How could that be bad, after all? To understand the hidden trade-offs here, we need to understand what is behind the principles of Agile. Hold on bozo; there is no such thing as assumptions behind principles. Recently I was challenging microservices. Today is Agile, tomorrow I don't know but something else might come up. To some degree, I feel agile needs to be challenged because last time I did it was around 2015. It's healthy to disagree if it helps to harden your decisions and as the whole team/company you take better decisi…

Architecture 101: Vision, Properties and Skills

Image
Software Architecture is defined either by accident or by design. Architecture becomes real once you ship your system to production. However you might only see the issues related to poor architecture decisions after some time or as a consequence of scale/hyper-growth. Software architecture is hard. Previously I was blogging about the Design aspect of software architecture and the relationship between Architects and Architecture. Today I would like to cover even more basic aspects like (A) What's my vision on software architecture? (B) What properties should we expect from a proper or well-architect system? (C) Fundamental soft-skills an experienced software architect need to be able to master it. So Let's get started!


There is no one size fits all

Image
Everybody knows there is no Silver Bullet. We all know there is no one size fits all, however, we still look for it. It happened over and over and for sure will keep happening. Before when there was SOA, people were doing SOA wrong and want to fix all problems with ESB. So there was the SOA Rest Guerilla movement; Let's stop adding things on ESBs and move all to services. Now everybody has coded into microservices, they have distributed monolith in most cases and people are considering removing things from microservices and moving to Kubernetes. Why just run stateless code there right? If we can run all the things there like stateful databases, IoT/Edge, BFF, ML. However, there are other computing models. Most of the couples have Virtualization(EC2 on AWS), Containers (ECS/EKS on aws), Edge(Lambda on Edge for AWS), Serverless(AWs Lambda).

Refactoring to Optional

Image
When we right software we need to worry about so many things. For instance: Performance, Scalability, Security, and many other important concerns. There is also a need to worry about corner cases, error paths, and conde readability from other engineers. Which is not an easy task. So should we return null or not? Should we throw an exception or not? Null is considered to be a Billion of dollars mistake. Languages have some concepts to help us like Haskell has the Maybe Monad. Scala has Option. Rust has Result. Java has Optional. Since version 8, Java improved a lot and there is still a long head ahead but slowly getting there. Today I decided to do something different with you guys, let's do a simple refactoring together in order to improve our code and understanding. So there is a video showing from zero to a hero like code step-by-step. This is the first refactoring video I make, hopefully, it will be interesting for you guys. Without further due, let's get started! 

The Death of microservices - Distributed Monolith 101

Image
It does not matter the question; the answer is Microservices Architecture(MSA). Feel that way too? Are companies doing proper microservices at all? Would it be just everybody just calling "microservices" and doing all sins against microservices? Let's adopt microservice now, okay. What problems are we trying to fix? I know I want to do it because it is everybody doing, are you sure? I think I know what I'm doing, are you? Well, "the road to hell is paved with good intentions." The problem was happening before the SOA era; we had this problem before, microservices still have it, Serverless the same. OH, this is backend thing, buddy we are good at Frontend or in BigData, DevOps Wrong! It's everywhere! If there are software and distribution, potentially, you will have this issue, which is not minor.