My Process of Designing and Architecting Software

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ส.ค. 2024
  • In this video, I go through my process of how I design and architect full software from A-Z. This is part of a Twitter thread that you guys seem to enjoy so I decided to make a video on the topic. Although the spec I generate is usually Backend oriented this is applicable for all software.
    Twitter thread
    hn...
    🎙️Listen to the Backend Engineering Podcast
    husseinnasser....
    🏭 Backend Engineering Videos
    backend.hussei...
    💾 Database Engineering Videos
    • Database Engineering
    🏰 Load Balancing and Proxies Videos
    • Proxies
    🏛️ Software Archtiecture Videos
    • Software Architecture
    📩 Messaging Systems
    • Message Queues & PubSu...
    Become a Member
    / @hnasr
    Support me on PayPal
    bit.ly/33ENps4
    Stay Awesome,
    Hussein

ความคิดเห็น • 119

  • @andrij1922
    @andrij1922 3 ปีที่แล้ว +68

    I try to watch at least one video per day from Hussein. Sometimes I fail, I watch more.

  • @SirVib
    @SirVib 3 ปีที่แล้ว +48

    "Don't think to write, write to think." 👌👌

  • @dawid_dahl
    @dawid_dahl 3 ปีที่แล้ว +81

    This is why I’m not afraid that robots will take my software development job anytime soon.

    • @hnasr
      @hnasr  3 ปีที่แล้ว +44

      It is extremely creative job, AI can automate certain repetitive tasks but can’t do the innovative part.

    • @BasharAlkhalili
      @BasharAlkhalili 3 ปีที่แล้ว +6

      They can dance though! th-cam.com/video/fn3KWM1kuAw/w-d-xo.html

    • @fahmiirfan6923
      @fahmiirfan6923 3 ปีที่แล้ว +2

      @@hnasr maybe, not yet? 🙃

    • @AwesomePikachu808
      @AwesomePikachu808 2 ปีที่แล้ว +3

      It would lead to the Butlerian Jihad and robots being banned and replaced by mentats. Already happened in Dune.

  • @arnabganguly
    @arnabganguly 3 ปีที่แล้ว +60

    I cannot believe why i found this channel this late, it feels like sitting on gold
    By that i mean it actually hurts😂

    • @EmileAI
      @EmileAI 3 ปีที่แล้ว +1

      Same haha and it's been 3 weeks
      Still much gold hahaha

    • @love.ly.
      @love.ly. 3 ปีที่แล้ว +1

      I know right, so much content

    • @AllenLSY
      @AllenLSY 3 ปีที่แล้ว +1

      Hussein is a principal engineer. He mainly talks about GIS system, database, network protocols, and some others. I actually feel he started to work for his TH-cam channel full time now.

  • @FlaviusAspra
    @FlaviusAspra 3 ปีที่แล้ว +2

    There are two approaches and many shades to design: top-down (uml, waterfall) and bottom-up (exploratory).
    I do bottom-up a few hours or days, then draw some uml, then go back to the code and repeat the cycle.
    The bottom-up first helps to get the ideas out, like you said "write to think". Yet still, doing some diagrams, writing down some architectural principles, helps keep a straight direction, without zigzaging in your decision making too much.
    It's a dance. Top-down helps with focus, but bottom-up (the details) are whispering in your ear what is right, and in a clean architecture the details always win.
    Do not overdo the diagrams, do "just enough" for you and the team.
    I'm a CTO in e-commerce.

  • @shingwong9118
    @shingwong9118 3 ปีที่แล้ว +4

    I learned so much from watching your videos than spending hours on documentation and researching, great content!

  • @karanmittal3113
    @karanmittal3113 3 ปีที่แล้ว +14

    Hey Hussein. Can you share one of your designs including complete pack of docs from where you started and how the design evolved through out? Obviously if this does not conflicts with any of the policies :)

  • @indrajeetzzz
    @indrajeetzzz 3 ปีที่แล้ว +6

    Damn!! I'm currently reading "Teach Yourself to Think" by Edward de Bono.
    And I must say it really correlates to how you think.
    Great stuff btw, Kudos!!

  • @abhinav.sharma
    @abhinav.sharma 3 ปีที่แล้ว +4

    This is the best explanation on how to write software.
    Hussein rocks! 🚀

  • @hiramishra4788
    @hiramishra4788 3 ปีที่แล้ว +1

    Literally! no one has ever told to subscribe so beautifully

  • @jitpackjoyride
    @jitpackjoyride 3 ปีที่แล้ว +2

    If you can think of more of these types of videos with similar processes, please make more of these videos. They help tremendously because I had less than 2 years of industry experience before starting my own company.

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      glad its helpful Ajit!

  • @NiranjanNanda
    @NiranjanNanda 3 ปีที่แล้ว +5

    Sounds more like “Event Storming”
    Thanks for sharing.

  • @elantidot
    @elantidot 3 ปีที่แล้ว +17

    Hola Hussein, 1st with love. :)

    • @hnasr
      @hnasr  3 ปีที่แล้ว +3

      🥇

  • @morganfree100
    @morganfree100 3 ปีที่แล้ว +3

    I would love to see doing a full series on this and definitely design pattern series

  • @abhishekkashyap7195
    @abhishekkashyap7195 3 ปีที่แล้ว +2

    It makes a lot of sense.
    I would really love if you can make a video to architect a demo software using this technique.
    Thank for consistently uploading awesome contents.

  • @ajitfawade
    @ajitfawade 3 ปีที่แล้ว +4

    Great Video.
    Can you please create one more video to explain the same thing by taking a specific use case like e-commerce/e-learning/social media app?

    • @snkeze9
      @snkeze9 3 ปีที่แล้ว

      I would equally love to see such

    • @teluguforyou3992
      @teluguforyou3992 3 ปีที่แล้ว

      Mee too

  • @saurabhsharma7123
    @saurabhsharma7123 3 ปีที่แล้ว

    You are a great computer science teacher. I now enjoy learning the concepts, which I despised in my University 😊

  • @andyash3337
    @andyash3337 3 ปีที่แล้ว

    You are the coolest speaker I've ever seen. Keep going!!!

    • @hnasr
      @hnasr  3 ปีที่แล้ว +2

      Thanks! 😃

  • @jitpackjoyride
    @jitpackjoyride 3 ปีที่แล้ว

    This is such an amazing video, thank you always Hussein

  • @matthewcarpenter3752
    @matthewcarpenter3752 3 ปีที่แล้ว +1

    Great work Hussein! Big fan of your videos... Would really love to hear your thoughts on network storage / cluster storage technologies!

  • @BiancaAguglia
    @BiancaAguglia 3 ปีที่แล้ว +1

    This was a very useful video, Hussein. The only thing that would have made it better is some visual samples of drafts you created through each step of the process. Or, better yet, maybe you'll do a livestream of one of your work sessions. 🙃
    One question, please: do you have any book/textbook recommendations for software engineering? I have very little programming experience and I would like to understand first principles, patterns, architectures, and best practices related to designing and building software. Thank you.
    Happy New Year to you and your loved ones. May 2021 be infinitely better than 2020. 😊

    • @hnasr
      @hnasr  3 ปีที่แล้ว +2

      Thank you Bianca for your wishes! I agree some examples would have been great, alas I can’t show any

    • @BiancaAguglia
      @BiancaAguglia 3 ปีที่แล้ว +1

      @@hnasr No worries. Maybe some other time, in the not too distant future. 😊

  • @Joker200084
    @Joker200084 3 ปีที่แล้ว

    You’re right on time. I’ve been googling programmer notebooks and how to design software the last few days.

  • @mtnrabi
    @mtnrabi 2 ปีที่แล้ว +1

    Great content.
    Would love if you attached an example for how the structure of those files look (bullet points? Plain text and paragraphs?..)

  • @alexdellaragione3403
    @alexdellaragione3403 3 ปีที่แล้ว

    Love your content Hussein, keep it up!

  • @AmandaFernandes-ry4gq
    @AmandaFernandes-ry4gq 3 ปีที่แล้ว +1

    Great content. Will use the tips for sure!

  • @teluguforyou3992
    @teluguforyou3992 3 ปีที่แล้ว +2

    I big big fan of you sir great contents😍. Please make a video on daily basis of Backend Software engineer in a industry

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      😍 thank you!

  • @jl_woodworks
    @jl_woodworks 3 ปีที่แล้ว

    Awesome content! Crossing fingers for the BGP video.

  • @Vendettaaaa666
    @Vendettaaaa666 3 ปีที่แล้ว +1

    Back of the envelope ✉️ calculations. Can you please do a video on it? How to think in terms of this

  • @priyapanthi1828
    @priyapanthi1828 2 ปีที่แล้ว

    Loved it Hussein! Though the uml diagrams etc..I believe that they provide a universal standard of representing a software design. Though a standard is not successful if less people understand it. :D

  • @dinoscheidt
    @dinoscheidt 2 ปีที่แล้ว

    Would really love to see your version of a design document. Either mocked or redacted.

  • @bassemmansour3163
    @bassemmansour3163 2 ปีที่แล้ว

    a master piece!

  • @shrikrishnaumbare
    @shrikrishnaumbare 4 หลายเดือนก่อน

    Whenever I get depressed, I watch his video, it motivates me to have knowledge like him, to be like him

  • @suyashshrivastava596
    @suyashshrivastava596 3 ปีที่แล้ว

    I have a goal to watch all your videos.

  • @mrwerevamp
    @mrwerevamp 3 ปีที่แล้ว

    I've been trying to get better at this. I've really enjoyed using Invision Freehand as a tool to come up with my ideas. It's like an endless whiteboard that allows you to create blocks and arrows.

  • @ranjithsivanandham1927
    @ranjithsivanandham1927 3 ปีที่แล้ว +1

    I requested for this video long back

  • @a_k__
    @a_k__ 3 ปีที่แล้ว +1

    I think you have mentioned in the past that you are more of a visual learner. Can you share some of your favourite visual resources like YT channel that you personally use when it comes to tech and back-end development?

  • @thiagoscodeler5152
    @thiagoscodeler5152 3 ปีที่แล้ว +1

    Thank you for sharing your knowledge Hussein. Great video!!
    If possible, please make a video explaining when we should use an API Gateway instead of a reverse proxy in order to expose k8s services through a single endpoint (e.g. ambassador instead of haproxy or nginx). API gateway vs reverse proxy? Also what is the best API Gateway in your opinion?

  • @amritasingh9791
    @amritasingh9791 20 วันที่ผ่านมา

    this is great!! Can you please please illustrate with an example!!

  • @aliabdullahsadikov210
    @aliabdullahsadikov210 ปีที่แล้ว

    Thank you bro!

  • @therustguy10
    @therustguy10 3 ปีที่แล้ว

    Love you man! Love the way you ended this video....😂😂😂

  • @ayusharora2019
    @ayusharora2019 3 ปีที่แล้ว

    Super cool video!! Loved it

  • @ashiskar9747
    @ashiskar9747 3 ปีที่แล้ว

    Gold. Pure gold.

  • @nandomax3
    @nandomax3 3 ปีที่แล้ว +9

    I was studying uml this year and it was made for modeling objects, even the author says to not use it for architecture

    • @errrzarrr
      @errrzarrr 3 ปีที่แล้ว

      Uh?🙄

    • @errrzarrr
      @errrzarrr 3 ปีที่แล้ว

      It's not only for objects -those are class diagrams. They are many many other types of diagrams and definitely they help architecting and many other activities.

  • @IndomitableGamingPubg
    @IndomitableGamingPubg 3 ปีที่แล้ว

    Please make a video about an interview where they ask questions about a pseudo code first and then ask about it's architecture and design and also about extending the design

  • @kayeshparvez
    @kayeshparvez 3 ปีที่แล้ว +1

    Could you please design a simple system like a school manage system which will be microservice based. There are lots of system design in youtube like facebook, uber etc. But from those I can't get a clear concept as those designs are actually very big and doesn't change along with changing requirements and throughput demands.

  • @zhimingkoh1029
    @zhimingkoh1029 3 ปีที่แล้ว +1

    Hi Hussein! Do you have a sample version of these documents that we could reference from?

  • @mossaabkanzit9403
    @mossaabkanzit9403 2 ปีที่แล้ว

    Excellent video that showcases your thinking process around software architecture! How one can develop the right mindset & learn the right skills of software architecture ?

  • @Messirobben047
    @Messirobben047 3 ปีที่แล้ว +1

    Very helpful content. Love your accent :)

  • @alimolla1291
    @alimolla1291 3 ปีที่แล้ว +1

    Thank you so much, Hussein.
    If I want to be a better engineer in general what are your suggestions for me (Courses or Books)?
    I want to be a better software engineer, be able to design systems, and a good understanding of design and architecture. OOP.
    I have 7 years of coding mainly in JAVA, I like to move my career and understanding to the next level.
    Cheers,

  • @hobysmith9825
    @hobysmith9825 3 ปีที่แล้ว

    Very, very nice. Thanks for sharing that. :)

  • @devhipster
    @devhipster 3 ปีที่แล้ว +1

    I do Double Diamonds as design method to design my software

  • @mtexaneel3769
    @mtexaneel3769 3 ปีที่แล้ว

    Very useful... Very informative

  • @eunlimlee582
    @eunlimlee582 3 ปีที่แล้ว

    I love your video! Thanks

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      So glad!

  • @koskeller
    @koskeller 3 ปีที่แล้ว

    Thanks

  • @RmFrZQ
    @RmFrZQ 3 ปีที่แล้ว +1

    Hussein, you've talked about all sorts of software parts of the system, but how do you actually choose from all of those? Let's call them tools. There are multitude of them out there with different pros and cons, some are matured some are not enough, some have extra features some don't. And new tools with buzz-word names just keep appearing every month, so you can't possible *know* them all, or try them all out enough to be an expert.
    So how to deal with this infinite variety problem? Do you design the system out of your personal past experience and prefer tools that you are already familiar with, which could be ok in some cases, but not ideal?

  • @bassamry
    @bassamry 3 ปีที่แล้ว +1

    is that a katana on top of the book shelf?

  • @randomlife3050
    @randomlife3050 3 ปีที่แล้ว

    Hussein. Ke hal filhaal. Happy new year. Good content btw

  • @mubeenali5972
    @mubeenali5972 3 ปีที่แล้ว

    i want to know more about how can we systematically present the system design to the business partners. and what terms should i follow when it comes to business.

  • @dazzaondmic
    @dazzaondmic 3 ปีที่แล้ว

    Would you be open to making a video going through an example? Perhaps for a relatively simple software system. Also are there any resources online of anybody going through an example? Thanks

  • @TaiebBACCOUCH
    @TaiebBACCOUCH 3 ปีที่แล้ว +1

    Thank you for the informative video! for the diagrams, do you use c4-model? if not what do you think about it ? for actual documentation of the architecture, do you use a specific framework like togaf ? and could you please do a video illustrating what you mentioned in this video starting from a real world problem. Thank you

    • @hnasr
      @hnasr  3 ปีที่แล้ว +2

      Hey Taleb, I tried both I think they are fine but I tend to prefer simple writing and diagrams.

  • @shei69
    @shei69 3 ปีที่แล้ว

    Requesting a tutorial on Cloud Run on Anthos running Redis... Great Content

  • @raghugrinus4779
    @raghugrinus4779 ปีที่แล้ว

    Fortunately I do same thing!!!!

  • @akshaymattoo
    @akshaymattoo 3 ปีที่แล้ว

    Hi Hussein thank you for useful content as always. Do you have a sample of these documents

  • @aditibhatnagar6970
    @aditibhatnagar6970 3 ปีที่แล้ว +1

    Would you be able to share examples of these documents?

  • @neuodev
    @neuodev ปีที่แล้ว

    Why I feel that you are using the "waterfall" work flow 🙃 instead of Agile

  • @ashlyjustin4994
    @ashlyjustin4994 2 ปีที่แล้ว

    How do you start the process of understanding the fundamentals of some applications/ tech ? By reading books/ documentations or implementing it or by implementing the stuff or watching some videos.

  • @saggitt
    @saggitt 3 ปีที่แล้ว +1

    You mentioned strangely detailed description of what stakeholders want (like for a chat app whether we want to see that the message is read) AND then making architectural decisions based on that. These kinds of requirements will naturally pop up in dozens AFTER you build a prototype and then regularly during product development.
    Maybe you meant this, but I didn't catch it and for me it seems important that your architecture is flexible enough to support such kind of unforeseen requirements later. And if each such requirement will have to go through the same rigorous process with writing and all, you will be too slow in my experience. In many cases it is better to move fast to try many ideas and then refactor when you see that the ideas are good.

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      It might not have been cleared in my video but The approach can be applied to both agile and waterfall, that is why I mentioned the min-ship or (MVP) which will need to be written and finalized first this will have the least amount of needs to get done for maximum impact.
      The rest of holistic details are for the overall project and might take way more time to finalize and it will be a continuous improvement process. Once MVP is deployed the feedback will loop back and improve the design documents.

  • @batman4797
    @batman4797 3 ปีที่แล้ว

    is it possible to show us examples of the documents? :P

  • @mokhosh
    @mokhosh 3 ปีที่แล้ว

    Sure, Subscribed!

  • @jjmayank
    @jjmayank 3 ปีที่แล้ว

    Can we maybe get an example/ old project data if its not confidential? would help a lot! :>

  • @inheritedarts
    @inheritedarts 3 ปีที่แล้ว

    Man this is the channel needs some real attention ... the youtube is filled with stupid "How to make a todo list" or making a "Instagram Clone" ... this is some real information which you even need time to digest.

  • @IndomitableGamingPubg
    @IndomitableGamingPubg 3 ปีที่แล้ว

    I love your videos. They are very informative

  • @arundavid119
    @arundavid119 3 ปีที่แล้ว

    Hi. It was really helpful.
    How long does the entire design process take? And a rough time frame for each step?

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      For MVP about 3-4 weeks, for the whole process takes many months and will be continuously evolved once the MVP is deployed.
      I miss the waterfall days where we used to spend 2 months to do the spec once and go to work..

  • @fasihussaini8554
    @fasihussaini8554 3 ปีที่แล้ว

    Damn Agile development ftw 😂. But yeah even agile developers need some documentation during sprint sessions.

  • @jackysoth7124
    @jackysoth7124 3 ปีที่แล้ว

    Hey my friend, just curious if you're self-employed or working for employer?

  • @hcsabai1224
    @hcsabai1224 3 ปีที่แล้ว

    What about DDD? Do you use it during or before design phase?

  • @danubiomuller
    @danubiomuller 3 ปีที่แล้ว

    Some people are afraid of ghosts and stuff. I'm just afraid that this guy will someday stop making videos and mentoring me.

  • @gopimr2
    @gopimr2 3 ปีที่แล้ว

    Can we get a sample documents to understand more?

  • @uaudith
    @uaudith 3 ปีที่แล้ว

    good content :3

  • @chitranshsaxena59
    @chitranshsaxena59 ปีที่แล้ว

    2:55 neuroscience X engineering

  • @mbehboodian
    @mbehboodian 3 ปีที่แล้ว

    What about the agile thing? If I write EVERYTHING down, ask stakeholders about EVERY possible case, ask them EVERYTHING that they might need in future, thinking about all the complexity and changes that may arise in 2-3 years later, etc., I suppose this will take forever to design that software. What do you think? Isn't it the old waterfall approach?
    Btw, I'm not debating on these approaches, I have issues myself understanding the boundaries between Agile an waterfall. Precisely, Where's the design and architecture step in Agile do you think?
    I'm searching for answers to these questions for a while and literally I couldn't find anything. So any help is appreciated 🙂

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      Good point, the process I describe can be applied to both agile or waterfall
      I talk about agile vs waterfall here
      th-cam.com/video/XGOxLyWFfl0/w-d-xo.html

  • @jugsma6676
    @jugsma6676 3 ปีที่แล้ว

    How's the PlayStation?

  • @devhipster
    @devhipster 3 ปีที่แล้ว

    Really great, we need a voice-chat on discord Hussein to talk more about thing related thanks for udemy course by the way I love it ,keeping on doing your great job
    #Good by 2020

  • @rafael.aloizio1769
    @rafael.aloizio1769 3 ปีที่แล้ว

    fuck, this channel is so fucking underestimate! how it is possible that he only have 90k subscribers and an avegare of 3-4k likes in his videos?

  • @HuapinChiu
    @HuapinChiu 3 ปีที่แล้ว

    這部影片好棒!讓我為你掌聲鼓勵 (購買金額:$30.00) 👏

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      🙏🙏

  • @nandomax3
    @nandomax3 3 ปีที่แล้ว

    I thought I was the only one to diagram architecture using Google slides hahahaha

  • @focusEngineered
    @focusEngineered 3 ปีที่แล้ว

    I disagree with you on the last point. Communication diagrams must be a UML components.

  • @tobbymarchal3140
    @tobbymarchal3140 2 หลายเดือนก่อน

    Is the real katana?

  • @venkatprasad2205
    @venkatprasad2205 3 ปีที่แล้ว

    LinkedIn id pls

  • @nghiemduonghung9750
    @nghiemduonghung9750 3 ปีที่แล้ว

    "Everyone on the engineering community knows that all these diagrams are bs"
    Seriously no joking here, these days people ask me to draw diagrams just for the sake of procedure and calculating the price. Most people just copy their pre made UML with little modification, more often than not you can't count on them when it truly matter, most likely not up to date, especially after people introduced AGILE and other bs to our engineer life, think that we can make better quality product in shorter amount of time. Nah, we can only make workable product with that amount of time, don't expect it to be well documented.

  • @haseeb9621
    @haseeb9621 8 หลายเดือนก่อน

    :)

  • @mohamedsaidalabed6981
    @mohamedsaidalabed6981 3 ปีที่แล้ว

    Please do Arabic videos!

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      No time :( I have been planning to do an Arabic channel for a while

  • @bernaridho
    @bernaridho 3 ปีที่แล้ว

    No concrete example of software design. No concrete example of software architecture.

  • @zenbum2654
    @zenbum2654 3 ปีที่แล้ว

    You used "architect" as a verb. I wish people would stop grammaring incorrectly.