Software Engineering is Overwhelming

Поділитися
Вставка
  • Опубліковано 22 гру 2024

КОМЕНТАРІ • 118

  • @ankushbhardwxj
    @ankushbhardwxj 4 роки тому +130

    Hussein, you're the person who made me fall in love with backend engineering.

  • @vigneshj
    @vigneshj 4 роки тому +11

    This is the best advise/idea I could have received now. I was confused, frustrated and trying too hard learn things that I don't need in a very short amount of time. Now, I know I need to learn what is required at my own pace starting by breaking down things into simple things. Thank you so much for this.

  • @jithin_zac
    @jithin_zac 4 роки тому +13

    21:00 that's me trying to fix a bug. I used to spend 12-15 hours continuously trying to fix a bug. I recently started taking breaks as you suggested which helped me in looking the problem in a different way and then finding the solutuion.

  • @gwulfwud
    @gwulfwud 4 роки тому +14

    Brother, you're an inspiration. Thank you for these videos

  • @vinny142
    @vinny142 4 роки тому +12

    Bugs: TEST. Unit tests, integration tests, any kind of tests. Write tests. Just do it. Seriously, write tests. And if you don't want to: do it anyway.
    these days you can use docker to simulate entire client-server setups. Do it.
    Reason:
    1. It makes you write better code. It just does, trust me on this.
    2. Use code-coverage. Not because you should get 100% coverage, but because you want to see if your tests have actualy run the code you wanted to test.
    3. Tests check that your code does what it is supposed to do when everything is ok, but... see point 3
    4. Tests ALSO check that your code fails in a sensible way when something is wrong. Why: see point 2; if your exception handling is not covered then your test is seriously incomplete.
    How does this help debugging:
    1. You can check te bugreport against the tests you run. The problem is most likely in that one bit of the report that the user did that your test did not.
    2. The thing that the user did to experience the bug is probably already a scenario in your test, or at least very close to it. You can copy/paste the most suitable test and modify it to what the user described. Then you can run it as often as you need to without having to click around, enter data etc etc. and making mistakes while doing it, which may make the bug not show up.

    • @JordannGeorge
      @JordannGeorge 4 роки тому +2

      "Then you can run it as often as you need to without having to click around, enter data etc etc. and making mistakes while doing it, which may make the bug not show up."
      good point!

  • @richie5769
    @richie5769 4 роки тому

    I’ve been searching for a channel just like this for a while now. Just pure backend, I’m so glad I found this.

    • @hnasr
      @hnasr  4 роки тому +2

      Welcome to the community

  • @cheebadigga4092
    @cheebadigga4092 2 роки тому +1

    Excellent video! I once spent a week trying to fix a bug which occured with my application calling from C# into a C library and the output (1 value out of a couple hundred values) was different from what I expected. The resolution was to tell C# that this value is supposed to be represented as ASCII number and not as the underlying byte value. I eventually boiled it down to the C library using ASCII values here and the underlying byte value there, so we had to look into the C code together with the guys who wrote the C code to get my C# representations right. Sometimes bug fixing takes up all your time and you get stuck in a certain mindset that won't cut it for the specific problem. But that's normal and we're all humans making mistakes like this all the time.

  • @vinny142
    @vinny142 4 роки тому +5

    Most annoying bug: A loadbalancer, a miscommunication and a burnout.
    I was entering a burnout during a project (but didn't notice, as few people do until it's too late) and while preparing to put the project live I discussed with the managed hoster that I wanted round-robin on the loadbalancer, but with sticky sessions. New connections to one of two webservers , but every clients stays on the same server untill a timeout of some hours of inactivity. I did this specifically because of Python sessions.
    So we went live and I uploaded the code and it worked! Yay! And then I made a change to the javascriptcode, recompiled, uploaded and it broke. Called the hoster to confirm tht all servers where up and yes they were. It remained broken for a few hours and magically started working again. Being half-dead from the burnout I blamed browsercache.
    Two days later a bugfix required a recompile,uploaded to both webservers and boom; website dead. A quick check confirmed that all code was correct and in place, but for some reason the loadbalancer was still serving an index.html that did not match the accompanying app.js. So I reverted the changes (this is why you should always upgrade by swapping directories, never overwrite files!) and everything worked again.
    Wut?
    So I called the hoster to confirm that the loadbalancer was set to round-robin. Yes it was set to round-robin, sticky sessions etc.
    This problem persisted no matter what strategy I used to upload the new version of the code. I started doing upgrades only in the middle of the night just so I would not disrupt product when when it would inevitable fail. And then I noticed something; The updates would work if there where pretty much no users on the servers.
    And then a little bell when *DING* in my sleepy brain and I wrote down "loadbalancer cache not per-session". I talkedto the hoster the next day and demanded that I get to talk to pretty much everybody who could spell the word "loadbalancer"untill Igot a guy on the phone who opened up the admin and said something along the lines of "that's odd" and I asked "what?" anda he said "Well you have two servers and the loadbalander caches per url so that would cause serious problems if somebody would press F5 while you are upgrading and one server has the new version of the code and the other has the old version."
    Yes it turned out that the loadbalancer would cache all requested URL's and serve them to everybody, even though the balancing itself was round-robin with sticky sessions. So when I updated one server and somebody would press F5, they would get index.html from one server and app.js from the other. The loadbalancer wuld just cache "index.html" and "app.js" regardless of the client andbackend it came from. And so every user got a bad combination of the two, for the many hour that the cache woud be active.
    I left that job soon after, just typing "build" still makes me nervous today.

    • @hnasr
      @hnasr  4 роки тому

      Yikes! That is nasty! What is worse than Caching , is caching that the app decides to do without your knowledge in your case the LB

    • @patrickprakash8
      @patrickprakash8 2 роки тому

      Whoo, I didn't know LB messes up this much. Really great insight to a bug

  • @MrDecasept
    @MrDecasept 4 роки тому +13

    Hi, Hussein could you do a video on how to become a software architect?

  • @javaprogramming7235
    @javaprogramming7235 10 місяців тому

    Day 4 🔥
    I really had a tough day today at work. Was being little upset but at the moment you said 13:15 take it easy, try to relax. I felt so good after that. Amazing content. Each day I am trying to rush toward completing my current course Zerotomastery nodejs course just to start with database engineering course from you. Really exited about that 🎉

  • @Some.real.human.
    @Some.real.human. 3 роки тому +1

    Hey man, just wanted to thank you for making these videos. I am beginning my career in software engineering and the reminder and reinforcement of first principles are always great and needed!

    • @hnasr
      @hnasr  3 роки тому +1

      All the best ❤️ stay hungry ! Thanks for your message

  • @viputdBeast
    @viputdBeast 2 роки тому

    7:01 : wow hussein nasser Sir is a gem of an actor!!!!

  • @joeyalfaro2323
    @joeyalfaro2323 3 роки тому

    I studied a at paint jobs as hobby. One day I read about guy in Arizona that sun burned his cars paint. After carwash water drops acted as tiny magnifine glass burned his clear coat. Clear coat layer that protects paint. Thicker layer helps buff scratches. Swirl marks on car are dirt sand in buffing pad.

  • @maximsemashko4232
    @maximsemashko4232 3 роки тому

    This all is so true. In most cases where i had the problem with the bug I couldn't fix, it boiled down to the first part of the speech - I didn't fully understand how this thing works. After I spent some time to envestigate it, try to draw the diagram, maybe even refactor the code - it all become obvious.

  • @ahmetyasarozer
    @ahmetyasarozer Рік тому +1

    Just to contribute to your awesome content: If you, my young friend, don't understand a text, a video, etc. just stop there, and remember that this is not your fault. You don't understand, because you don't have the enough knowledge, prerequisites, or the required foundation to digest it on the spot. So, take the preliminary steps, fill in the gaps, learn what those acronyms correspond to, etc. then resume from where you've stopped. This effort will take, say, an hour or two; but will save you years...

  • @ritas6971
    @ritas6971 2 роки тому +1

    Oh boy, I am so happy that I found your channel! Thank you for all the great amazing content =)

  • @sapientum8
    @sapientum8 3 роки тому +2

    When building software you are also limited by rules (or laws) of mathematics. For example, you cannot sort an array in faster than linear time.

  • @ayushagarwal4247
    @ayushagarwal4247 4 роки тому +6

    Can you give us a list of major first principles in software engineering that we should focus on?

  • @mrcrazyenough007
    @mrcrazyenough007 4 роки тому +1

    Assalam o Alaikum, My firm is forcing me to shift to Fullstack entirely, but backend and dev ops have a special part in my heart. And you have helped me a lot with it. You are a lifesaver Hussaien.

  • @owaisahmed8304
    @owaisahmed8304 3 роки тому +2

    Just drop all the payload that you have in your mind on us. You are amazing and I am loving to be educated by you!

  • @tobiowolawi5044
    @tobiowolawi5044 4 роки тому +1

    Honestly we have similar thinking.... Usually geeks and nerds just try to go for a technology or architecture just because it’s the trend and other people think it’s cool..... without thinking if it’s actually needed or why it should be used

  • @sagarkanojia
    @sagarkanojia 2 роки тому +1

    Loved the whole video. Thanks a lot Hussein!

  • @ponzicarlo2842
    @ponzicarlo2842 4 роки тому +3

    Great content as usual. I love you anti-buzzwords rants while also keeping an eye on what is valuable. Keep it coming Hussein.

  • @CodeCatProgramming
    @CodeCatProgramming 4 роки тому +1

    You’re exactly correct! I hate reading some documentation because it’s all fluff

  • @ShinobiEngineer
    @ShinobiEngineer 4 роки тому +1

    So many truths condense in one video... KUDOS! 👏🧐

  • @amsterdenko9854
    @amsterdenko9854 3 роки тому +2

    One of the most interesting bugs I faced was time-dependent bug, that I could reproduce only in a specific hour of the day. So what I do in such an interesting case? I'm trying to hear my intuition and colleagues. And it helps. So the product owner said, that we have different hours and countries. So I thought maybe if a bug can't be found, maybe that's not me stupid, maybe I just searching the wrong place? But no. The place is correct (code module with the only single responsibility, no ambiguity). So, maybe I'm searching the wrong... time? And it was correct. I listened to the product owner, his ideas were like a sign of fate. That's why I'm in love with software engineering and debugging. I'm feeling like Sherlock Holmes and my tasks are mysteries. That's awesome!
    If you are stacked with the bug. Take it easy, relax. And stop. Your brain is searching. Just look at the problem from scratch. Your brain like a machine learning system will prevent you from going to the wrong places where you already traveled. More on that. Wrong places are part of right places! Errors are your friends, they are part of success.

  • @peterlacza995
    @peterlacza995 3 роки тому

    Remek videó! Taps: 400 Ft 👏

    • @hnasr
      @hnasr  3 роки тому +1

      Thank you 🙏

  • @nelsonbravo4076
    @nelsonbravo4076 3 роки тому +1

    great video, it's really hard get to know the fundamentals, but it's a must do

  • @utsavshankar7480
    @utsavshankar7480 4 роки тому +8

    Man, This was literally what I was thinking one minute ago

  • @daisy17138
    @daisy17138 2 роки тому

    Not sure if UA-cam is listening to my mind. This is the exact video I needed this morning.

  • @MrDaniloko23
    @MrDaniloko23 4 роки тому +3

    Your videos are so clear and helpful, keep up with the awesome work! Thanks

  • @hendersonfernandes7378
    @hendersonfernandes7378 2 роки тому

    I love the way you explain it, Hussein! Thank you!

  • @moolipit
    @moolipit 4 роки тому

    The realest dev youtuber out there

  • @emonymph6911
    @emonymph6911 4 роки тому +2

    Can you make a playlist series where you talk about the standards you know? Maybe keep it to one topic per video e.g. something like your websocket video it helped me understand why they exist and how they work. Thank you!

  • @abdullahAboelkhair
    @abdullahAboelkhair 2 роки тому +1

    Thanks eng Hussein, yours from egypt

  • @davidsalleyezonme1283
    @davidsalleyezonme1283 4 роки тому

    Great talk.
    So all it starts with a "Why"

  • @descartes3338
    @descartes3338 2 роки тому

    Beautiful video man! Much love

  • @benmoyal6107
    @benmoyal6107 Рік тому

    You are the man! thank you for all the knolege that you hsare with us!

  • @yolotalkspodcast
    @yolotalkspodcast Рік тому

    I love how you speak the truth about people in this industry using buzzwords without knowing what they are talking about. The overuse of EF comes to my mind for instance 😂

  • @muhammaddavatgar4973
    @muhammaddavatgar4973 3 роки тому

    tnx for the book i had trouble with finding a resource to learn design patterns
    love you sir

  • @veerabalajayaraj8037
    @veerabalajayaraj8037 3 роки тому

    Mannnn You are awesome, It's really hard to get a guide like you!

  • @sharthakghosh970
    @sharthakghosh970 4 роки тому +2

    wow, that screen saver tidbit, never would have crossed my mind :D

  • @jacobusstrydom7017
    @jacobusstrydom7017 4 роки тому

    As always, awesome video. It is an damn overwhelming this to get into. Thanks.

  • @akshayaghera8123
    @akshayaghera8123 4 роки тому +2

    I know there is no way we can predict the future or silver bullet in our area, but one simple question how to pick up better tech. like for front end there is react but after 7-8 year there could be another framework, should we try every new thing, which I think is lot overwhelming sometimes.

    • @rafatmunshi3572
      @rafatmunshi3572 4 роки тому

      Same question for me

    • @vinny142
      @vinny142 4 роки тому +4

      My advice:
      1. Learn things you already like. Don't try to force yourself to learn react just because it's popular. If you don't like how react works, you're never going to have fun working with it, and why waste your life doing something you don't like?
      2. Don't follow the hype. Most new techs ar here for a day and gone tomorrow.
      3. Accept that nothing is for ever, both because languages simply "die out" (PHP was huge a few years back, now Python is much more popular) and because you learn and grow. We all thought MySQL was an excellent database back when we did not know what transactions where, or PLPython or GIST, PITR, binary replication. Once we learned that we moved to a proper database like PostgreSQL:-)
      4.Job availability. I get asked to apply for JAVA jobs a lot. It pays 100k a year and I get a Tesla (and a macbook pro, asif that means something...) but I don't speak JAVA at all. Now, if I wanted that job, I could learn Java and get to work for a company that cannot read linkedin profiles. But I'd rather work with a company that is willing to teach me Rust an is willing to invest in my personal development, even if I have to take a bus to work.
      In the end, it's about learning somthing that you like, so you will be good at it and have fun doing it.
      It is *ALWAYS* good to look at new technologies just so you know what it is about and if you like it;go for it. But if you are like me and you like Vue and not react, then just forget React and look for a vue job. If you go for a job in something you don't like,you'll never be happy.

  • @akshayaghera8123
    @akshayaghera8123 4 роки тому +3

    You mentioned serverless in your talk, can you suggest some good course or book which explain fundamentals not just lamda functions, Thanks !

    • @hnasr
      @hnasr  4 роки тому +3

      I suggest follow Yan Chui he is the goto guy when it comes to serverless, I think he has a course too
      medium.com/theburningmonk-com/all-my-posts-on-serverless-aws-lambda-43c17a147f91

  • @ArunPanchareddy
    @ArunPanchareddy 4 роки тому +1

    You are star 💫 ⭐️ Hussain

  • @pouriaseyfi7287
    @pouriaseyfi7287 4 роки тому +1

    جانا سخن از زبان ما میگویی ❤️
    It is a persian poem
    from HAFEZ
    Means:
    My dear, you speak on my tongue

  • @amarj5899
    @amarj5899 4 роки тому

    You nailed it, Period.

  • @coolbuddy2405
    @coolbuddy2405 3 роки тому

    Hey Hussein, how to go about learning these first principles. Should I just pick something and browse through the internet to find more information about it or are there any books that you recommend to explore these principles.
    Can you help me with how to go about learning these.

  • @samueln5506
    @samueln5506 Рік тому

    My big takeaway is here: "Technology is not going anywhere! it's gonna be there to morrow and then. Learn one thing at time, just take it easy."

  • @dcn4lyf
    @dcn4lyf 4 роки тому +2

    Hi Hussein! I am a network engineer coming into software development. I chose Backend development because of my background as a Network engineer. any advice pls.

    • @hnasr
      @hnasr  4 роки тому +2

      I think it is a great transition, focus on communication protocols and how to build scalable backend communication with TCP/ UDP or HTTP, gRPC since you are a network engineer your skills will prove very useful in this path
      Watch my backend video to learn more

  • @lpw8480
    @lpw8480 4 роки тому +1

    do you have any course on system design? if not please make one lol, you explain things very well

    • @hnasr
      @hnasr  4 роки тому

      I have a playlist with all my system design videos check it out
      ua-cam.com/play/PLQnljOFTspQXSevtRqvMNycWfHM7cXc3d.html

  • @alirmaity1570
    @alirmaity1570 4 роки тому +1

    Love ur content 💕💕

  • @mabroorahmad2182
    @mabroorahmad2182 3 роки тому

    You are so true!

  • @ayasaher2653
    @ayasaher2653 3 роки тому

    As a junior-med Backend Developer.
    you mentioned that anyone should learn the basics of the fundamentals.
    how can i do that?
    what are the topics?
    what are the resources?

    • @hnasr
      @hnasr  3 роки тому

      This video might help ua-cam.com/video/V3ZPPPKEipA/v-deo.html
      Also backend.husseinnasser.com for more resources

  • @moatazhamadi7308
    @moatazhamadi7308 4 роки тому

    hussien you have inspired me to become a software engineer and i'm planning to major in it, the problem is that i dont like math at all ,,any advice for me?

  • @elmehdisaniss2731
    @elmehdisaniss2731 4 роки тому

    Thank you very much for this video. Very informative and guiding. What is your specialty and what to you do exactly in your job ? I am specialised in systems and networks can I change to do what you do ? I want to learn all the stuff that you know.

  • @AlaminIslam-hi8dl
    @AlaminIslam-hi8dl Місяць тому

    I fixed my bugs after 14 days

  • @tjalferes
    @tjalferes 3 роки тому

    Take it easy.

  • @dougcensorabner
    @dougcensorabner 3 роки тому

    Why do you choose backend vs front end

  • @supersu6138
    @supersu6138 3 роки тому

    Make videos on ur speciality GIS i dont know a thing about it

  • @upengan78
    @upengan78 4 роки тому +1

    Thank you sir 🙏💪

  • @genuineprofile6400
    @genuineprofile6400 4 роки тому

    Take it easy. You too man.You forgot one thing. Humility.

  • @blitzer658
    @blitzer658 4 роки тому +1

    انته معلم
    I wanted to ask you, you seem to be passionate about the field, which is a rarity,
    Do you think one can get into the industry on pure hobbyist projects ?

    • @hnasr
      @hnasr  4 роки тому

      Yes I am sure of it, of you are truly passionate you will just do it for fun instead of looking at it as a job that you have to do.

  • @kamranhossain6956
    @kamranhossain6956 4 роки тому

    Nice explanation. Love it.

  • @upendrasinghkarmiyal7684
    @upendrasinghkarmiyal7684 4 роки тому +1

    Great content 🔥🔥

    • @hnasr
      @hnasr  4 роки тому +1

      ❤️

  • @krishna.g9892
    @krishna.g9892 3 роки тому

    Atlast found a real gem❤️💎🙃

  • @shruh493
    @shruh493 4 роки тому

    Thank you so much!

    • @hnasr
      @hnasr  4 роки тому

      Glad it helped!

  • @xivi644
    @xivi644 4 роки тому

    you are right

  • @Çalhanoğluuuu
    @Çalhanoğluuuu 4 роки тому

    Top class catchy explanation.. Well done

    • @hnasr
      @hnasr  4 роки тому

      Many thanks!

  • @Mohamedtarek-qz2zj
    @Mohamedtarek-qz2zj 4 роки тому

    you're a good guy

  • @mohameddiaa3037
    @mohameddiaa3037 4 роки тому

    I acutely copied that but it's helpful while learning and dubging .
    When learning, your mind will consistently switch between focus mode and diffuse mode. Focus mode occurs when you are consciously focusing on learning, reading, watching videos, or working on a project. Diffuse mode occurs subconsciously, at times when you are not actively learning, such as when you’re doing the dishes, exercising, or sleeping. In this state, your mind goes about the business of connecting what you have been learning to the other things you know. This is where breakthroughs happen.
    All article in section growth mindset
    www.theodinproject.com/courses/web-development-101/lessons/gearing-up

  • @wassim5622
    @wassim5622 4 роки тому

    what a great video !!

  • @abhishek-agarwal
    @abhishek-agarwal 4 роки тому

    What technologies do these logos represent in the thumbnail: white rabbit, hammer in fire and the one below rabbitmq

    • @hnasr
      @hnasr  4 роки тому +1

      The hammer is Vulcane an HTTP/2 REST API with push and white rabbit is Varnish a reverse proxy caching layer, and the one below rabbitMQ is HAProxy which is a proxy

  • @palaniappanrm6277
    @palaniappanrm6277 4 роки тому

    Thanks for this bro

    • @hnasr
      @hnasr  4 роки тому

      Any time

  • @elmokhliss4852
    @elmokhliss4852 4 роки тому

    Thanks

  • @ahmedkhudhair8035
    @ahmedkhudhair8035 4 роки тому +2

    Hussain , can explain algorithms and data structure

  • @andredias5061
    @andredias5061 3 роки тому

    is it too much to ask for a new series covering those few fundamentalls you talked about in the vidoe?
    I know you already have begginer, intermediate and advacnced playlists, but I'm not sure what are those fundamentals, even though I'm almost finishing my CS degree.......

  • @bhushanmulmule7885
    @bhushanmulmule7885 4 роки тому

    well said!

  • @abdullahAboelkhair
    @abdullahAboelkhair 2 роки тому +1

    i wish i heared you saying laravel one time😢

  • @IgorRoztr
    @IgorRoztr 2 роки тому +1

    You actually can apply all these rules to life, in general xD

  • @Luxcium
    @Luxcium 3 роки тому

    Why people don’t put them back on the mic 🎙 the screws that make it look bold and Viril instead of bald and emasculated...

    • @Luxcium
      @Luxcium 3 роки тому

      haha you do a great work sorry for my rants

  • @usamatahseenulhaque9125
    @usamatahseenulhaque9125 4 роки тому +1

    How can i be as knowledgeable as you

  • @iqbalhonnur4451
    @iqbalhonnur4451 4 роки тому +1

    Saif Ali Khan teaching backend engineering

  • @abdelrahmanmostafa9489
    @abdelrahmanmostafa9489 Рік тому

    hi

  • @doublehelix_5674
    @doublehelix_5674 4 роки тому

    I just wanna smash this like btn

  • @highvis_supply
    @highvis_supply 4 роки тому

    pssshhh, my 5G AI mixed reality cloud IoT computer vision OCR QR lector is so much more than just a scanner

  • @atharva1237
    @atharva1237 3 роки тому

    Any students here?

  • @KangJangkrik
    @KangJangkrik 4 роки тому

    "Software Engineering is Overwhelming"
    Do you know Physics Engineering?