Continuous Delivery
Continuous Delivery
  • Видео 342
  • Просмотров 11 603 548
3 Key Version Control Mistakes (HUGE STEP BACKWARDS)
Version Control is pervasive these days, and is fundamental to professional software development, but where does it go next? Git, often via platforms like GitHub, GitLab or BitBucket, is by far the most popular VCS, but its value is being watered down, and the next steps in software development, look to be ignoring this vital tool of software engineering. Without the ability to step back safely from mistakes, and re-establish "known-good" starting points from Version Control, we will loose the ability to make incremental progress, and with that loss, we also loose the ability to create truly complex systems.
In this episode Dave Farley, author of best sellers "Continuous Delivery" and "Mod...
Просмотров: 6 947

Видео

Should We Build EVERYTHING In Kubernetes? | Kelsey Hightower
Просмотров 5 тыс.15 часов назад
Is Kubernetes suitable for developers to build anything and everything? Why do software developers have the tendency to be all or nothing over their tools and practices? In this clip, Kelsey Hightower & Dave talk Kubernetes, software engineering more broadly and MORE. You can listen to the full podcast HERE ➡️ open.spotify.com/episode/6dYblzdqPbxTWEsmiuKce7?si=56f21183fe1447d8 - 🗣️ THE ENGINEER...
Will AI Replace Junior Software Developers?
Просмотров 9 тыс.День назад
Are junior developers about to become the real victims of the future artificial intelligence influenced world of software development? Senior developers tend to use their experience to know how to navigate the questions raised by these new technologies and have a bigger grasp the importance of human interaction, in particular when and where it's needed. Juniors find that much more difficult und...
TDD Isn't Hard, It's Something Else...
Просмотров 14 тыс.14 дней назад
Test Driven Development divides opinion, but there are few other practices that in real-world development teams reduce bug counts by between 40 and 90%. Software development is a difficult endeavour and so we should take every advantage that we can get, so what is the evidence that TDD works in practice, what are it’s downsides, how can we make TDD easy to adopt and how can we simplify TDD? In ...
Can AI Large Language Models Refactor Code?
Просмотров 5 тыс.14 дней назад
What do large language models and AI gpt's struggle with in their current evolution when it comes to creating strong complex software systems? Is this where software engineer's still have a significant edge over artificial intelligence like Github Copilot & ChatGPT? This clip is taken from Birgitta's Engineering Room appearance which you can listen to HERE ➡️ open.spotify.com/episode/2gbWJQXdtO...
Platform Engineering vs DevOps
Просмотров 22 тыс.21 день назад
What’s the difference between DevOps, Continuous Delivery and Platform Engineering, is Platform Engineering really the next big thing. You could ask “what’s in a name” fundamentally what we do matters more than how we name what we do, but the names that we use for ideas can help. Most people don’t do deep research into what works best for software development, which may be a shame because how w...
The BEST Way To Measure Software Developer Performance With Dr. Nicole Forsgren
Просмотров 21 тыс.21 день назад
Can you really track developer productivity? How do you assess software developer performance using developer productivity metrics? Are DORA metrics the best way to go? In this clip, Dr. Nicole Forsgren, author of 'Accelerate' and one of key figures in the DORA movement, talks to Dave about some of her work and how science and engineering has taken hold of the software industry. You can listen ...
Software Engineering F&*K Up Behind The Passport E-gate Failure
Просмотров 31 тыс.28 дней назад
The UK passport e-gate failure was a big news story at the beginning of May, a significant software failure that caused disruption and significant delays in travellers entering the UK. In this episode, Dave Farley talks about the issue, how poor software engineering led to this, how distributed systems come into it all, how to avoid something like this happening again and at the end of the vide...
The Patterns Of Distributed Systems With Martin Fowler
Просмотров 9 тыс.Месяц назад
What are the complications of working with distributed systems? In this clip, Martin Fowler talks to Dave about work he and colleagues have done outlining the patterns of distributed systems to help people better understand their work. You can listen to the FULL episode HERE ➡️ open.spotify.com/episode/3xcEbQkr5ENQmldF2kyGly?si=00b8e4da976b4f2d - 🗣️ THE ENGINEERING ROOM PODCAST: Apple - apple.c...
Big Tech Companies vs. Software Developers | Tech Layoffs In 2024
Просмотров 26 тыс.Месяц назад
What should software engineers make of the significant tech layoffs in 2024? Do big tech companies really care about their developers? If you work in big tech as a software engineer, what should you be doing to guard yourself against the worst happening? In this episode, Trisha Gee delivers a strong reminder to developers that they need to look after themselves first and foremost while making s...
You Got The Job At Spotify, NOW WHAT? | Developer Onboarding
Просмотров 4 тыс.Месяц назад
How does a company like Spotify onboard new developers and what does a Spotify software engineer's early work life look like? In this clip, Spotify's chief architect & VP of engineering, Niklass Gustavsson talks Dave Farley through their process of bringing in new software developers and how they help integrate them into their environment. You can listen to the FULL episode HERE ➡️ open.spotify...
Coupling Is The Biggest Challenge In Software Engineering
Просмотров 21 тыс.Месяц назад
Coupling is more complicated than it sounds, in software many people would argue that loosely coupled systems are better, but most software doesn’t look like that. Most software tends to err on the side of being too strongly coupled, in the sense that a change in one place forces changes in another, this is a huge problem in software development and software engineering that impacts everything ...
What Is A Software Engineer? | Craftsmanship Movement Was A "Step Backwards"
Просмотров 6 тыс.Месяц назад
Are you a software engineer or a craftsman (craftsperson)? Dave is joined by Emily Bache to talk about their thoughts on the engineering vs craftsmanship debate. You can listen to the full episode HERE ➡️ open.spotify.com/episode/6UYbDSW38mWyLC81vWdNqM?si=ff1cda5ba3554408 - Emily's RUclips Channel, show your support and subscribe HERE ➡️ www.youtube.com/@EmilyBache-tech-coach - 🗣️ THE ENGINEERI...
Mastering Your Microservices With Observability
Просмотров 8 тыс.Месяц назад
It's hard to argue against observability being a good thing. However when you are working with a microservices architecture or other distributed system, it can prove extremely challenging to monitor or observe. Observability is often left as an afterthought for many organisations, leading to much more complicated problems in the future. In this episode, Dave Farley explains what observability i...
The First Software Jobs AI Will Replace Are...
Просмотров 8 тыс.Месяц назад
What will be the first software jobs replaced by AI (artificial intelligence)? In this clip, Dave is speaking to Birgitta Böckeler about what the future might hold for software engineer jobs in the face of emerging AI technologies. Birgitta is the lead at Thoughtworks for AI-assisted software delivery and has been working with these new technologies and forecasting what it might mean for our in...
TDD Is A BROKEN Practice
Просмотров 29 тыс.Месяц назад
TDD Is A BROKEN Practice
The SECRETS Of Successful Software Architects
Просмотров 12 тыс.Месяц назад
The SECRETS Of Successful Software Architects
Your Tests Are Failing YOU!
Просмотров 8 тыс.2 месяца назад
Your Tests Are Failing YOU!
Why Microservices Don't Deliver On Their Promises
Просмотров 13 тыс.2 месяца назад
Why Microservices Don't Deliver On Their Promises
Cynefin Is A GAMECHANGER For Software Developers
Просмотров 45 тыс.2 месяца назад
Cynefin Is A GAMECHANGER For Software Developers
You Must EXPERIMENT To Find Your Best Design
Просмотров 6 тыс.2 месяца назад
You Must EXPERIMENT To Find Your Best Design
The Most Important Programming Invention In 20 Years
Просмотров 16 тыс.2 месяца назад
The Most Important Programming Invention In 20 Years
Ensuring SCALABILITY Using MICROSERVICES
Просмотров 4,9 тыс.2 месяца назад
Ensuring SCALABILITY Using MICROSERVICES
Can Our Tools Increase Developer Productivity?
Просмотров 6 тыс.2 месяца назад
Can Our Tools Increase Developer Productivity?
AI Disruption & Its Impact On Software Development Jobs
Просмотров 7 тыс.2 месяца назад
AI Disruption & Its Impact On Software Development Jobs
How To Avoid TOXIC Team Culture In Software Development
Просмотров 25 тыс.2 месяца назад
How To Avoid TOXIC Team Culture In Software Development
"The BEST Developer Productivity Metrics We Have... SO FAR"
Просмотров 14 тыс.3 месяца назад
"The BEST Developer Productivity Metrics We Have... SO FAR"
DON'T Comment Your Code
Просмотров 17 тыс.3 месяца назад
DON'T Comment Your Code
The BIRTH Of Continuous Delivery With Jez Humble
Просмотров 3,9 тыс.3 месяца назад
The BIRTH Of Continuous Delivery With Jez Humble
How To Use TDD For UI Design
Просмотров 16 тыс.3 месяца назад
How To Use TDD For UI Design

