Tech Excellence
Tech Excellence
  • 57
  • 90 073
So you think you might be an architect (Sonya Natanzon)
We are all familiar with the title software architect, but you may not know what a software architect does or how to become one. Perhaps someone even gave you the title, but you are not sure what’s expected of you. Or you suspect you might be doing a job of a software architect, but can’t pinpoint when or explain how you made the leap and whether you are fulfilling the expectations of this nebulous role.
In this talk, you will learn:
• How to define a role of a software architect for yourself and your organization
• What do software architect do (a day in the life)
• Typical pitfalls to avoid
ABOUT SONYA
Sonya is a seasoned engineering leader and software architect. She works at the intersection of social and technical aspects of software engineering, leading enterprise software development.
She experiments with various methodologies such as Domain-Driven Design, Team Topologies, Architecture Advice Process and others to improve building and operating software in the healthcare sector. She speaks about the outcomes at international software conferences and meetups.
- LinkedIn: www.linkedin.com/in/sonya-natanzon/
TECH EXCELLENCE
- Subscribe to our UA-cam channel www.youtube.com/@TechExcellence
- Join our Meetup Group www.meetup.com/techexcellence
- Follow us on LinkedIn www.linkedin.com/company/techexcellenceio
- Follow us on Twitter techexcellence_
- Join our Discord Community discord.gg/KXdf4t4j2m
#softwarearchitecture #leadership #softskills #softwareengineering #techexcellence
Переглядів: 0

Відео

