What does larger scale software development look like?

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 พ.ย. 2024

ความคิดเห็น • 1.1K

  • @WebDevCody
    @WebDevCody  ปีที่แล้ว +648

    I didn’t expect this video to get that many views. I just wanted to make a video to give people who work solo or or on a smaller project more insight into a larger scale project. Your mileage may very. Every company does things their own way from what I’ve seen, and most companies have various teams that all work on their own sub systems and integrate with others.

    • @samsunforev1846
      @samsunforev1846 ปีที่แล้ว +33

      please make more videos like this.

    • @tor5515
      @tor5515 ปีที่แล้ว +22

      As a solo dev for a small business this video has been a huge boon :)

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

      Nah, man it's useful to have stuf like this ( BASICS ) in understandable English. That last part is important. Also, interesting to see what the "Zeitgeist" is in Enterprise Software Development, because what you outline here is what we are doing too. Getting major DEJA VU

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

      Waiting for more videos like this :) Thank you

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

      @@emmettkeyser1110 better than cloudformation imo

  • @MaJetiGizzle
    @MaJetiGizzle ปีที่แล้ว +1812

    As an enterprise developer myself, this is by far one of the best breakdowns of how enterprise software development works and I wish there was a video like this when I got my first developer job.

    • @smurrlawa
      @smurrlawa ปีที่แล้ว +12

      +1

    • @MaJetiGizzle
      @MaJetiGizzle ปีที่แล้ว +41

      @@lit22006 It sounds like you’ve never worked in enterprise if you can’t recognize an actual team structure in an organization, but please do enlighten me about what’s actually going on in such an environment if you’re so experienced in the matter.

    • @elliott8596
      @elliott8596 ปีที่แล้ว +19

      This is actually a terrible / antiquated way to handle development. Breaking out branches into dev/test/prod just creates this nightmare scenario where you're constantly managing the state of the branches and is very prone to error.
      A much better way is TBD with environment configurations and artifact promotion. This way you can "version" your software and control releases based off the build artifacts, instead of trying to maintain the state at the source code level through branches. Git is already versioned. You don't need to implement a branching strategy to add a needless abstraction around versioning.

    • @x2TruNation
      @x2TruNation ปีที่แล้ว +16

      @@lit22006This is literally enterprise level, whatever over-engineered heap of crap you have been involved with doesn’t make the cut, sorry

    • @WebDevCody
      @WebDevCody  ปีที่แล้ว +30

      @@elliott8596 isn't a lot of enterprise antiquated?

  • @redaelouahabi731
    @redaelouahabi731 ปีที่แล้ว +504

    Yes, you're correct. Startups may have lower complexity, but the underlying concepts and patterns remain consistent. This video is truly exceptional, highlighting this fact.

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

      Yeah, the concepts definitely apply to smaller startups as well, just at a smaller scale since you don't need to be as rigorous since it doesn't hurt as much when stuff breaks (compared to like some big company with 100M+ DAU where stuff breaking costs a ton).

    • @ValidatingUsername
      @ValidatingUsername 7 หลายเดือนก่อน

      Startups make features not projects.

    • @mahmoudaakil1564
      @mahmoudaakil1564 5 หลายเดือนก่อน

      merdat everywhere

  • @shubh-kr
    @shubh-kr 8 หลายเดือนก่อน +56

    Bro... it's as much real as it can be. It's THE BEST description of how different teams in 80% of the industry do their job. And you also covered rest of the 20% by including redundant systems, and multi layered prod systems (Production Microservices like architecture). Great stuff.👏

    • @shubh-kr
      @shubh-kr 8 หลายเดือนก่อน

      @WebDevCody I wish you could've also put this diagram in the description.

  • @svenbloem4153
    @svenbloem4153 ปีที่แล้ว +114

    Since the start of coding 2010 I was always on my own with solo projects as fullstack dev. I had always big questionmarks regarding those enterprise teams working together. Those 24 min of your video were so incredible eye opening to me and it made me a good feeling to finally understand how this works. Awesome work here Cody

  • @KuroManX
    @KuroManX ปีที่แล้ว +52

    Beginning of year I singned a simple VPS, the best choice I made so far, started learning linux, ssh, git hub actions, automatic deploy, git (for real), managing db, staging (my personal PC), production environment, nginx, and those things made me so more aware of how development works and how can I really deliver software as a product.

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

      Explanation of DevOps :)

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

      Where are you learning?

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

      which VPS did you buy and how much does it cost per month? For now I am using aws ec2(my 1 year free tier is done) and when I am done, I just stop the instance(I still have to pay for storage, but I dont have to pay for instance since its not running). I started last week only, so not sure how much its going to cost after month. I am thinking that it should be less than $1. If its more than $5 then I might just buy digital ocean droplet or something.

    • @Azyro777
      @Azyro777 11 หลายเดือนก่อน +2

      could you elaborate on that VPS? I do want to (more like "have to") learn those components. It might sound silly, but I came from old monolithic way and my responsibility are only for Dev side, which is outdated and now we Dev are required to also hands on the operation side.

  • @JosephAuslander
    @JosephAuslander ปีที่แล้ว +168

    This is epic. I've worked in enterprise environments for the last 10 years and this is by far the best intro explanation I have ever seen. Well done :)

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

      thanks man

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

      @@WebDevCody 20 years in the industry here - completely agree, 10/10 summary video.

  • @kennethweber2193
    @kennethweber2193 ปีที่แล้ว +19

    I am on a 5 man scrum team implementing robotics in software and this video holds pretty true. Depending on the scale of the company you find yourself in, that whole user interaction part can sometimes get absorbed by the roll of a pm and perhaps other individuals or teams, but this was a great summary of how things work.
    Great video.

  • @gundalaibatkhuu855
    @gundalaibatkhuu855 ปีที่แล้ว +12

    As a final year CS student, I am so grateful to have watched this before my first actual job. Thanks a lot

  • @Hescar1
    @Hescar1 ปีที่แล้ว +10

    As a SM this is a great for devs to understand why there's so much syncs and managment stuff or meetings. Enterprise will scalate like crazy were you can have like 100 teams trying to push features. Great video!

  • @kellychi22
    @kellychi22 ปีที่แล้ว +167

    As a web dev newbie who just came out of a coding bootcamp, this kind of content is super valuable since the teachers never really talk about this too much. I am so glad that I found your channel! This type of real world content is also rather rare on TH-cam, and I am looking forward to seeing more of this from you 😀

    • @af.tatchell
      @af.tatchell ปีที่แล้ว +7

      that was the worst thing about bootcamp

    • @TragicGFuel
      @TragicGFuel 8 หลายเดือนก่อน +1

      Bootcamp grad you say? Lemme underpay you real quick

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

    solid video; to make it more adequate and complex - Business Analyst is a must (partly overtaken by UI/UX designer here) and QA allocation in entire process; regardless the role inside organization - there is always BA being a system functional expert being able to present and negotiate options - customers in general have ideas and do not go into details since they are not technical, do not know system limitations; do not undestand full workflow scenarios; are not capable to have a holistic view, identify gaps and risks. Same goes with Devs - they don't have to understand entire functional scope of the system, to memorize or the details, or at least it is often not achievable due to e.g. rotation inside company. BA role is key to be a proxy; while UI/UX designer is a part of that process, by role definition, it is not only about interface design; but I believe the simplification here is that in most cases - BA and UX experts coexists where UX designer is more technical role (UI) focusing on workflow and visual aspect

  • @rhumedisi2783
    @rhumedisi2783 ปีที่แล้ว +13

    Thank you very much for this brillian discuss on how enterprise systems are developed and how enterprise teams work on large scale projects. This video is way more than a random video as you share a lot of insights into how large team are structured and how their projects are planned, developed and deployed. Quite a rare video on youtube. Thanks once again.

  • @carlosmspk
    @carlosmspk 3 หลายเดือนก่อน +1

    I've had only one professional experience with working with a bigger team and I have to say this video is spot on. Literally everything we did, we did exactly as explained in the video. The only thing I would say differed, is that we had no contact with users other than error logs on AWS, our client was pretty much 100% responsible for gathering user experience and send that our way, digested, so we could turn those into issues. We also didn't have automated smoke tests, we just had QA do those manually before releasing

  • @vladimirgorea8714
    @vladimirgorea8714 ปีที่แล้ว +16

    With 10+ years of enterprise web dev experience under my belt, i approve this. One thing you missed though are the many endless product team meetings. The flows you talk about here are happening in an ideal scenario. In reality there's a lot of big talks and "we're all a big family", feature rushes, egocentric people, pizza parties, "synergistic" in person meetings and not so much time actually writing good software. Btw, perhaps we should also open the topic of "cloud" costs. I've worked with one that started with gcloud and datastore and it turned into a hot mess that needed almost 1 year of refactoring and paying 10k+/month for infra alone

  • @Bigfe218
    @Bigfe218 ปีที่แล้ว +98

    Hey Cody, Love the content. I've worked professionally as an engineer for 13+ years amongst varies enterprises and this top tier content for helping dev's understand enterprise software life cycles! I will say, I'm surprised that a Business Analysts isn't sandwiched somewhere between your PM, Designer, and Client.

    • @WebDevCody
      @WebDevCody  ปีที่แล้ว +27

      Idk what a business analyst is, so I may not even be working deep enough in enterprise 😂

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

      @@WebDevCody Hahahahahaha

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

      Yeah in my company we have Business Analysts, Payment Analysts and Payment operations

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

      So many companies have replaced business analyst with this perverted concept of Product Manager entirely (to their peril imho) to the extent that those following "agile knockoff" as I call it don't know what BA's do. Where I've seen this, arbitrary rectangles in Figma replace proper documentation, diagrams, capturing of scenarios + use-cases, etc.
      You probably have worked deep enough Cody just at places where the bootcamp rectangle kids took over.

    • @walterclementsjr.5947
      @walterclementsjr.5947 ปีที่แล้ว +4

      when us devs can't keep up with requirements from clients, BAs be outhere meeting with them 8 hours a day and drawing all kinds of diagrams for us. coding comes easy after that. in smaller teams, BAs sometimes work as frontend dev/designer as well.

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

    Watching this put me in a state of anxiety.

  • @warren-cga
    @warren-cga ปีที่แล้ว +19

    We've been burnt multiple times using dev -> feature branch flow and I don't recommend my teams to do it. Now we always fork features from main, and work it up through the stages so that if we need to make a cut without some buggy feature we can and feel comfortable not leaking changes into prod. Our team also use a pre-prod environment to verify changes we release before they are done to make sure we have an exact replica of what prod will be/ or what it is, because staging may contain bugs that need to resolved. As you said multiple times it gets complex if your team is bigger or have multiple team working on solution spread across the organization. BTW. very good video, you got most of it clearly explained.

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

      It is pretty much abandoned as a process and the original git-flow author has disowned it as a defective way to collaborate! People keep finding git-flow though so he put a big disclaimer at the top of the page. They still keep recommending it!

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

      Trunk based is the way to go. Make small commits, deliver fast. Use feature toggle not to break prod.

    • @warren-cga
      @warren-cga ปีที่แล้ว

      @@ltbarcly I think once you search for git flow on Google one of the first thing that pop up is Atlassian's git flow recommendation/description of the process and there they branching from dev in there flow and i guess people just accept it because it Atlassian recommending it.

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

      @@ltbarcly Could you please explain what we should avoid ? I haven't experienced any large scaled project but i'm planning to work on some large scaled projects so I would like to know what I will encounter. Personally, I also use dev and feature branches because I heard it's one of most common way.

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

      Do you still have 3 enviornments? so you fork from the master branch, and merge into dev, if the feature is approved you merge that branch to staging which should be basically a copy of master and test it there, and then back to master?

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

    Finally! Somebody outlined how this process works in teams at different scales! Excellent video. Thanks for making it.

  • @dhananjaychoudhary7836
    @dhananjaychoudhary7836 ปีที่แล้ว +23

    This was amazing man. I always felt like some dots were missing in understanding the full picture.
    Thanks for helping me connect more dots.
    Happy Coding!!

  • @cas818028
    @cas818028 ปีที่แล้ว +26

    I was the Director of engineering at Byte for many years. Now the head of engineering at Sirge. Because we end up building products for enterprise businesses, the org it setup a bit differently. We have different business units that represent keys parts of the business. Accountings, Operations, Engineering, Marketing, Growth, Design, Sales, Customer Support/Success, just to name of few. When I run team I like to ensure that product is always representing the "What" we are going to build, and engineering is representing the "How". Product will normally work directly with design, along with customers, gaining feedback from surveying and customer interviews. Through the ideation cycles product will define that features/products we need to build next based on customer collected data. From their we have a series of meetings within an Agile/Scrum structure that allows us to carve our the user stories, functional requirements, point, then allocate to sprints. Thats just a high level. But my team sizes grow pretty large.

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

      Ah story points the arbitrary unicorn poop that even their creator has recanted on

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

      ​@@furycorpcan confirm. Story points never align with what Devs predict.

  • @ogbaxstar
    @ogbaxstar หลายเดือนก่อน +1

    I'm a backend developer for an enterprise company, and this is exactly the way we do work as well. This is pretty much exactly the same way we work, but we have around 400-500 developers I'd say, and probably like 80 different development teams, and most teams are integrated with other team's services and products in some way to produce one entire seamless product that end users use (simplified).

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

    I'm relieved that I (accidentally) made us follow some existing standard at my work! We ended up doing roughly the same things and it's been great for our productivity. I would like to emphasize that testing is what makes this work so well.

  • @zmudilago
    @zmudilago หลายเดือนก่อน +1

    Thank you for this, I have mostly worked in small projects and this was an eye-opener.

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

    Literally what we do summed up in a neat video. I will be sharing this aggressively to everyone who wants to become a cs major to set some expectations of their daily, as not many know this before getting their 1st actual job.

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

    I’m a junior web dev looking for my first job and this video is so valuable. Now I have an overview of the workflow and different roles. Thank you!🙏

  • @a__guy
    @a__guy ปีที่แล้ว +32

    different branches for different environments (aka git flow) works well if you are building software with specific versions and you are cutting different releases with a specific list of features included in each release. but for development of public-facing web products trunk based development (aka github flow) is more common - a dev can pick up a ticket, make the change, have it tested by QAs/automation & have it in prod by the end of the day. then you don't need to worry so much about what's getting shipped when, you are just constantly building stuff and it's in prod as soon as it's ready.

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

      Very good point. We need to explicitly say that for new devs, I would even discourage introducing new devs to gitflow. It's bad, it only works for situations as you mentioned. Trunk based is much simpler and in most cases preferable. I've seen so many devs using branch names with prefixes such as "feature/..." and that's just because they've picked it up somewhere else without even knowing what they're doing - now they think it's a git standard. That's completely unnecessary and a bad habit imo. Simplicity is the key.

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

      This could seem to imply that switching to trunk based automatically means your tickets are small (small enough to do in a day) but I don't see what one has to do with the other. I'm sure you'll agree that ticket size is basically unrelated to the branch strategy? Someone on my team is trying to get us to switch to trunk development and I'm having trouble seeing the benefits.
      FWIW in my team we do feature branches but we do not have a dev branch like is sketched in the video between feature branches and master.

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

      @@xellestar trunk based does work best with smaller tickets. they don’t need to be doable within a single day but it shouldn’t take more than a sprint.
      the main idea is that you build features with small iterations which each go to prod individually over time rather than dropping a whole finished fully working feature in a specific release. it just lets you work in a more agile way where you can pivot more easily as new priorities come in. if you’re not able to break down your tickets into smaller chunks of work that can be deployed independently without breaking stuff, then trunk based might not be right for the software you’re working on.
      of course you also need to have the appropriate infrastructure eg. CI/CD pipelines, automated testing in pre-prod environments etc.

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

      @@a__guy I'm all for building smaller things in iterations. But let me repeat a comment/question I left on a reply to someone else:
      There seems to be either nuance or confusion around what is and is not trunk development, so please tell me where I am going wrong. When people say "merge directly to master", merge what exactly? Your feature branch, right? People seem to employ the terminology as if they do not branch at all. If a team uses feature branches, but they are branching from and merging to master directly (forget feature flags) is that trunk development or is it using feature branches? Is it trunk development only if they are using feature flags?

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

      Ticket size and how long it takes to finish a feature has nothing to do with branching model. You can develop on your branch and merge to master once it's ready. That's still trunk development. It's your responsibility to keep your branch up to date with master (which you should be doing as often as possible). And if this doesn't work, then you have different kinds of problems that aren't related to branching model. Probably bad code quality and poor planning.

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

    Thanks for this. I'm a self taught developer, got a job 3 years ago in a small company with 4 devs, all of which use different languages. Since then I've always been left 100% by myself -- this is the exact type of stuff I need to learn to move to the next step but don't know how. Most videos just focus on the superficial stuff anyone with some experience already knows.

  • @WebDevCody
    @WebDevCody  ปีที่แล้ว +7

    A lot of others might do trunk based development (where you merge directly to main, have a ton of automated testing, and use feature flags to prevent unfinished code from being used by users), but in my situation we need to use long living feature branches. Sometimes you have to use a process that works best for your client and team.

    • @RamKumar-kv1fx
      @RamKumar-kv1fx ปีที่แล้ว

      That's true 💯 There are advocates for both Trunk based & Feature branches. Personally I like the FB approach you explained here.
      Mostly the final call must be based on the size & complexity of the product & the team

    • @RamKumar-kv1fx
      @RamKumar-kv1fx ปีที่แล้ว

      Hey Cody, this is one awesome video here bro 🔥💥🥳
      You clearly brokedown the entire structure of a SW dev team piece by piece. I really liked how you explained the dev workflow
      FB > Dev > Staging > Main > Prod> User
      This is exactly how we work. 👍🏽

    • @RamKumar-kv1fx
      @RamKumar-kv1fx ปีที่แล้ว +1

      Also it sounded like like you were unsure about this kinda content. I kid you not, this has literally been one of THE BEST tech video I've seen on YT. Pls keep making more content like this.
      If you can pls talk a little bit more how a the PM interfaces with the Dev team and what's his role in day-to-day affairs. TIA bye

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

      @@RamKumar-kv1fx this was magic in a bottle. I literally just turned on my camera and started talking while drawing diagrams. Maybe I can figure out the secret sauce

  • @jeramos409
    @jeramos409 ปีที่แล้ว +24

    As someone who hasn’t worked as a developer at a company yet, this info is invaluable. Thanks for taking the time to talk through the process and share your knowledge 🙏🏼

  • @Tsyoka
    @Tsyoka ปีที่แล้ว +13

    Have worked as a senior architect for many years now and have to say this is one of the better videos I have seen on Enterprise Development. Having to deal with 5 or more of those projects simultaneously while understanding all of the legal, technical and other dependencies is why the complexity exists even though it can be extremely frustrating for developers and others on the front lines.
    Hopefully it helps people understand why, sometimes, they are told no when they just want to add a "simple" maven plugin or NuGet package to their project that will make things so much easier... there is often a lot more going on that might not be immediately visible.
    Great video 😎
    (edit: Architects can't spell)

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

      Legend

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

      Lllkk0ļ...... MmÒp) kojkhtttttrr😅😮😮😮😮 10:03

  • @ahmedkhlifi6941
    @ahmedkhlifi6941 7 หลายเดือนก่อน

    I started my journey in software development in a very small startup - no automated tests, code hosted on VPS with manual pull and build, no docker or anything. so I started to discover that there is more to software dev than writing bunch of code and push it to the main directly. now am discovering testing, cloud, docker and deployment and trying to understand how to implement all of this in my personal / freelance projects. Your video helps a lot and I want to thank you

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

    In my experience there has generally been a layer of separation between Client/Support and Developers. It is important that issues are properly ticketed and discussed in daily standups and assigned to either the backlog or to the appropriate developer.
    Also, at least where I work, there is an "Architect" team that are often the most senior developers of the various teams working on different projects, and the architect team will have meetings where they look at what code is duplicated and evaluate where it is worth developing an internal shared library that multiple projects would benefit from. We have one team that develops those libraries and they're often for cases where performance is critical or reliability is critical, so for example we have a shared library for direct communication to Mellanox network cards, and we have a shared library for 3-mode redundancy.

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

    Your explanation has given me a much better grasp of the complex ecosystem involved in larger scale software development, both from a technical and organizational perspective. The visuals and real-world examples made the concepts more concrete and easier to understand. Thank you for taking the time to share your knowledge and expertise in such a clear and compelling manner.

  • @nikitastriuk
    @nikitastriuk ปีที่แล้ว +22

    Great as always!
    Would love to hear your thoughts about git flow.
    How do you maintain commits while merging, apply hotfixes for several branches, rebase or not, etc...
    This would be a great addition for this video!

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

      Great questions! In my experience, I think having multiple active branches causes more problems than it solves. I'm one for using trunk-based development but it requires having tests that run when PR from a feature branch is open. Master/main is always a deployable state. We always did squash merge.

    • @RudraSingh-pb5ls
      @RudraSingh-pb5ls ปีที่แล้ว

      A video soon web dev cody ?

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

      @@roach_iam I agree, short lived feature branches that are merge back into main makes for easier testing and faster releases.

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

    I'm a co founder at a startup, during the video i was starting to lose faith on our way of doing things, but the last couple of minutes your restored all my confidence and giced me courage to continue the amazing journey I'm in.

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

      how are y'all doing things at your start up? honest, keep it simple is what I've learned and add process when and only when you keep having real issues

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

    As a senior software engineer for about 10 years, I take all this for granted. Really good video!

  • @OsmanToplica9001
    @OsmanToplica9001 5 หลายเดือนก่อน +1

    Dude! This was amazing. As developers we never actually get taught this (not even in college), but we kind of pick it up in the different organizations we get to work for under our career. Seeing it laid out like this is beautiful, thanks.

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

    This video is fantastic at explaining high friction software development but it's surprising the amount of companies still to this day that have no automation with CI/CD or even proper use of version control (as the company I work for daily drives Team Foundation Server Version Control). Obviously everyone's use case it different as some companies still have on premise servers but overall companies from big to small should take note of the usability and simplicity of making a good software development workflows that's right for them (and that's leverages more modern tooling). Good stuff!

  • @ragtop63
    @ragtop63 5 หลายเดือนก่อน +3

    I practice almost every single one of these techniques in my software development as well.
    The only difference is there’s only 1 dev on my team, me. Oh and there’s only 1 PM on my team, me. Oh and there’s only 1 client, me. Oh and there’s only 1 user, me.
    Oh, and I’m not even a software developer. I’m a photographer.
    But my software works as prescribed and designed. So I guess that’s a good thing.

    • @WebDevCody
      @WebDevCody  5 หลายเดือนก่อน

      😆

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

    Thanks for taking the time and making this video. I didn't know I knew how to navigate all of this mess, and having it laid down so beautifully is amazing.

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

    Great video, I just wanted to add something, in my personal experience (9 years), I only once had a team of 11 people, and it was a complete disaster. Most of the time, teams are 4 to 7 devs, from my experience the smaller the better

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

    This 100% jibes with my experience as a senior dev in saas orgs. Super clear explanation and diagramming!

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

    That bird-eye view looks like an electric circuit.

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

      haha for real, it's why larger projects become to complex

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

      I had a similar thought. To me it started looking more and more like a CPU schematic (which is also a circuit I guess)

  • @苑博-j5s
    @苑博-j5s 6 หลายเดือนก่อน

    I like that you introduce the detailed process of team development at a macro level, which can bring a clear reason for the task to the newbie to better understand the specific role of their project, which can think of a variety of excellent solutions for the purpose when encountering difficulties and reduce a lot of errors caused by the main line development

  • @codingwithcodi
    @codingwithcodi ปีที่แล้ว +7

    This is a great birdseye view, thanks so much Cody! For those curious about more, there is more context in the software architecture, software / solution designing phases in the SDLC that are just as complex. Proof of concepting, complex testing infrastructure and levels. AppSec / DevSecOps such as docker container scanning, container / code linting, static code analysis, dependency scanning and so much more. It is a very exciting, and sometimes daunting world! So much to love and hate, haha!

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

    One problem we hit is deploy to ephemeral (for the feature branch/PR) environments for testing. Building a dev branch to a dev environment is quite easy. Also, we are developing an application that is cloud neutral. Each customer wants to run the cloud based application on different clouds. This is actually more difficult than you would imagine.

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

    For large and important systems, in practice you have to use incremental deployment of new features into production for a limited set of users. Of course, this also brings complications - different versions of the application must be compatible with each other, and the production environment must allow gradual deployment.

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

    I’ve been leading teams and contributing to large enterprise SaaS products. The Teams I work with have a large number of developers, in excess of a hundred. I think this video does a great job of breaking up the overall big picture into essential things to know. Yes there will be jira and other agile jargon and engineering jargon overlaid on top of this in addition to development jargon

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

    That's why your one of my favorite programming channel. No bullshit and going straight to what real business is. Props to you for that !

  • @piedosopedro8117
    @piedosopedro8117 5 หลายเดือนก่อน

    Huge thanks man!
    You have no idea how valuable this is for someone who is self-taught and been working solo!

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

    Great video. I see quite a few similarities to what my team does. We don’t deploy branches other than master to environments. Feature work and bug fixes are done in branches then merged into master upon PR review and CI checks passing. My team composition is just about the same but we have QA attending all our standups. I wasn’t sure if QA is part of your standups because they were not listed alongside devs, scrum masters, and PMs. Interesting to see how other teams work. Would love to see more videos like this about SDLC.

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

      yeah it sounds like you do trunk based development. So do you merge code daily to master, or do you have long living feature branches and merge those when they are all done?

  • @kingdavey87
    @kingdavey87 5 หลายเดือนก่อน

    I watched this video like a year ago and didn't understand a thing. But now after getting my first job in the industry and our team is 400+ I can follow this video. We have our dev environment and multiple system testing environments and user acceptance testing environments and prod environment ofc. It's so complex and your video does a great job of depicting this. Thank you!

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

    We never cut a release off of "dev", we re-branch a fresh release branch off of "main" and merge in individual completed feature branches ready for "stage". It keeps the mess thats in "dev" isolated.

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

    Thank you Cody. As a startup founder with no industry experience, it's helpful to get an overview of how it works!

  • @ModeCode
    @ModeCode ปีที่แล้ว +10

    Hey, Cody! Awesome video, man. It's so great to see experienced developers breaking down the process of how things work behind the scenes to bring others up. Keep pushing, bro.

  • @hellofahmid2331
    @hellofahmid2331 7 หลายเดือนก่อน

    I've been developing for 15 years and always wondered where my personal position is in terms of large scale enterprise projects. Glad to get an insight and overview of everything and reassuring my confidence! Thanks (:

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

    This is really impressive. I was afraid that the approaches we follow in our project were not upto the standards or different from what industry uses.
    But I am glad we follow almost a similar kind of approach. This reassured me.

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

    And you also talk about feature flaf and active/active and active/passive is just cherry on top.

  • @joranmulderij
    @joranmulderij ปีที่แล้ว +7

    I love these more advanced videos that are not just "should you use Prisma?". Thanks a lot for this!

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

    Thank you,just started my first internship a month ago and alot of what you have shown is pretty much spot on.

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

    I worked with a team of nine developers, one UI/UX , one tester, can confirm this is exactly the process that we go through when we want to release a feature. Great video for sure

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

    This is so helpful for me as a self-taught doing my best type coder. It also serves as a rough roadmap of what to learn beyond the direct coding skills, like more familiarity with Git and working with AWS. Thank you so much for this

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

    I do a bit different work (HPC), but good intro to the topic. If your team isn't entirely crazy it's going to look something like this. Everything in source control, nothing pushed to prod without testing (the more testing the better), and automate as much as you can so nothing falls through the cracks

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

    Thanks for aligning that UX/UI icon, much appreciated.

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

    I'd disagree. I think there should always be at least a staging environment. You should avoid PRing into main/ production directly. If you have created the automation or have the automation available for CI/CD, it isn't that complex to create a second environment. Definitely do it. In my experience in the past of doing side projects all the time for small businesses, there is always the "can you add this feature" requests and putting it straight into their production system is almost always very difficult without confusing the end user or rolling back if the feature isn't wanted in the end, doing it in production is just something to avoid.

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

    I've been working in Product for over 7 years and you beautifully sum up the whole idea of entrerprise software development. Best wishes from Brazil

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

    I am more shocked at how accurate this information is and the fact that this is available for free to see for anyone(not that it shouldn’t be, but that as far as I’ve seen, no one ever put out such a comprehensive video on enterprise level workflow). This is precisely the same workflow we have at our startup. Thanks for educating peeps!

  • @pedropasquali6779
    @pedropasquali6779 10 หลายเดือนก่อน

    Man, super nice video.
    I work in an pipeline like that, more or less.
    Not completely as a dev, but setting requirements, as client.
    I think it was really well summarized and well explained. Thank you! have an awesome one.

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

    I've been a web developer for 3 years now but only worked for startups/small companies, 2 so far to be more specific, and even if the development flow is similar in some ways, I have never been involved in such a complex scenario, although I'm not sure if this is better or worst, since being in a startup requires you to know at least a bit about how everything works in the system. If all our codebase were deleted overnight for some strange reason, every single dev alone in our team (with enough time of course, probably years) could build the whole system from scratch, but I don't think this can be possible to achieve in a big company.

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

    20:00 onward - a lot of this feels like implementation details. The approach that our team settled on is making master the source of truth and having new features under feature flags turned on/off remotely.

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

    As a backend developer looking for a job, this video really made me understand the real word development cycle. Thanks for this awesome video man.

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

    really appreciate hearing about the organizational aspect of software development

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

    Good job babe!!!! Also 👸🏿

    • @josephgodwin638
      @josephgodwin638 ปีที่แล้ว +8

      You are always here first😂😂

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

      True support ❤

  • @DevendraLattu
    @DevendraLattu 7 หลายเดือนก่อน

    This is so cool. Even as an experienced developer, I sometimes find it difficult to explain complex tasks in a simplified way (like talking to a 5-year-old). So I enjoyed watching this video.

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

    If anyone has a CS degree we learned most of this in school. It's really the foundation and building blocks of the SDLC but in enterprise form. It can be a single operation all the way to a large operation. It's nice to view the perspective on whiteboard to display to people what the process looks like. Good job making the video.

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

      I'm about to complete my IT degree with RMIT and yeah we have focused heavily on SDLC too, Java C# C++ python and a few other languages in there. My capstone was essentially an Uber-style application but with a lot more complexity SEPM etc and with all the documentation, I have industry experience but I feel that university has a higher standard than my experience has offered me before my degree.

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

      A lot of devs are self taught, so a lot of this infrastructure education is missing, as the primary focus is just making code projects that no-where near approach this level of complexity. I think it's great that he's taken the time to plot it out in such an intuitive fashion.

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

      Unfortunately this is not true for every CS program. Many CS programs focus primarily on the theory, data structures & algos, and spend very little time on building applications or the SDLC. Even if they do touch the SDLC, it is never as hands on or concise. Not to mention, many, many schools are underfunded and DATED, such that they are barely even touching things like Agile, Version Control, or anything close to devops and how to deploy software in general.

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

      @@codingwithcodi that's true even places like Udemy don't actually mark student projects and they focus on very narrow fields of study . Learning all the aspects of software development is more involved then what people might think . I know for certain. The programming takes centre stage but unfortunately programmers spend less time programming and more time problem solving it's about 20/80 in my opinion

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

      I learned a lot about algos and math when getting my CS degree, but nothing about the stuff in this video. I wish university would teach this stuff.

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

    This is a must watch for beginners developer!
    As an enterprise software engineer myself, this is the most accurate and detailed workflow of how developing on enterprise works. Nice video man!

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

    The hotfix scenario is a good example of why trunk-based development is preferred. Having different branches for different environments is a recipe for disaster. Each branch is a separate code state that has to be managed, and they get out of sync really easily.

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

      agreed, but trunk based development usually means your team has the ability to do feature flags. Our project has a requirement that no unfinished stories can be merged to main. constraints often dictate processes

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

      ​@@WebDevCody no, trunk based development means everything is merged directly into master.
      Feature flags should be a requirement in any decently sized project. its not that hard to implement. However even without feature flagging, as long as your tests are robust (prevent errors in the first place) and your CI/CD pipeline is good your time to resolution should be quick enough to mitigate any errors (whether through a revert/code fix).

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

      ​@@WebDevCody On a project with 480+ developers have a similar approach, no unfinished stories merged to the main.

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

      If you can get away from the idea that "HEAD" in main is what is in production, you can start to realize why you don't need to use branches to manage your software versioning.
      I know you, and many companies, think that this is the best way to manage their SDLC, but I can assure you that the same thing you're trying to accomplish can be accomplished without maintaining long running dev/test branches.

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

      There seems to be either nuance or confusion around what is and is not trunk development, so please tell me where I am going wrong. When people say "merge directly to master", merge what exactly? Your feature branch, right? People seem to employ the terminology as if they do not branch at all. If a team uses feature branches, but they are branching from and merging to master directly (forget feature flags) is that trunk development or is it using feature branches? Is it trunk development only if they are using feature flags?

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

    Super valuable and great explanation especially from layout of software development, multi region, edge and hotfixing w back merging.
    I feel like having the three branches Dev, Staging, Main/Production is the norm for smaller/startup team but avoid the e2e/smokescreen/load tests until the stage of a monolith project comes into complexity of breakout into separate groups and repos.
    I know you don't want to talk about this but it's always handy in your backpocket to discuss these situations. You never know when the time might come to know it

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

    Awesome insights Cody, I had asked yesterday during the livestream about cloud monitoring for GCP and this video is also super helpful since I am part of a team that doesn't have very good response time to bugs that make it into production... It's surprisingly difficult to figure out how to get better at knowing how a systems to deploy code and maintain it should actually work... Seems like maybe I need to find a new team that looks at these issues more seriously. Anyways thank you as always!

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

      Some things we do is log every exception, the request, what endpoint was invoked, what user hit that endpoint, and what time. You need a way to inspect what the user did and sent in if you ever plan to fix issues

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

    As a person who are not SWE but interested in software engineer adaptation, this has fully satisfied my curiousity. Thank you Cody.

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

    It can be very difficult to rollback code in a microservice architecture. Your deployed code represents many different components e.g. Av1, Bv1, Cv3, Dv4. Lets say you have an error in D version 4 so you rollback to V3. How do you know that Dv3 works alongside Av1, Bv1 and Cv3 if they never existed together in the first place? You have to be very careful when making changes to apply some of sort of semantic versioning to your system and even then I wouldn't be too confident without having things like canary deploys and a solid automated test suite in place.

    • @RamKumar-kv1fx
      @RamKumar-kv1fx ปีที่แล้ว

      That's why you use Infra as Code.
      And this code live in a repo of its own. When ever any new service is added or updated, this code updates too. And is versioned with Git 🤓

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

      @@RamKumar-kv1fx infa as code has nothing to do with this problem

    • @warren-cga
      @warren-cga ปีที่แล้ว

      Helm is your best friend. To rollback to a previous build or a suite of builds, while you and your devs actually resolve the issue.

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

    Great caution at the end to avoid complexity. It is very tempting to create branches for environments but it goes against the thinking of continuous integration - changes are kept isolated from each other (dev vs main). Instead branch by abstraction and use toggles, use the same code history but deploy to different environments.

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

    A freelancer watching this will go : I AM WHOLE ENTERPRISE :)

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

    This actually touches on a LOT of important stuff and is a great break down of all things that go into enterprise design, implementaiton and maitenance.

  • @JuanFM-x6s
    @JuanFM-x6s ปีที่แล้ว

    One of the best explanations of how the sausage is made. And I also worked in the industry for over a decade. great stuff, keep it coming!

  • @journeyto421
    @journeyto421 6 หลายเดือนก่อน

    fantastic video, been in enterprise for a little over 2 years and this cleared up a lot of questions that've been dancing in my head

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

    Video and explanation is seriously on point! Thank you so much for this!
    Very interesting to see the dev perspective. I'm a QA lead, and from my experience, people want to fix bugs that are breaking parts of your software fast (go figure), but a lot of the time they don't take the whole picture and side effects into account, because they are devs of one particular piece of software. I have been on projects where we were at hotfix number 8. I advised against it, but PO pushed it through each time anyway. Obviously this is correlated directly to how well integrations are tested as well!
    Thanks again for the great video. 🙂

  • @moardub
    @moardub 11 หลายเดือนก่อน

    Interesting. I deal with this type of stuff a lot at work and your channel is the first I've came across to actually discuss it. You even did it in an easy to understand way! Great stuff!

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

    Solid video. I just got done deploying all my personal projects so I got a big appreciation for the difference between working locally and working deployed.

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

    If you're skipping this video because you're willing to work for a product based company then my friend just replace the CLIENT with BUSINESS STRATEGY TEAM and you're good to go. If you work for a medium or large company then you can consider each dev as the lead dev of a team (e.g. Frontend web team, Andriod team, ML team, Backend team and so on). Great job keep going.

  • @muzaff
    @muzaff 9 หลายเดือนก่อน

    We need more videos like this, for professionals and who already works as a developer, good job, thank you.

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

    THANK YOU for aligning the UI/UX guy properly!
    NOW I can actually listen to what you're saying.

  • @RyomaKizuna
    @RyomaKizuna 10 หลายเดือนก่อน

    As a freelancer who never work in a software company this kind of content is very helpful and a lot of people never really talk about this kind of stuff. Thank you for the insight keep the good work 💪💪

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

    Such a great explanation, thank you! As a junior software engineer, after watching this video, I can confidently say that I have gained a good understanding of how things are related to each other.

  • @audi-quattro
    @audi-quattro ปีที่แล้ว +1

    as someone working alone i can confirm i push everything to main straight away and just being ready to roll back if it breaks

  • @LimitedWard
    @LimitedWard 6 หลายเดือนก่อน +2

    Missing from this diagram: each pull request should be gated on some automated testing to prevent your dev branch from getting constantly broken.

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

    Awesome video! Your explanation of the AWS infrastructure is amazing and also explains why devops came about. Back in the olden days as an infrastructure dev, we were somewhat disconnected from what was happening on the developer side. Things like a build taking too long and our infra side being like well, that's a you issue since we only handle the infrastructure aspect and we don't know what you're trying to do and we don't have time to understand that because we have infra to manage. Developers also don't have time to understand the infra side because they're busy writing code. Devops came about to more closely integrate the infrastructure side with the developers, making it easier for us infra people to do things like work on speeding up build times, work on integrating tests, establish good infra security policies, etc. Devops of course then became a more generic "you work on infra? cool you're devops" title. Great video! What a wacky industry 🤣

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

    Been working in a startup for the last year. This has provided so much insight into whats actually going on!

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

    I have been in the industry for two+ years and I can say that this is a very realistic introduction to how things work in the industry for anyone who is trying to get into this field of cs.

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

      glad you found it useful