Solution Architecture Pearls: Prelude

From Mainframes to microservices:  

After more than 30 years on the road, the time has come to actively contribute to our community!



For some time, I have been studying a way to give back my knowledge acquired throughout my professional experience of over 34 years dedicated to Information Technology to the technology community. I intend to be practical and serve the developer community, particularly those who want to become Architects, and the architecture community itself, where the focus is to provide an additional source of consultation and exciting topics for us to discuss in the future and learn from each other.

First, let's get to the presentations...

My name is Paulo Azevedo, and I had the opportunity in these more than 30 years of career to work in several areas of IT, such as:
  • Point of sale terminal automation projects where I used C ANSI (only the 27 reserved words) to create transactions and burn EPROMs for connection to the motherboard of the equipment.
  • Payroll maintenance and development using C++
  • Creation and development of various COBOL systems for minicomputers and mainframes.
  • Consulting, designing, and executing multi-user computer networks, LAN and WAN including cabling, networking equipment such as hubs, switches, routers, using distinct technologies such as Netware, Windows NT, and Unix like (HP-UX, IBM AIX, Sun Solaris). I had professional certifications of Certified Novell Netware Administrator, Microsoft Systems Engineer + Internet, and Microsoft Trainer.
  • Information Security Consulting and implementation of the 1st Digital Registry of CEMIG with Algorithmic Research to enable small entrepreneurs to act as agents for payment of electricity bills in small towns. In addition to having defined and implemented with the technology team of USIMINAS, the entire implementation of Checkpoint Firewall One and VPNs with the various units of the company, including the Japanese holding company that had acquired the company in its privatization.
  • Development of dozens of applications using technologies following the Windows DNA standard (commonly called three tiers - ASP Classic, COM+ Objects, Database), having even participated in large mainframe downsizing projects for this architecture.
  • Development of dozens of systems in .NET since its first version and highlighting the participation in the process of ASCEND Whidbey (.NET 2.0) along with Microsoft, where we used the alpha version of the framework to build a whole suite of logistics software with the direct support of the development team of .NET 2.0 and SQL 2000. On this occasion, I had the pleasure of meeting the Microsoft teams directly during a visit to their campus in Charlotte, NC.
  • Managing development teams and software architecture using various technology stacks such as .NET, JAVA, Native Mobile, and Javascript frameworks, and using multiple architectural patterns such as SOA, Microservices, Cloud PaaS and IaaS, and Native Cloud.
  • Management of global teams and programs for multinationals such as Konica Minolta and Dell Financial Services involving hundreds of people geographically distributed worldwide.
  • Creation and management of the team responsible for building the products for company integration, in B2B and B2B2C models, to one of the largest and most Brazilian severe crypto-active brokers, Mercado Bitcoin, where I had the opportunity to update myself on Web 3 technologies (Blockchains, crypto-economy, NFTs, etc.)
In the last 12 years, I have also focused a lot on developing technical people and project leadership skills, which are areas where our traditional courses and universities do not adequately prepare us for the market's needs. And, by the way, this is not the career goal of many software engineers that companies sometimes direct to develop such skills. 

I do not have a complete academic background, I came from technical education, which in my time it was very interesting, and most of my knowledge was acquired with a lot of studies in books, magazines, and articles and professional certifications from essential vendors in the market such as Novell (Netware Certified Administrator & Engineer) and Microsoft (Systems Engineer and Trainer). At the beginning of my career, there was no public Internet yet, and for many certifications, the studies were done in the technical manuals supplied with the software. Much of this knowledge was acquired in practice and with colleagues, where we had deep technical discussions that generated sensational baggage. I will not mention names because it is a huge list of people for whom I am eternally grateful for each teaching, exchange of ideas, and partnership. Also, much of the learning was the luck of numerous projects that included automation, industrial, commercial, commercial systems, base software, and mission-critical systems, always with significant challenges and loaded with technological innovations. For this, I thank all my colleagues, clients, and companies I have worked for from the bottom of my heart. Thank you very much for bringing me here.

How will this contribution work?

Given this scenario, I have decided to launch a series of articles, which I intend to release on a bi-weekly basis, where I will share the knowledge I have acquired as an architect and applicable to any development technology. I intend to bring up very important concepts for software design, from its fundaments to more complex concepts and architectural patterns. I plan to do this, so the reader does not have prior knowledge of such subjects. This material will gradually orient and train new software architects or serve as an additional source of expertise for trained architects. In advance, I make myself available to listen to and answer any questions, suggestions, and criticisms about the content because, after all, learning is always a two-way street, and not only do I want, but I am sure that this process will contribute even more to my learning.

Initially, the sequence of articles will follow the following pattern:

Section 1 - Requirements: where the focus is on explaining the importance of an exemplary process for collecting functional requirements (application objectives), non-functional requirements (technical quality and application viability), and constraints that can be related to business, such as budget limitations (size of the team, time to market required, etc.), technical (architecture already adopted, integrations with third parties, environments (data centers or cloud providers) available and, finally, regulatory restrictions (imposed by controlling bodies of certain operations for specific regions, countries or states). In this section, I will emphasize non-functional requirements, conceptualizing them, teaching how to measure them, and presenting alternatives to solve them within fictitious scenarios or real examples I have witnessed.

Section 2 - I will deal with the most common software engineering and architectural patterns, explaining their benefits and characteristics so that you have input to decide on their use in the context in which you work. Here we will deal with SOLID, GoF, Client-Service, layered architecture, hexagonal architecture, and event-driven architecture, among other subjects. I will always cover the technologies involved and the architectural differences between them. It will also focus on discussing large-scale architecture of ridesharing services, delivery, e-commerce, streaming, etc.

Section 3 - I will address the aspects related to technical leadership, people leadership addressing, mentoring and coaching processes, 1:1s, action plans, project leadership, risk management, delivery management, stakeholder reporting, etc.

This is the initial scope of Solution Architecture Pearls, and I hope it is something valuable for you to evolve in your career. We'll talk again in the first article of the first section.

Best regards,


Paulo Azevedo


 









Comments

Popular posts from this blog

Software Architectural Pearls: 002

Solution Architecture Pearls: 001