Orchestration vs. Choreography: The good, bad & the trade-offs (Laila Bougria)Orchestration vs. Choreography: The good, bad & the trade-offs (Laila Bougria)
Orchestration vs. Choreography: The good, bad & the trade-offs (Laila Bougria)
23 години тому
One of the goals of building microservice-based architectures is to reduce the complexity of individual components. In doing so, much of that complexity shifts from individual services towards interservice communication, making how we design those service interactions essential in our system design. That's where orchestration and choreography come in, two coordination techniques that can help u...
Optimizing for a fast flow of value with Architecture for Flow (Susanne Kaiser)Optimizing for a fast flow of value with Architecture for Flow (Susanne Kaiser)
Optimizing for a fast flow of value with Architecture for Flow (Susanne Kaiser)
23 години тому
In today’s fast-paced business environment, it’s essential for organizations to continuously adapt and evolve to remain competitive and stay relevant in the market. This talk explores the synergy of combining Wardley Mapping, Domain-Driven Design (DDD), and Team Topologies as "Architecture for Flow". Architecture for Flow provides a holistic, pragmatic toolset for designing, building, and evolv...
Architecture Modernization: Aligning Software, Strategy & Structure (Nick Tune)Architecture Modernization: Aligning Software, Strategy & Structure (Nick Tune)
Architecture Modernization: Aligning Software, Strategy & Structure (Nick Tune)
23 години тому
Legacy architectures are a business risk, stifling your organization's ability to innovate. On the other hand, modernized architectures can be a competitive advantage allowing your business to innovate at speed and scale their organizations. But effective modernization is far more than just rebuilding the old system with new technologies and the latest architectural patterns. It's an opportunit...
Test Doubles without Tears (Marco Consolaro & Alessandro Di Gioia)Test Doubles without Tears (Marco Consolaro & Alessandro Di Gioia)
Test Doubles without Tears (Marco Consolaro & Alessandro Di Gioia)
День тому
Introduction: Join us for a focused session on the practical use of test doubles popularised by the London School of TDD, where we will also demonstrate it in real-time. The session will be live coding: Morse Code Kata. Learning Outcomes: • Differentiate between Dummies, Mocks, Stubs, Fakes, and Spies. • Understand the concept of Command/Query separation in software design. • Choose the appropr...
Complexity and Modularity: Two Sides of the Same Coin (Vlad Khononov)Complexity and Modularity: Two Sides of the Same Coin (Vlad Khononov)
Complexity and Modularity: Two Sides of the Same Coin (Vlad Khononov)
День тому
Every software engineer and architect strives to design modular software systems and avoid complexity. Yet, frequently, the outcome is the opposite: what promised to be an elegant, well-thought architecture results in another big ball of mud. Why does this pattern persist and how do we learn not to repeat it? In this talk, I will explore the nature of modularity and complexity, including their ...
Domain-Driven Refactoring (Jimmy Bogard)Domain-Driven Refactoring (Jimmy Bogard)
Domain-Driven Refactoring (Jimmy Bogard)
День тому
Books, workshops, storming and more, all build up an idealized domain model. All describe great techniques for domain-driven greenfield applications. But what about the code we have? How can we take what's already built, and move it towards a better, more cohesive design? In this session, we'll look at anemic, procedural, boring code and examine code smells that can point us in the right direct...
Metal-In Test-Driven Development: A Dual-Target TDD Approach (Fran Climent)Metal-In Test-Driven Development: A Dual-Target TDD Approach (Fran Climent)
Metal-In Test-Driven Development: A Dual-Target TDD Approach (Fran Climent)
Переглядів 384День тому
How can we get rid of the hardware bottleneck in order to speed up our embedded development processes? Could we treat our embedded code as a complete subsystem decoupled from the underlying hardware? If yes, how could we achieve it? Outline of the practical session: - Develop a highly decoupled and portable ‘BatteryMonitor’ module following Metal-In TDD approach. - Highlight the differences bet...
Clean Architecture: Crafting Flexible Software Systems (Olaf Thielke)Clean Architecture: Crafting Flexible Software Systems (Olaf Thielke)
Clean Architecture: Crafting Flexible Software Systems (Olaf Thielke)
4 дні тому
This talk explores the concept of Clean Architecture, its importance in software development, and how it addresses common challenges. We'll discuss the purpose of software architecture, examine traditional development pitfalls, and introduce Clean Architecture principles. Through a real-world case study with audience participation, we'll demonstrate the practical application and benefits of thi...
TDD: Theme & Variations (Kent Beck)TDD: Theme & Variations (Kent Beck)
TDD: Theme & Variations (Kent Beck)
6 днів тому
Test-driven development (TDD) has become a polarizing development practice. Claims about TDD range from “absurd” to “essential” to “damaging” to “joyous.” In this talk, we’ll take a step back and look at TDD in context, including its history, current practice, and potential future. Outline of the session: - History of TDD - Canon TDD - Variations: TCR, Exploratory, Mocks, Top-down, Bottom-up, U...
Hexagonal Architecture (Alistair Cockburn)Hexagonal Architecture (Alistair Cockburn)
Hexagonal Architecture (Alistair Cockburn)
8 днів тому
Learn from it’s creator the rules and structure of the “Hexagonal”, more correctly called the Ports & Adapters architecture. In this lecture, Dr. Cockburn will describe why he created it, its benefits and also its costs, the UML description, and also some sample code. As an extra challenge, he will invite you to write your first Ports & Adapters application in your favorite language /during/ th...
Modern Software Engineering: Building Better Software Faster (Dave Farley) - TE Conf 2024Modern Software Engineering: Building Better Software Faster (Dave Farley) - TE Conf 2024
Modern Software Engineering: Building Better Software Faster (Dave Farley) - TE Conf 2024
11 днів тому
What really works to help us build better software faster? What are the fundamentals of our profession, that if we get them right, and apply them whatever our goal and whatever our technology, will increase our chances of success. Some of these ideas have been hiding in plain sight, and if we just take them and build our practice and process on them, we do get better results. So what are they, ...
How Domain-Driven Design scaled a Big Ball of Mud product (Kenny Baas-Schwegler)How Domain-Driven Design scaled a Big Ball of Mud product (Kenny Baas-Schwegler)
How Domain-Driven Design scaled a Big Ball of Mud product (Kenny Baas-Schwegler)
Переглядів 846Місяць тому
Many products start out with a simple, naive model able to prove market fit. And most of the time that one model grows, because more features need to be put in at a fast pace. This can have a huge impact once the product needs to scale. Because that fast pace can turn the model into a Big Ball of Mud, and most of the time that model isn’t the most useful model to solve the core business problem...
From EventStorming to TDD (Oliver Zihler & Alina Liburkina)From EventStorming to TDD (Oliver Zihler & Alina Liburkina)
From EventStorming to TDD (Oliver Zihler & Alina Liburkina)
Переглядів 1,5 тис.Місяць тому
Last time, we showed how EventStorming, DDD, and Clean Architecture can help us foster shared mental models between domain experts and developers effectively. This time, we will focus on one main variation of EventStorming, Design-Level EventStorming, to demonstrate how we can effectively employ it during iteration planning to split user stories and derive business rules and aggregates, such th...
Product Minded Engineer (Tamás Bunth)Product Minded Engineer (Tamás Bunth)
Product Minded Engineer (Tamás Bunth)
Переглядів 3962 місяці тому
In this meetup, the Speaker will argue for the importance of familiarizing Software Engineers with Product Thinking. He will show various insights, tools and skills that are often overlooked when we discuss the important competencies of Software Engineers, and he will show how to use them to become more impactful, more valuable and more satisfied in an engineering role. Outline of the session: ...

