I’ve performed many roles in my career, but software architecture is what I like most, and I’m pretty good at it.
My recipe for architecting a solution is this. First I study the current processes: I often need to feel the pain of working with them daily. So I work, learn, and discover improvable areas. Then I envision a new architecture that organically fits every piece together, allows simpler processes, and reuses as many building blocks as possible. Then I design a migration path, a chain of reachable steps to perform one at a time, without disrupting production.
Software architectures don’t last long without alterations, not even the best ones, because companies grow along many dimensions. It’s only a matter of time for those changes to go beyond what the architect foresaw. And technical debt ensues.
Software engineers and companies alike need to understand that embracing change (agile anyone?) includes architecting and re-architecting as often as needed.