The Most Important Programming Invention In 20 Years

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
we recently asked developers a question on social media what's the single best invention or Discovery for software development in the last 20 years I found some of the responses a little surprising and interesting so let's take a look at what people [Music] said hi I'm Dave Farley of continuous delivery and welcome to my channel if you haven't been here before please do h subscribe and if you enjoy the content here today hit like as well I confess that I was somewhat surprised by many of the responses certainly asking a question of people who follow me on social media is in no way SCI a scientific study but there were some common themes and several of them were not really the things that I would have necessarily thought of from a personal perspective even though it may sound a little self-serving I would have said continuous delivery and several people agreed with me ranking continuous delivery sixth in terms of the number of people that mentioned it and may be equal fourth if you add in the votes for continuous integration and deployment pipelines too I think that if I was actively trying to be more modest though my choice would probably be the the public Cloud which did come in at number two in terms of overall popularity there were lots of outliers and several things that were neither new in the last 20 years like mechanical keyboards and Version Control although I struggled to see how they represented an improvement in software in general like softwar defined networks but then again this isn't really the question that we asked we asked for the best so I guess subjective responses are totally fair so what I thought that I'd do is take this chance to reflect my views on some of these uh Technologies the top five that were that were chosen by by our subscribers and viewers and maybe what they say about where we're at as a discipline the winner in terms of the most votes did surprise me quite a lot it was git I combined the votes for git and GitHub which seemed reasonable to me as GitHub played such a significant role in popularizing gift so I think that's fair my surprise though he not down to me doubting that g has had an impact it certainly has it has become pretty close to being ubiquitous pushing every other competing Version Control System to the margins really it's possible you may be using perforce if you are versioning large amounts of binary data you may be using subversion if you're only just starting out with Version Control and want something that's a little bit easier to use than git but for mainstream everyday development gits the default Version Control of choice I heard a lovely quote recently from a physicist who said that you can tell how sure Sciences of an idea by counting the number of books on a particular topic if there's one book that you must read to understand that topic then it's almost certainly correct and there are if there are hundreds then we don't know the answer yet get the one book it works it solves the problems of Version Control for the vast majority of cases it's not great at binary data but apart from that it pretty much just works let me pause there and say thank you to sponsors we're extremely fortunate to be sponsored by equal experts and transic both of these companies offer products and services that are extremely well aligned with the topics that we discuss on this channel every week so if you're looking for excellence in continuous delivery and in software engineering click on the links in the description below and do check them out we also have some channel news for those of you that don't know the engineering room is a monthly podcast where I talk in some depth with some of the brightest Minds from software engineering from now on you can find full episodes of the engineering room on all of your favorite podcast platforms including Spotify Apple podcasts and Amazon music clips from these podcast episodes will continue to be posted here on our YouTube channel and if you want to see the entire episodes in video form you'll be able to get those via the continuous delivery patreon page this Sunday we are going to welcome Chief Architect at Spotify Nicholas gustavson to be to the engineering room so be sure to listen to our fascinating wide-ranging conversation available from the 31st of March it was a really interesting chat your incredible support helps us to bring you these regular episodes so please do leave your positive reviews on your podcast platform to help us to continue to grow and to bring great guests like Nicholas to explore their insights thank you very much for listening I confess that I do find G somewhat annoying the command line interface is horrible and inconsistent when I was programming more frequently as part of a team I found that roughly once every two or three months I'd find myself having to navigate out of some Tangled mess of clashing changes and this was nastier and more fiddly than previous Version Control Systems that I'd ever used before but the tools did exist to allow me to fix the messes that g git led me to create and the fact that I didn't need need a working network connection in order to continue working and relying on Version Control which is completely Central to how I developed software was a huge win that I still value very highly indeed to this day get introduced the world to distributed Version Control and it's not the only version but this is simply a better answer to the Version Control problem than what what went before in git everyone has a local copy of all of the changes that in total add up to the entire revision history of the piece of software that you're working on the big difference between distributed Version Control Systems and the centralized systems that largely preceded it is that g in git there is no special place other than by convention that represents the truth of the system every repo is the truth of the system and we can merge changes from any repo to any other repo I think that this is a fundamentally better solution than the simpler client server model of the previous generations of Version Control Systems and they certainly a huge Step Beyond the pessimistic locking uh of of earlier systems so I guess that the thing that surprised me about git being this number one choice was that something that is seemingly so fundamental so basic so down in the weeds of software development was seen as the best change in the past 20 years get though a big step also felt like an incremental step to me but when I pause to think about this maybe that's right for me as I mentioned Version Control is pervasive to the way that I organize my work but not to everybody else my normal working pattern is via test driven development red green refactor and then commit that means that after each small commit I'm leaving a breadcrumb on my path to progress I can step back to a stable point at any time stable because my test was passing so that if I change my mind about something or I can step back just before I started heading off in the wrong direction I can choose to do so this has a huge impact on my own productivity and even more importantly a big impact on giving me the freedom and confidence to explore better I find I am much more willing to try something speculative to see if some new idea looks better in practice than I was before I started using Version Control in this fine grained way so maybe I shouldn't really have been quite so surprised that git was the first choice for the best idea the next in line was the public cloud and as I said this I have no cribble here this would have got my vote it has significantly moved the game on for software development the cloud has commoditized what was previously a difficult complex part of the conundrum of professional software development and has lowered the barrier to entry for building up to global scale Computing this is clearly not a change that that has run its course yet I'm absolutely certain that there are more significant steps to come in particular in respect of further reducing the complexity of cloud-based Computing but already there are difficult problems that mostly we don't need to worry about anymore because they've been abstracted and subsumed into the cloud platform Services I think that we are still in the very early days of this in reality though this change is continuing the current generation of cloud services seem to me to not really be presenting a very coherent very unified programming model rather they Supply a toolbox of pieces and leave still quite a lot of the Fairly grungy detail to the programmer this is a maturity thing and as I discussed with Greg or hope um who is working on this problem of improving improving the cloud programming model it takes a long time to make changes of of this kind and to stabilize programming models on this kind of scale but I'm pretty sure that it will come my own bias and bet on this on the strategies for solving this problem is in the direction of more asynchronous event sourced actor-based models for scaling systems up and extracting The Accidental complexities but time will tell if I'm right nevertheless I think it's impossible to ignore the impact of the cloud and the resulting commoditization of the forly very difficult problem of operating global scale systems next in the rankings was Docker actually if you included test containers to the docker score Docker beats the cloud I don't quite buy that though but in general yes Docker has made a big difference I get it I think that there are two distinct pieces of value here though and I have no way of telling from the answers to my question which aspect of the docker usage people value most highly the coure idea that Docker brings is that it represents a standardized box to put software in hence the container as in containership analogy standardizing the distribution of goods by putting everything into a standardized standard sized box revolutionize docs and transportation globally Docker has done much the same for software I can deploy and run a default off-the-shelf image of a web server or database that's someone more knowledgeable than me prepared and just use it or I can craft a custom image that contains my legacy application and package the deployment and configuration using those tools allowing for the distribution of all of them in a standardized way using the same same kinds of tools simplifying the problems and making them more amable to generalized collections of tooling as part of that standardization this is certainly a big win so Docker has given us a reasonably simple tool to standardize the deployment of arbitrary complex single node systems and it has given us a way to distribute canned usable standard pieces of software without needing to know or understand all of the detail of what's going on inside the box at a simple level as a developer who often plays with different languages and tools I can create whole development environments based on off-the-shelf pre-canned configurations of components and then customize them to my needs I guess that my slight ambivalence is is once again an issue of maturity we aren't quite in that ideal position yet there are a raft of complex problems that Docker kind of surfaces more clearly than before which has generated a further generation of tools to fill the gaps tools like cubes for example but once again to me and I recognize that this is my own personal bias the programming model still feels a little bit too bottom up and lacks the kind of abstractions that means that I can ignore some of the grungy detail that is full in my face when building distributed Solutions after even out of collections of Docker components I fully accept that I may be looking for something that doesn't really exist but I think that it is possible to get Neer programming models that better hide more of the plumbing largely by better abstracting the conversations between the pieces and I wish that we had something more like that moving on though the next in the list is large language models once again again I was surprised by this choice and once again I'm not entirely sure why I was surprised after all I know that this is something that everyone is talking about and fascinated by me included but my impression has been that the verdict is still rather out on where we sit in terms of the impact of AI systems on programming so far to me there seems to be a spectrum going from something like this is already so good that it's going to replace all programmers to there's been a reduction in code quality with the use of large language models doing the coding I guess that my assumption has been somewhere in the middle large language modelbased code assistance represent an interestingly useful tool but has some serious limitations that means that it's certainly not yet good enough though to replace all human programmers we're on a journey with this one for sure equal to large language models in terms of mentions though was continuous delivery we got around the same number of vot votes and was in the top four or six depending on how you count the votes this was very gratifying for me personally and almost certainly represents a selection bias based on the people that follow me on Twitter but despite my personal Prejudice I do think that this is reasonable I think that in the past 20 years continuous delivery has moved from being a niche practice practiced by a tiny minority of teams and organizations to something that I think that we can justifiably claim to be the state-ofthe-art for software development practice virtually all major players that we think of as exemplary in software development these days employ continuous delivery in some form and nearly everybody that doesn't aspires to do so I'm also pretty convinced that in the future when the Superhuman artificial intelligences are writing all of the software that they will be using git to store their source code Docker to deploy it to the cloud and will'll be working incrementally to keep their software in a permanently releasable State following the guidelines and principles of continuous delivery so maybe these were the best things that we found out about in the past 20 years after all thank you for watching and if you enjoy the stuff here on the continuous delivery Channel please do consider supporting our work by joining our patreon community and if you are already a patreon supporter thank you very much indeed for your support of the channel it helps us to make content like this and if you're not already a patreon supporter please do consider joining our patreon membership we have an evergrowing group of people and an active Discord where we debate ideas and people share experience reports and all sorts of other valuable information and resources do check it out thank you and [Music] bye-bye
Info
Channel: Continuous Delivery
Views: 16,468
Rating: undefined out of 5
Keywords: software development, software engineering, software development trends, software development trends 2024, history of software engineering, new software engineering technologies, new developer technologies, learning to code, learn to code, programming, new developer inventions, dave farley, continuous delivery
Id: XC7BeLRm7ak
Channel Id: undefined
Length: 15min 52sec (952 seconds)
Published: Wed Apr 10 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.