КОМЕНТАРІ

  • @alessandrofardin9517
    @alessandrofardin9517 2 дні тому

    Yes

  • @seethruhead7119
    @seethruhead7119 9 днів тому

    man OOP makes this stuff so overcomplicated this entire architecture just looks like a request handler function anyone that has any experience with express.js for instance has already been using this architecture.

  • @mustaphab32
    @mustaphab32 27 днів тому

    isnt this BDD?

  • @imrepub
    @imrepub Місяць тому

    next time please add some transparency to the top right TE logo, or move it outside the presentation area

  • @senshiougonno7017
    @senshiougonno7017 Місяць тому

    loved the exercice ! thank you so much

  • @zoranProCode
    @zoranProCode Місяць тому

    It’s not because I am from Serbia like Cupać but I really don’t know if there is better channel than this one about the TDD! Keep going guys!!!

    • @TechExcellence
      @TechExcellence Місяць тому

      Appreciate it! Glad that you're onboard with TDD 👏

    • @jcupac
      @jcupac Місяць тому

      Totally agree!

  • @evandrobarbosadosreis
    @evandrobarbosadosreis Місяць тому

    Keep doing this amazing work. Great content indeed.

  • @Jeca299
    @Jeca299 Місяць тому

    Great video! 😊

  • @BlindVirtuoso
    @BlindVirtuoso 2 місяці тому

    This is excellent one.

  • @georgesotiropoulos9935
    @georgesotiropoulos9935 3 місяці тому

    A very nice session on service boundaries and fat messages. However I still prefer to store the OrderDetails on the First Order Microservice, in one place and use a Saga and specific Commands to send specific portions of the OrderDetails Data to each of the rest Microservices in the ecommerce scenario. Otherwise we need to have extra layer of temporal persistency for each microservice (we already have a local-database at each microservice, we propably have a lookup database, and we have to deal now with a new temporary storage ), add on top to implement all these using hexagons and CQRS projecions and the code becomes really-really complex. My two cents......Great session though!

  • @zoranProCode
    @zoranProCode 3 місяці тому

    Fantastic pragmatic presentation.

  • @ChicagoDave44
    @ChicagoDave44 3 місяці тому

    One thing I didn't hear you talk about is using Read Models to avoid the cross-service interactions. I have always professed that a Read Model is generally UI oriented and ignores all boundaries. Then again, I have been talking about Packaged Business Capabilities (UI + API + Data + Events all packaged as one thing) for about 6 years.

  • @alpsavasdev
    @alpsavasdev 3 місяці тому

    I am 20 minutes into the video and I can tell by now that it is awesome, packed with real life examples.

  • @TechExcellence
    @TechExcellence 3 місяці тому

    Here are the slides: www.dropbox.com/scl/fi/jtyb6lmscycau8axkmg5t/ddd-service-boundaries.pdf?rlkey=gxpcxtadgx7iq7c7og4orhizr&e=1&st=a6atkiny&dl=0

  • @JakeWilson88
    @JakeWilson88 3 місяці тому

    Thanks Adam for the awesome session!

  • @TechExcellence
    @TechExcellence 3 місяці тому

    Designing a UI for Microservices: go.particular.net/tech-excellence-ui-2 Service Oriented Architecture: go.particular.net/tech-excellence-boundaries-2

  • @ianhamilton8376
    @ianhamilton8376 4 місяці тому

    This architecture has been around for over 20 years in the modular monolith/modular client. What this video really shows is how little most developers really understand about software architecture and how poorly it seems to have been taught for a long time.

    • @programuoki-lt1465
      @programuoki-lt1465 2 місяці тому

      Agree and then populating all medias with good clean architecture courses :) I feel same aspect Divide and Conquer only different context.

  • @PaulSebastianM
    @PaulSebastianM 4 місяці тому

    Hexagonal Architecture should just be called what it really is, to avoid so much confusion. What it really is a way to organize code based on the concepts of Input or driver ports and Output or driven ports. Input ports are driven by the users or the app and they drive the application, Output ports are driven by the application and they drive interactions with external systems. That's it. Just some ports. How you organize your projects is not prescribed. You only have to call your inputs and outputs ports and abstract them away however you see fit, so that you can focus on testing the app's behavior based on how it's driven.

  • @devaliero-3d597
    @devaliero-3d597 4 місяці тому

    I used already Vertical Slice architecture at the beginning of my career, it was then known as Big Ball of Mud

    • @WangAndrew
      @WangAndrew Місяць тому

      Can not agree more😅😅😅

  • @Wfmike
    @Wfmike 4 місяці тому

    The biggest advantages of using vertical slice architecture is FEWER MERGE CONFLICTS!

  • @PaulSebastianM
    @PaulSebastianM 4 місяці тому

    People that have had to face the difficulties of not having taken the right micro decisions at the right time, will totally understand this talk and even have some flashbacks, 😹😹

    • @jcupac
      @jcupac 4 місяці тому

      Totally agree 😂

  • @TechExcellence
    @TechExcellence 4 місяці тому

    This is the Gilded Rose github repo: github.com/emilybache/GildedRose-Refactoring-Kata

  • @PaulSebastianM
    @PaulSebastianM 4 місяці тому

    I hope you end up using Mock Service Worker instead of mocking window.fetch... will have to watch to the end and see, because I don't like having to dirty the API adapter by injecting what is basically an http client. It might make sense in C# but in JS world you have things like window.fetch or axios and their interfaces are not compatible, unless you abstract them yourself and create a common interface.

    • @niksumeiko
      @niksumeiko 4 місяці тому

      If we mock the request (a method that communicates to the outside world) using MSW, the test will run a bit slower than if we pass a fake implementation of the request. Doing MSW in the integration tests - where we assert user journeys by rendering specific parts of the app - totally makes sense. However, asserting all the implementation details of the adapter (e.g., headers that are passed into the request) by involving MSW in the unit test is inefficient, nor it's efficient to assert these implementation details in integration tests. A better approach is to have a trivial unit test doing this job.

  • @PaulSebastianM
    @PaulSebastianM 4 місяці тому

    23:44 I find the IBAN validation API adapter a bit too complicated. You shouldn't need a closure to cache the IBAN to be validated. You could just create an Adapter class or object that would contain IBAN related functions like validating an IBAN, extracting encoded information from that IBAN and so on. This would mean less mallocs to just validate an IBAN. Just have a singleton adapter and functions you can directly call on it, like `validateIBAN(iban: string)`.

    • @niksumeiko
      @niksumeiko 4 місяці тому

      The closure leaves an opportunity to pass an argument when the adapter is for mutations: // Adapter factory function createAdapter(options) { ‎ ‎ return (x) => { ‎ ‎ ‎ ‎ // do communicate with an outside world ‎ ‎ }; } // Use Case const useCreateTodo = () => { ‎ ‎ const factory = useAdapterFactory(); ‎ ‎ const mutation = useMutation({ mutationFn: factory() }); ‎ ‎ const [formValues, setFormValues] = useState<FormValues>(); ‎ ‎ const handleSubmit = () => { ‎ ‎ ‎ ‎ const result = await mutation.mutate(formValues); ‎ ‎ }; };

    • @niksumeiko
      @niksumeiko 4 місяці тому

      Plus, the closure allows passing the request (a method that communicates to the outside world). This makes it easy to write a unit test for such an adapter because a fake request can be provided.

  • @Cerebradoa
    @Cerebradoa 4 місяці тому

    I've discovered the same architecture, in the same way you did. And, by experience, do not reuse code between handlers. There is nothing wrong on having copied/pasted code. Keep in mind modifications will come per feature, so, probably, this code will need to evolve independently, and the duplicated code will not be duplicated any more.

  • @TechExcellence
    @TechExcellence 5 місяців тому

    Here's a link to code demo: github.com/javisan81/hierarchy

  • @jupahefi
    @jupahefi 5 місяців тому

    Thank you for sharing this perspective on microdecisions in software engineering! The concept of making small, specific decisions rather than tackling problems overly complexly really resonates with me. I believe this minimalist approach can lead to cleaner, more maintainable, and easier-to-understand code. Definitely something to consider in a product!!! I see Agile in action here, as it aligns well with the iterative and incremental approach of microdecisions.

  • @xxXAsuraXxx
    @xxXAsuraXxx 5 місяців тому

    so you went from Controller -> Service -> Repo to Controller -> Handler -> Service -> Repo xD great

    • @Wfmike
      @Wfmike 4 місяці тому

      Services are only introduced when it is DRY. Instead of giant ball of mud where anything goes.

  • @PaulSebastianM
    @PaulSebastianM 5 місяців тому

    He didn't invent VSA. He formalized it. VSA is described in the Clean Architecture book by that old guy, uncle Bob or something like that. 😅 Joke aside I don't know for sure if it's even older than that or who's described the idea first.

  • @revillsimon
    @revillsimon 5 місяців тому

    Fantastic presentation, thank you so much for putting this together. Great examples in a real world scenario. Very clearly demonstrated the pitfall of relying on coverage, and the confidence you can get by utilising mutation testing. I’m definitely going to give Stryker a go in my projects.

  • @wazum
    @wazum 5 місяців тому

    Thanks for the great talk and answers to my questions!

  • @TechExcellence
    @TechExcellence 5 місяців тому

    Here's the link to the code demo github.com/dmoka/MutationTestingMeetup

  • @havefun5519
    @havefun5519 5 місяців тому

    Thanks for your video and GitHub demo project, this is what WE(I believe WE not just me) want, a real-life app component TDD step by-step.

  • @Helen-99
    @Helen-99 6 місяців тому

    Great talk Jonas, thanks for the explanation!

  • @humaabbasi7373
    @humaabbasi7373 6 місяців тому

    Enjoy the entire session. Learn so much. It increase my knowledge about clean architecture

  • @toobaabbasi-j1n
    @toobaabbasi-j1n 6 місяців тому

    It was amazing session

  • @kamranabbasi4360
    @kamranabbasi4360 6 місяців тому

    Superb

  • @anastasiaIvanova9
    @anastasiaIvanova9 6 місяців тому

    Amazing session!!

  • @ahsenabbasi6153
    @ahsenabbasi6153 6 місяців тому

    Great Explaination.

  • @saadabbasi2890
    @saadabbasi2890 6 місяців тому

    Excellent talk and demo.

  • @simonpotier5795
    @simonpotier5795 7 місяців тому

    Pierre really is the GOAT

  • @anastasiaIvanova9
    @anastasiaIvanova9 7 місяців тому

    Amazing discussion, thanks guys!

    • @TechExcellence
      @TechExcellence 7 місяців тому

      You're welcome, thanks for joining the discussion :)

  • @m1croN1337
    @m1croN1337 7 місяців тому

    Great presentation! Jimmy mentions on 59:00, that they've built a "Unit of work" for a data storage that does not support it out of the box. Are there any examples available online?

  • @momedalhouma14
    @momedalhouma14 7 місяців тому

    It was an interesting session, hope you can make a next one as a following session with practical part(implementation wise)

    • @TechExcellence
      @TechExcellence 7 місяців тому

      Thank you, that's a great suggestion 🙌

  • @dzepp91
    @dzepp91 8 місяців тому

    Hello people, great video . Why is the validation of the isbn in the application side , is it not part of the business domain?

  • @EddieStanley-u4p
    @EddieStanley-u4p 8 місяців тому

    I think a useful distinction is that unit tests should run in a single process. As soon as you've got multiple processes involved, things get slower, less deterministic and harder to debug.

  • @NitsanAvni
    @NitsanAvni 8 місяців тому

    I love the meta discussion about learning!

  • @luclekene7362
    @luclekene7362 9 місяців тому

    always a pleasure to follow you Michaël Azerhad

  • @TechExcellence
    @TechExcellence 9 місяців тому

    Refactoring example: github.com/jbrains/replace-singleton-with-collection-example

  • @momedalhouma14
    @momedalhouma14 9 місяців тому

    Thank you for the session, it was easy for me to understand, real example in the language i know (java).

    • @TechExcellence
      @TechExcellence 9 місяців тому

      You're welcome @momedalhouma14 , glad you found it useful!