Комментарии

  • @doryan08
    @doryan08 9 часов назад

    I don’t think AI will replace Juniors devs at all, they are gonna adapt, but what is going to probably replace is devs without foundations like CS, again probably. Because probably the schools are probably going to adapt the programs to make the devs more prepared to interact with these LLMs. Probably they are going to have the foundations now to model what a GPT model will produce and, probably coding as typing will disappear but not what was mentioned here which is review code generated, provide inputs to the model, etc. IMHO.

  • @vk3fbab
    @vk3fbab 10 часов назад

    Version control is a subject guaranteed to get the developer arguments flowing. The mistakes i have seen are backup files committed to VCS. Showing someone didn't really understand what VCS did. The other is using branches to avoid merging into a release branch. So dev creates a feature branch and then expects that feature branch to pass QA before it gets merged into the development branch. Whereas customers only care that the feature actually works in their release and the fact it worked on a development branch means nothing. I work with a lot of people that avoid TDD and TBD. Hence we have lots of integration challenges and also ground hog days with bugs that would have been caught by TDD.

  • @jasondbaker
    @jasondbaker 11 часов назад

    I agree that putting an excel spreadsheet in version control is a good idea. I just wonder if using something like Git would be practical in sone scenarios due to the way that git stores changes - I.e, by making a complete copy of the file. I’ve worked in organizations that made daily changes to massive excel files with millions of rows of data. Storing these changes in git probably isn’t practical.

  • @esra_erimez
    @esra_erimez 11 часов назад

    This is a succinct clarity of such a critical topic that we all too often take for granted.

  • @bart2019
    @bart2019 12 часов назад

    So... How would you version control 2 separate software projects that are meant to work together but work on separate platforms, for example a server and a client?

    • @ContinuousDelivery
      @ContinuousDelivery 11 часов назад

      Version control works on text, and so is not platform specific. If you have different components of a system that work on different platforms there is nothing to prevent you from keeping them in the same repo. Ideally do that, along with there deployment scripts, for each of the different platforms. All completely doable, all fairly common practice.

    • @zedrikcayne
      @zedrikcayne 11 часов назад

      Currently? Subprojects. The 'release' is a repo with the server and client in a subproject. As part of the release process we pin the version of the client with the version of the server. The staging environment is a branch off that repo. We merge our new version on. Let ci/cd build it. Iron out all the problems, merging fixes back down into the subprojects. And then merge that version to the 'production' branch which builds and deploys to production directly, releasing client versions etc.

  • @NachtmahrNebenan
    @NachtmahrNebenan 12 часов назад

    Thank you, Dave, for pointing out the bug in the Excel spreadsheet! Our minister of finance here in Germany knowingly acted on the wrong suggestion and did big harm to countries like Greece, Italy and Spain. Many people died. He never apologized.

  • @thomasf.9869
    @thomasf.9869 12 часов назад

    Autopilot has not replaced human aeroplane pilots, even though it could. Human passengers prefer human pilots, however, there is no technical reason why air freight cannot be completely automated. In practice what happens is many junior pilots notch up their flying hours flying cargo around the world before flying humans around the world. A win-win. A lower risk way of training the juniors. I guess some kind of a win-win will pan out in the software sector as well...

  • @feralaca123
    @feralaca123 12 часов назад

    Git is a tragedy

  • @12q8
    @12q8 13 часов назад

    I really think AI will excel in TDD *_if_* guided by a professional and experienced prompt engineer. lol

    • @NicodemusT
      @NicodemusT 12 часов назад

      The idea that AI would stop to write TDD to appeal to human dogma is hilarious.

    • @12q8
      @12q8 12 часов назад

      @@NicodemusT What is instead we write the test and tell AI to write code that makes it pass? Rinse and repeat until you get what you want.

    • @NicodemusT
      @NicodemusT 11 часов назад

      @@12q8 TDD is driven by human error. If a paradigm, like payment flow, is perfected, making tests for it would be incredibly redundant. A tailored LLM would only contain perfected code in such case, making tests hilarious overengineering made solely to appease gatekeepers who can't let go.

  • @12q8
    @12q8 13 часов назад

    Hah! I've seen entire Oracle EBS systems with NO version control ever backing it. When asked how do they get the latest version, they just tell the DBAs to dump a copy of prod into dev/test LMAO

    • @ContinuousDelivery
      @ContinuousDelivery 12 часов назад

      I have seen things like that too, I usually say “catch up to the 1980s and use version control” 🥴

  • @Hofer2304
    @Hofer2304 13 часов назад

    A VCS should be taught as early as possible.Git has the advantage, you can use it offline. You can use Git on your phone. You won't use your phone for a serious project, but for toy projects it's a good tool. If you use Git for toy projects, where you can experiment, a Git disaster in serious projects is less likely.

  • @MrLeeFergusson
    @MrLeeFergusson 13 часов назад

    I use version control for basically everything these days. From writing letters, for my study notes and config files. To never worry about a mistake setting you back more than a few commits is a powerful thing indeed.

    • @user-mh2ye9nf3y
      @user-mh2ye9nf3y 12 часов назад

      Agreed. I use git for software development projects and rcs for writing projects. I don't need git's extra features / complexity for my writing projects.

    • @jasonfreeman8022
      @jasonfreeman8022 8 часов назад

      I’ve often wondered, watching my C-level wife wrangle with loads of documents, why they don’t manage their spreadsheets and Word docs using uncompressed XML and Git. I’ve seen my wife at apoplectic levels crying about how their financial model dejour got the way it did. Meanwhile I’m thinking “git log …”

  • @RoamingAdhocrat
    @RoamingAdhocrat 13 часов назад

    Betteridge's Law applies to thumbnails, right

    • @ContinuousDelivery
      @ContinuousDelivery 11 часов назад

      Well, kinda, but I am using “Git” as a shorthand for Version Control, because the value of version control has been significantly compromised in the ways that I describe in the video.

  • @vivek.80807
    @vivek.80807 13 часов назад

    - “Software Dev is all about coding!” Our job is solving problems, not writing code. I love our profession in part because I enjoy the mental focus that writing code gives to me, but I get much more pleasure from finding a neat solution to a problem - even sometimes if it involves no code at all. Some of the great software developers aren’t great because they know more about languages (although some of them do), they are great because they have more insight into the problems they are solving, and found simpler solutions to those problems. You don’t get to be a 10x programmer(whatever that means) because you type 10 times faster. You’re great when you solve problems with less code. - “If only the Business would get the requirement right!” This idea almost completely misunderstands the problem of software development. It assumes 2 things - first - it’s a developer’ job to write code, and someone else’s job to tell them what code to write. Why can’t the business simply tell us what the solution is clearly and concisely, and we can translate that solution into code! While it’s true many organizations try to make it work this way, this is simply wrong. If a developer's job was simply a translation exercise from a description that was detailed enough to be correct - then couldn’t we automate that translation? - and effectively turn the correct description into code itself - what then is the point of developers at all! The people writing the description would be the developers then. It’s much more difficult than that in reality. Organizing our thoughts so that they are executable by a computer is a difficult thing; but understanding what users want and what works for them - is also a difficult thing. The second incorrect assumption is that there is someone who knows the answers to this. No one really does. There’s a lot of data to back this up. Users don’t know what they want. If you ask most users what they want, their ideas are usually a small step from what they already have. It’s certainly useful to know what the users want but great products surprise users and go beyond their expectations. No one was asking for smartphones before we invented smartphones and revolutionized the mobile phone industry. No one was clamoring to buy books online or sell their sofa online before amazon and ebay started up. The companies themselves, even innovative ones - don’t know the answer either. Steve Jobs and Apple thought that the Newton and the Lisa were great ideas- they weren’t. Data from a study in Microsoft said that two-thirds of software product ideas created 0 or negative value for the company that creates them. So, when your boss says - We’ve got a great idea for a product - she’s guessing! We’re all guessing, so our job is to build systems in a world of uncertainty. This isn’t because someone is stupid or evil or doing a bad job - it’s simply the nature of the game. What this means is that we need to work in ways that protect us from bad guesses. We need to figure out how to incrementally evolve solutions to problems over time, to grow them step by step - and so give ourselves freedom to make mistakes. - “Speed is all that matters!” Software Development is an intellectual creative discipline. Our real goal in software development is learning - that’s the expensive part; not the translation of that learning into code. Once the problem is clear, coding is easy. If coding is hard, that is nearly always because you don’t understand enough about the problem. Making the problem clear is the hard part. TDD is one of the best ways to learn what works - quickly. Optimize for learning, not feature production. - “My job is to code, not to understand the problem domain!” The best programmers know the problem domain well enough to have domain insights that sometimes even experts might miss. We won’t have the same kind of domain expertise as a true domain expert and knowledge will be a little more surface, but if we are doing well - we will spot similarities and opportunities that domain experts miss - because they are too close to the problem. So, pay attention when people are talking about the problem domain. Work to establish a common language that you can share with domain experts to explore and explain problems. Ask them for clarifications if you don’t understand some concept. Try and see the real problem in the real world if you can. This will have a deep impact on the quality of code that you write, on its simplicity, readability and your ability to grow it as your system and understanding grow. - “I can’t ask for help! It shows I don’t know enough.” Truth is - the more you know - the more you know that you don’t know enough. Smart people ask questions, dumb people think that they have all the answers. To be a great software developer, you must become comfortable with uncertainty - because there isn’t much certainty to go around - to be honest. Ask questions, if a dumb person thinks you’re dumb for asking questions - that’s their problem, not yours. The point at which this is not true is - if you ask the same question over and over again. Trick Suggestion: Allow yourself the freedom to ask a question twice; if you want to ask a third time - take the person with answers aside - fess up that you don’t understand and ask them for some help. 9 times out of 10, they will help you and think better of you for doing this. - “Software Architecture is for the experts!” Designing a good software architecture takes experience. I think you need to have seen similar things done in 3 different ways - ideally in 3 different technologies - before you really have that kind of experience. But a software architecture is more than just only creating it. A good software architecture is a bit like a tourist map of a system. It shows you enough to find your way around, without going into too much detail that you can’t find where you really are. Any developer should be able to describe how the system that they work on works - ideally to a non-technical person, but at least to a technical person who doesn’t know anything about your system. What are the organizing principles in your system that really matter? What ideas help you to decide where to place behavior in your system? What’s the tourist map for your system? - “Testing is someone else’s job!” If you write code, how do you know if it works? Even if you write code without automated tests, you run your code to see if it works. If not, you’re dangerous and you need to take a step away from the keyboard. So now, our only debate is whether our testing should be automated or manual. Of course it’s automating testing - there are gains from using TDD/BDD. Who should write the tests? Mostly, it’s us - developers. We’re the people that write code that can break the tests. We’re the people that need to fix the code if it goes wrong, so we’re the people that should see that mistake first; and be best placed to understand it and correct it - for that we need to at least own the responsibility for the tests that are running and most of the time we’re in the best place to write them ourselves too. Our job is to solve problems, not to write code. How can we tell the problem is solved without checking to see if it is. - “I would like to do a better job, but my boss won’t let me!” This is a big but common mistake. It can be a cultural problem in poor organizations and fixing it can feel uncomfortable. To fix it relies on some self-confidence that may be hard to find at the start of your career. But, at some point we must take responsibility for our own work. If you hire me as chef, you’re making a big mistake, but if you make that mistake - you wouldn’t expect to tell me to clean up as I worked - you’d assume that I keep my work area clean and my tools sharp as part of my everyday work. You wouldn’t ask me - how long to cook a good meal - and expect me to answer - “I can do it in 20 mins and as long as you don’t expect to use the kitchen again.” But in software, we do sometimes provide those kinds of answers. If you’ve ever given an estimate that didn’t include refactoring or testing - you did this. If you ever skipped these things to hit a deadline - you did this. There’s a professional duty of care that we’re all responsible for. We are the experts at our profession. I don’t think we should be asking other people permission to do a decent job. Inevitably, you will be working in an existing team with existing norms of behavior. As a junior member, you may not be in a position to exert authority and demand that other people change. My advice then is to do what you can. Try the soup(?) exercise, that Aino Corry mentioned in an earlier video. Identify the stuff that is within your control and change those things for the better. Identify the things that you can influence, and you may be surprised at the influence that an enthusiastic newcomer can exert on a team. As long as you try to change things by demonstrating better ways of working and encouraging people rather than demanding action from others, it’s better to ask for forgiveness than it is to ask for permission. Finally, recognize that some of this stuff is beyond your control and influence - and so focus on the stuff that is and do a good job of that.

  • @georgebeierberkeley
    @georgebeierberkeley 14 часов назад

    I think I'm the only one left using MS Team Foundation Server. I haven't left it for (free, co-pilot enabled) get b/c porting over all the history seems like a scary proposition.

  • @StuartLynne
    @StuartLynne 14 часов назад

    I have been playing with and enjoying using ChatGPT to do small projects. You can do incremental work by giving it something and asking for a change. However, the process is both tedious and error-prone as you sit copying and pasting in both directions. The next big jump for this process will be when the AI assistant can be pointed at a specific Git archive and branch and asked to generate specific changes that it can then make available via a pull request. This would allow the AI to look at the overall project and generate solutions that follow the same coding styles etc. and where possible use local libraries already in use in the project. Until then AI assistants are a lot of fun and for small couple hundred line Python scripts (for example) turn a one or two-day project into a few hours. Especially when you are venturing into new areas and are not familiar with the (many, many libraries) that might help solve your problem. But as currently being used it does not appear to scale well or easily into even medium-sized projects with tens of thousands of LOC spread across hundreds of files.

  • @oleksandrsova4803
    @oleksandrsova4803 14 часов назад

    The only thing with this approach that is still an issue for me is that I don't see a clear way to define a *range* of versions of component A that component B depends on. Only the single currently latest version in the repo. But it is not a big issue as modern orchestrators demand a single version of each component anyway.

    • @ContinuousDelivery
      @ContinuousDelivery 13 часов назад

      But “only the single current latest version in the repo” is presumably the one you have tested with all the others, so the one that you know works. The idea is to either test what combination will end up in production, or design things so you don’t really care.

    • @jasondbaker
      @jasondbaker 11 часов назад

      The few ways I can think of to define these kinds of version dependencies in vcs are either: a) put everything into a mono repo, or b) create a special “orchestration” repo which stores and tracks which software versions should be deployed in which environments. Both options suck because they create a constraint, a choke point through which all teams must pass. Hard wiring these sorts of changes also leads to unpleasant things like release trains and cat herding release managers. My preference is to encourage autonomy and leverage versioned apis and contract testing to validate whether or not an updated service is feasible to deploy to production.

  • @MichaelSchuerig
    @MichaelSchuerig 15 часов назад

    What's next for version control? I hope for a way to better record the semantics of changes. In an ideal world you never have to rename things, move them around or change signatures when you're in the middle of a task that's only tangentially related. In an ideally world, refactorings like these go into their own commit with its nice and helpful message. My world isn't always ideal and so I keep hoping that one day VCS will be able to recognize this kind of mechanical changes.

  • @chrisnuk
    @chrisnuk 15 часов назад

    I've been using AI for a few weeks now. It's something that works pretty well if you are disciplined. By that I mean give it a set of interfaces and ask it to create some tests. Tests are an odd sort of code where you want code duplication and let's be honest we all copy and paste a previous test as a template, which means there are invariably bugs. So letting the AI write them makes sense. I don't understand people who ask what comes next after GIT. I want to shout back we work out how to use it best!

    • @PavelHenkin
      @PavelHenkin 14 часов назад

      I disagree that you want duplication in any codebase, even test. It doesn't become as painful as quickly, but your test suite will become unmaintainable just as surely as your prod code if you don't refactor the duplication as you go.

  • @username7763
    @username7763 15 часов назад

    I'm not sure about git successor but I've used a lot of different version control systems and git absolutely could be improved on. It does a lot of things right. Probably the big one that git and other DVCS do is allow for easy branching and merging. A lot of prior systems didn't handle this well at all. Even SVN didn't have merge tracking for a long time. But there is a ton we lose with git too. The command-line commands are pretty random and arbitrary. It feels like a random pile of shell scripts (which is partially correct). There is no way to manage which branch should integrate into which. No permissions. No file locking (yeah lfs is a hack). No bug tracking integrations build in. You have to git stash way too much to do basic things. Because a branch is a pointer, commits don't track what branch they were done on. Deleting a branch can delete history. So yes, git is an improvement from many other systems but it is also a step back. First we should get back what we lost and then we can talk about the future.

    • @TonyWhitley
      @TonyWhitley 15 часов назад

      I used Perforce for many years and it (mostly) did what I wanted. Git does what it wants and if you're lucky tells what it didn't like about what you did but mostly you're left copy/pasting obtuse error messages into a search engine in the hope that someone else has already managed to disentangle the word salad into a bunch of impenetrable git commands that will recover the situation. I have no idea what on earth Git's local repo is supposed to offer in a world of 100% Internet connectivity and the unnecessary complexity involved causes so many problems. I don't know what comes after Git but it has to focus on what version control is trying to *achieve*, not just throw out a large number of often contradictory commands and tell you to sort it out for yourself. It's at the pre-smart phone era, I'm waiting for the iPhone.

    • @username7763
      @username7763 14 часов назад

      @@TonyWhitley Yeah git met Linus's need to integrate patches from contributors all around the world. It wasn't supposed to be the one and only version control system people use. I also have good things to say about Perforce. Sometimes it makes sense to pay for software that you use every day to have something a little nicer and easier.

    • @mycroftholmesiv
      @mycroftholmesiv 14 часов назад

      Git isn't perfect - but it is better than a number of the other SCMs that were out there. (File locking...ick.) Git's submodules and subtrees are still not at a level I would prefer. (Hard to keep code dry and share code) But I would love to see Git handle secrets better. I am surprised that he's glossed over the traceability that GIt offers. (Blame, etc) As anyone who's had to respond to an audit can tell you - being able to determine who authorized a code change, when was it built, tested, and placed into production become critical....far more so than simply the ability to roll back a change. In fact, I'd argue that that the branching/tagging which allows you to maintain multiple versions of a code base simultaneously, is a critical feature.

    • @quademasters249
      @quademasters249 13 часов назад

      My biggest issue with GIT too. I fundamentally like how it works with a local version and remote version but anything at a higher level is just guesswork and looking at obscure internet docs. Often times I'll run into an issue like detached head and have to cache off a copy because I never know when fixing detached state will trash my current changes. Sometimes it does and sometimes it doesn't It's very "Linux". The basics are never updated while features advance forward.

    • @Hofer2304
      @Hofer2304 13 часов назад

      Don't branch! If you branch on your local computer, because you want to try something, it may be okay, but not for a long time.

  • @username7763
    @username7763 15 часов назад

    One thing I've noticed throughout my career is a lot of teams are way too quick to throw away version control history. It seems nearly every company I work for, I end up having to argue against a plan that includes throwing away version history. This happens when switching version control systems (including ones that have an importer), or restructuring repos. I've done quite a bit of version control sleuthing on bug fixes where version history I am looking for is years or even decades old. Often times version control history is the only documentation that exists for knowing why some complex logic exists and if it is still needed or what it should do.

    • @dalehagglund
      @dalehagglund 10 часов назад

      I absolutely agree regarding the value of preserving history, and I've also fought off plans to do exactly that several times.

  • @rethardotv5874
    @rethardotv5874 15 часов назад

    AI can be prompted the last iteration of the code to incrementally build on it and GPT-4o even tries to run the code it proposes, inspects the results and reiterates on them to improve the output. Atleast charGPTs level of managing this is at junior dev level, which is sufficient for an experienced developer to use as a tool. Whoever argued for a git successor does not understand Software. There is only one thing that git does horribly and that’s handling binary artifacts, but we don’t need that, we can just add a file that points to them and a script that downloads them after checking out or updating the repository.

    • @username7763
      @username7763 15 часов назад

      AI is not remotely at the junior dev level.... unless my standards are too high. I expect a junior dev to be able to fix bugs in an existing codebase. Look at the code, look at the bug tracker, look at version control history, run the software to reproduce, make the change, test it. Sometimes this involves contacting the bug reporter for more information. AI is crazy impressive at times... for what it is. But i've had interns do more than it is capable of.

    • @rethardotv5874
      @rethardotv5874 15 часов назад

      @@username7763 I’d consider doing the things you describe reliably without handholding closer to mid level.

    • @username7763
      @username7763 14 часов назад

      @@rethardotv5874 Well I didn't mean no handholding. But it is one thing to need to come back to me with questions or when stuck on something and quite another to not be able to accomplish the task at all. AI systems are very far from being able to do basic software maintenance even with handholding.

    • @rethardotv5874
      @rethardotv5874 14 часов назад

      @@username7763 I totally agree on that

  • @vincentvogelaar6015
    @vincentvogelaar6015 15 часов назад

    Oh, and…. I’m a huge fan…. Lol

  • @gavinh
    @gavinh 15 часов назад

    It’s ‘lose’ not ‘loose’. Sorry to be a d!ck but it drives me insane how often I see this.

  • @vincentvogelaar6015
    @vincentvogelaar6015 15 часов назад

    Foundation models will fail for the reasons you say it will, but you aren’t imagining what’s directly around the corner in terms of AI application.😊

    • @ContinuousDelivery
      @ContinuousDelivery 11 часов назад

      My point is not that AI can never do this, but that this seems like a limitation of LLMs to me, and this is probably one of the bigger barriers on the path to AGI because if they can work incrementally, then they are learning dynamically, and I am guessing that that will take more than a bigger “context window”. I am pretty sure that AIs will be doing all the programming one day, but not just yet, and not until they can work incrementally, allowing them to make mistakes, recognise them, step back to a known good point, and try again.

  • @vincentvogelaar6015
    @vincentvogelaar6015 15 часов назад

    I don’t understand how you can be so smart, and not understand that you are attacking a straw man AI thesis Single shot AI isn’t what you should be arguing against! Think about a tree of experts application that is primed with multi shot, each one operating RAG style within their scope of expertise. …. Your argument doesn’t hold water to this!!!!

    • @stalinthomas9850
      @stalinthomas9850 15 часов назад

      @@vincentvogelaar6015 The current scope of ML cannot create good programs let alone softwares. You have to understand the fundamental principle of any sequence to sequence models is that it just predicts what is the next most likely token in the sequence. This is not programming! This fundamental principle goes against the very logic of programming. Programming is about converting logic to computer instructions. Even though we call it a programming language it's not the same as language that these ML models are really good at. The idea you have shared doesn't work the way you think it does. There's just a lot of hype around this and the fact of the matter is that we still have long ways to go.

    • @ContinuousDelivery
      @ContinuousDelivery 11 часов назад

      Still not reproducible, and so still not amenable to building solutions incrementally.

  • @manishm9478
    @manishm9478 20 часов назад

    Excellent video. Mirrors my thinking on this, but articulated much better 😄

  • @jakerowsell8752
    @jakerowsell8752 День назад

    Focus on output isn't a bad thing, even if your aim is outcomes that will still be delivered through output. There is no metric for value.. sure. But if you have no output you will not achieve any outcomes.

  • @sebastianrodriguezcolina634
    @sebastianrodriguezcolina634 День назад

    I agree with not adding unnecessary complexity upfront, but it is true that the job market will be looking for people that understand the tools, so engineers need to learn some of them anyway

  • @khana.713
    @khana.713 День назад

    Standards for juniors have increased. It's harder to coast now

  • @jokelot5221
    @jokelot5221 День назад

    Good video.

  • @gunderd
    @gunderd День назад

    Good to see that Dave, like me, is also subject to being a bit curmudgeonly at times, and a great reminder from Kelsey that not all complexity is accidental or unnecessary. Tools like k8s solve very real problems, and for many organisations the learning curve is well worthwhile to help support requirements that are now considered basic table stakes in modern software.

  • @bernhardkrickl5197
    @bernhardkrickl5197 День назад

    These are very good points. But whatever points are made for or against AI coding, it has already been proven that there is no algorithm that can write aribtrary programs. And an AI *is* an algorithm. A complex one, that we do not really understand, but an algorithm nevertheless.

  • @JDLuke
    @JDLuke День назад

    Mr. Hightower's point about vim vs. emacs and tabs vs. spaces is a valid one. It's also broadly applicable, whether it be about software engineering, politics, or sports teams.

  • @natyyyyyyyyy
    @natyyyyyyyyy 2 дня назад

    no

  • @TristanBailey
    @TristanBailey 2 дня назад

    Kelsey is such a good teacher and demo-er. Always time to learn from him even when I don’t need high level of k8

  • @mzbmwbbpkf
    @mzbmwbbpkf 2 дня назад

    Isn’t this like a year or something old?

  • @java_Marcelo-xx5nw
    @java_Marcelo-xx5nw 2 дня назад

    Thank you for share!

  • @grokitall
    @grokitall 2 дня назад

    the answer to the question in the title is no. large language models use statistical methods to basically do auto complete suggestions. they are also prone to quality poisoning due to untagged data containing arbitrarily bad samples. to select which which refactoring to do from the list of available refactorings for the entire codebase, you need a model of the codebase, which by definition, the llms don't have. it could be done with a good enough expert system, but that is a completely different type of ai.

  • @ganauz
    @ganauz 2 дня назад

    Sorry for the off topic... Dave, I have the same T-Shirt 😁 Great episode and with great content as always. Thanks for all your work. Love this channel and have shared it with my team as place to go to and learn.

  • @andreaslange8113
    @andreaslange8113 3 дня назад

    To the question: Is Kubernetes suitable for developers to build anything and everything? Why do software developers have the tendency to be all or nothing over their tools and practices? NO! Kubernetes is a new highly automated infrastructure layer automating and managing container runtime. To build Kubernetes onprem is a quite high invest to do at scale and manage lifecycle. It is a CaaS Layer on top of Infra/IaaS. Developers should care about to implement their business / user requirements coding using TDD to ensure integrity and correctness of their applications. Kubernetes, when using it, needs additional layers (with even additional complexity) on top, to satisfy developers. The k8 API has not a good contract between platform and developers because a developer needs to care about too many things infra related. Kubernetes is an option for many workloads and there are also good reasons to run workloads on top of k8.

    • @jackpowell9276
      @jackpowell9276 2 дня назад

      Where would a developer not need to worry about infrastructure? If you move up the managed service scale to cloudrun there is less, but if you're going to VMs there is more. Perhaps you have a separate infra team from development team, so devs don't do any infra, well that pattern works pretty well with kubernetes too. With a platform team managing the platform, CD portion of the delivery pipeline, helm charts etc, and the developer handling the development and CI portions, and picking if the service needs to be internal/external and its names.

  • @latro666
    @latro666 3 дня назад

    While i agree with the sentiment of this video, saying that AI only provides answers is not true. 'pretend you are a junior developer here is some seniors code. Ask some interesting questions as to why it was approached in this way.' [Some code that sends an email] Certainly! Here are some interesting questions that a junior developer might ask about this code: Why is the mail() function used directly here? Is this the best practice for sending emails in PHP, or are there better alternatives such as using a library like PHPMailer or SwiftMailer for more robust email handling and error management? What are the potential issues with hardcoding the email recipient and sender information directly in the script? Would it be better to store these details in a configuration file or environment variables for easier maintenance and security? .... There were over 10 questions, i could of asked for many more.

    • @gabrielpauna62
      @gabrielpauna62 День назад

      That's a simple thing and the questions it asks if you read it carefully it's just doing a code review ... a junior wouldn't be asking that

  • @kortyEdna825
    @kortyEdna825 3 дня назад

    More and more people might face a tough time in retirement. Low-paying jobs, inflation, and high rents make it hard to save. Now, middle-class Americans find it tough to own a home too, leaving them without a place to retire.

    • @PatrickFitzgerald-cx6io
      @PatrickFitzgerald-cx6io 3 дня назад

      The increasing prices have impacted my plan to retire at 62, work part-time, and save for the future. I'm concerned about whether those who navigated the 2008 financial crisis had an easier time than I am currently experiencing. The combination of stock market volatility and a decrease in income is causing anxiety about whether I'll have sufficient funds for retirement.

    • @carssimplified2195
      @carssimplified2195 3 дня назад

      This is precisely why I like having a portfolio coach guide my day-to-day market decisions: with their extensive knowledge of going long and short at the same time, using risk for its asymmetrical upside and laying it off as a hedge against the inevitable downward turns, their skillset makes it nearly impossible for them to underperform. I've been utilizing a portfolio coach for more than two years, and I've made over $800,000.

    • @Justinmeyer1000
      @Justinmeyer1000 3 дня назад

      How can I reach this person?

    • @carssimplified2195
      @carssimplified2195 3 дня назад

      ‘’Aileen Gertrude Tippy’ maintains an online presence. Just make a simple search for her name online.

    • @Justinmeyer1000
      @Justinmeyer1000 3 дня назад

      I checked Aileen up out of curiosity and i must say i am impressed by her Credentials. i emailed her already, waiting on her response.

  • @hanif72muhammad
    @hanif72muhammad 3 дня назад

    so... wrap it up then you can mock it?

  • @roganl
    @roganl 3 дня назад

    Kelsey seems to think that K8s is a good solution for workload mobility and that its added complexity is paid for by the additional uptime it affords. This is false on its face. This is a "last mile" cost issue, where getting to "full workload flexibility" is the holy grail that companies are all pursuing. Unfortunately the complexity that k8s adds costs in outages, cluster upgrades, integration and compatibility woes. K8s is an extensible API on top of etcd. It's not produced by a single development group or corporate overlord - but is comprised of a vast array of "products" that are "compatible" with its API. It smells like the sequel to OpenStack - everybody and their brother's cousin's uncle claiming their own niche in the "ecosystem" - selling/marketing solutions that are poorly tested and poorly integrated across that ecosystem. And now Devops groups get to pay to beta test, integrate, and unkink entire K8s infrastructures that are each unique amalgams of the hotness of the moment at the time they went to production. Think about how long it took the USB standard to have a stable implementation, where the stable versions of the dominant OSes didn't exhibit "weirdness" with its long touted "plug-n-play". Consider how warily new filesystems are adopted. Think about how eagerly RAID5 gets adopted to squeeze "value" out of storage cost, only to discover that it's inherently brittle when compared to RAID1 or 10. Does running your datastore or datacenter on the technology equivalent of "cups & ball" carnival trick really make sense?

  • @MrTbirkett
    @MrTbirkett 3 дня назад

    Kubernetes is complex if the only abstraction you're dealing with is raw YAML manifests... or if you skip that step to go full Kustomize and GitOps. There is a sweet spot in between.

  • @NicodemusT
    @NicodemusT 3 дня назад

    "The open, accessible web should be built upon endless build systems, virtual environments, full test coverage and endless gatekeepers." - Sir Tim Berners Lee

  • @Immudzen
    @Immudzen 3 дня назад

    I like that almost everything I do is HPC type stuff. We just use something like PBS to submit jobs and have them run.

  • @buffyf2680
    @buffyf2680 3 дня назад

    I think that introducing additional abstraction/complexity is worthwhile only when its (abstraction) complexity is less than the complexity of the problem it solves.

  • @MrSnivvel
    @MrSnivvel 3 дня назад

    Coming from a SysAdmin background and dealing with software developers that then think of themselves as equally competent SysAdmins because of things like k8s; it's very easy to see the reasons why simple things become overly complex and costly because the wrong tool and skillset are trying to be forced to work to fix a problem. All of the additional requirements that Kelsey starts laying out can be still be easily solved, even without k8s. Wisdom is knowing when to grow into a tool organically and not hinder or force yourself from/into making that transition. Lastly, always incorporate having a means of getting metrics and performance data no matter what solution is created or used; so that when management and customers start yammering on about needing to scale up to be the next Amazon but they're just a bicycle repair shop in a small town, you'll have quantitative data to give them as to why their "needs" of "twenty-seven 9s of uptime" and "geolocated on 6 continents" is ridiculous.