Software Development will be AI-driven - Scenarios of the Future | Marko Klemetti & Henri Hämäläinen
Explore the dynamic software development landscape through four compelling scenarios that envision the industry's future. These scenarios will dive into emerging technologies, evolving methodologies, and the shifting demands of the digital age. By examining these potential futures, the talk aims to spark a thought-provoking discussion on navigating and shaping tomorrow's software world.
Transcript
[Marko:] Once again, thank you for being here, - also from my behalf, and then... - [Henri:] Thank you from my behalf also. Perfect. Today, we've decided also to go the direction of AI-generated imagery. And the first one to show is generated... Just kidding. So, it's funny that Bill Gates, when he released his book in 1996, - he wrote there that we overestimate the change - that will occur in the next two years, - but always underestimate the change that will occur in 10. And today, we are trying to give some ideas and visions - of the future of software development - combined with the explanations from me and Henkka. But also, I'm going to try to live code some. We'll see how far that takes us. Would you like to..? - [Henri:] Yes, thank you. So, the idea that we had is actually to walk you through - four different steps to the scenario, - which we see as a thing that will happen, - in, let's say, around 10 years all in all. So, the first scenario is something that is happening already. You most probably know, actually taking AI-assisted software into use. Then, the second scenario will be around putting the things together, - actually using AI for legacy things. Then, the third is about using AI for business requirements, - and then generating software based on these. And then, the fourth one, which we will discuss a bit more later, - is about self-developing software. So, how do you actually maybe take the step towards - that customers can develop the software themselves with certain limitations. But we'll come back to that one, we'll build the storyline, - we'll show some Marko's magic here in the way. So, please be actively participating here. [Marko:] Okay, let's start with the first one. So, AI-assisted software development, where we are currently. And I actually would like to include every one of you into this. So, please take out your phones and type in, you can either type in future.hopefully.works, - or you can scan the QR code. There will be a yes-or-no question. The question is, we already deploy AI generated code to production regularly. To production. Not only just using AI, but actually going to production. We're going to wait for a few minutes. [Henri:] So, it seems that there are quite a few people - who are already deploying AI-generated code to production, - which is a surprise. I hope you are actually doing it and not just stating. But it's nice to see so many of you actually using it already. [Marko:] More than half. - More than half. [Marko:] And I would say that Finland works as a prime example of this, - because... - Yeah, I think what always happens - on technology adaptations like this, - if you ask developers, 97% of developers say they are using AI, - they've actually used AI for development. Then, when you ask managers, - managers say 42% of companies actually use AI for their software development. Then, when we go to the actual value streams or workflows, - there's 11% who genuinely use it for their software development. So, it showcases the complexity of things, - but also, how it normally goes. There are these individuals who take it into use, - and it's so cool that we definitely want to say we are using, - but then the reality is something different. And if we go to the to the next slide, - so technology adaptation curve, most of you know this, - innovators, early adapters, those are the ones - that are actually the easy parts, - and then, there are the early maturity, late maturity and laggards, - like with every technology, - the same happens with AI and generative AI tools. And what we have seen with organisations, - it is really easy to get for innovators and early adopters the tools into use, - because you just give it to them, and they [chuckles] start to use it. Then, when we get to the majority, late majority or even laggards, - you have to do real transformation programs - to get them to use the AI properly. So, this is a learning which I hope you will get from this today, - even though we will talk about the future a lot. But now, as Marko is an innovator, - he will [chuckles] now actually show you some magic here. [Marko:] Yeah, I want to say that, once again, - when you implement new ideas in organisations, - you want to go through the innovators, early adopters. And I have to say, with the results we've seen here today - for the first poll, I would say that we have lots of the innovators here. However, when I look at coding, I see that we, developers, - I identify myself as a developer who can communicate - also with businesspeople, we just want to code. We just want to create working software. So, a brief introduction into how coding happens. I'm very often showing an example of a service - where we see the week number. So, it's just a website that shows the week number. And I have it actually running live. It's week.hopefullyworks. The reason why I'm using hopefully.works domain - is exactly for this kind of moments when I'm in front of you. I'm not quite sure what's going to happen. Anyways, so when we start, as developers, - to implement functionalities like this, so what we would today do, - function getWeekNumber, - and date, of course, is a parameter, new Date. Function, there, let's see. Okay. It proposes us some code. - [Henri:] Marko, just for everyone, - this is now the Copilot, right, what you're using? Yeah, so you're seeing GitHub Copilot here, - but I have to say that you could use whichever. So, whatever AI-driven development tool - you feel comfortable with, you could even go to ChatGPT - and ask for code completions, it will give you code. The point is we give context, today in development, - we give context, AI tries to guess what we're trying to do, - and then we export the module, like so, and save. Ah, yes, week 47. Amazing. However, I've also written some tests for this. And currently, so you can roughly see the test cases, - I've used AI to generate those tests. And all of the tests are passing, I can see this week. But this is an interesting year. So, if we open test cases here, - this is an interesting year because the year starts from Sunday. So, I would like to see if it should return week 47 - also for this Sunday, 24th of November 2024. Okay, once again, - using AI picks the context that gives me the code here. I'll just press tab, complete it and save. And let's run the test cases. Oh no, because the year starts from Sunday, - we would never see this when we're running our business days - from Monday to Friday, but actually, the code isn't working. So, I tried to solve, AI tried to please me here, - but actually as the Sunday is on the previous week, - it will give us a wrong answer. It says 48, even while we're expecting 47. And now if I have these tests, - and then I would have my week number code, I know it's not working. So, what should we do? Let's ask Copilot. Please generate me code that fixes the tests. Let's see what happens. I implement the getWeekNumber from module, - ensure, and then some code. Good. Copy it from there, close it, add it here. Whoops. Almost as said, demo. Oh, no. So much for that. [Henri:] You lost it. - Yeah, we lost the program. But it doesn't matter. So, we generate it again. And as you can see, panicking on stage for you. Don't worry about it. No sweat needed here. I only wrote a part of the sentence, and it gave me the code. And now I'll copy it here for real. I'll add it here, and I'll save. And then, we'll run the test cases. Okay, not getting there. It doesn't matter. What we'll do is, - we'll continue by changing the styles just a bit. So, we'll use steel blue and white as colours. And let's see if it works, npm start. Okay, there we go, so we have now different colours than in production. And then, we'll commit, - commit the changes, feat, change colours, push. And now, when we go back, so what happens is, - once again, we only want to code. Apologies for not getting the code ready for you, I won't make you wait more. So, we've made a change to the code repository. And as a developer, we also want it to be delivered quite automatically. And as you can see, it's now in week - that hopefully works with different colours. [Henri:] For the nice demo, with the demo effect as it should. Yeah, yeah, as it should. As it should. [Henri:] So, we've had the luxury to work - with quite many different organisations all in all. And one thing that we've heard now is, - this is from one quite big organisation in Germany, - they actually have said that from their own studies, - the developers will save around three to four hours a week - using things like Copilot. As Marko showed, it's not that you just press a button, - and you get everything working. But at least for me, that's awesome. Like really, saving 10% or even more - in someone's work week, that is awesome. These numbers, someone will get 70% or something, - that's never going to happen. So, there's always so much more. But like 10%, that is a huge number in any case. [Marko:] Yeah. Once again, if we look at where we are with the automation, - we're essentially in a place where we're going to still fail miserably, - as I did on stage, which doesn't matter, - because if I took five more minutes, it would be working as expected. And I'm actually solving relatively complex problems using AI. And I also have the automation in place - to actually get it live into production immediately. Which means, where we are currently with the software development is, - with all of this platform engineering and continuous integration, - the DevOps practices, we already see that we're in a place where we can - design the code with the help of AI and get it released as fast as possible. [Henri:] One very surprising thing we have seen - actually from different organisations is that - there is less findings on CI/CD on security, basically. That's at least quite surprising - since there hasn't been any security related AI as such - implemented on this case, but it's just gives you better code - because it knows the basic mistakes and basic things that shouldn't be there, - which is, I think, a surprising thing that's going to happen - while using AI tools, AI assisting tools on development. [Marko:] And it's something that even, as said, on a Fortune 500 company, - this one comes from Denmark, what we can see there is, - when you put in all of the automated security analysis tools, - and you compare the people who haven't used AI - and the ones who have been using AI for a while, - have both learned to use more consistent and compliant code, - but also get the results out of the code generated. [Henri:] Good. So, that was kind of the current, - and now, we're kind of going towards the future. And I think Anne Lise started it really well in the morning, - many organizations still haven't done the digitalisation properly. So, this is related to that topic, even though we didn't know - that you will actually talk about it, but it was a nice segue to this one. So, again, let's ask something, Marko, first. How actively you actually use AI to modernise - your legacy software or your legacy app on the IT digitalisation end? Again, a proper fight. Interesting. [Marko:] A bit more, then we'll continue. But I think we're already seeing a trend here. So, once again, what I showed you with the latest bells and whistles - using GitHub or GitLab and deploying code immediately with, - I was using Vercel, you could be using Fly.io - or similar services, like Heroku, you might know. It's so much easier to get AI up and running there. But when you go to legacy code, it's nowhere near that easy. [Henri:] And what we studied and took some numbers here is like 99.8%, - almost 99.9% of code was actually written before AI was taken into use. So, there's a huge mass of something we might call legacy. Of course, not everything is legacy what was written before, - but there's a big mass of things, in any case. And there are other statistics, like teams use a lot of time still - just fixing the legacy or debt or what has been there. And this is from 2022, this very surprising fact - of 71% of Fortune 500 companies still have mainframe somewhere in the use. [chuckles] Which was kind of funny, and I don't think - there has been a huge change in the last two years for it, in any case. So, legacy, the old code still matters a lot. [Marko:] Yeah, and it's something that will essentially - slow our pace of change in the future. But as I said, the fast ones will go faster, - and then the slow ones will be slowed down - by the amount of legacy that exists. Okay, I get another try. I created a legacy sort. The previous example is easier to understand - because I can show a browser and some cool colours. This is just a sorting mechanism written in C code. And I'm not downplaying C code here in any way, - it still has its place, and it's an important tool, - but I'll still claim that some organisations have C code - that could use some renewal. And there are options for that. So, I've created a C code - that sorts a text file with numbers in different order. And if we look at how the modern legacy renewal would work, - once again, we would use AI. I've been using now the same tool here, Copilot, I'll keep on using it. So, could you rewrite me this code using Rust? So, Rust is one of the technologies that are currently being implemented - because it's compiled to C, and it's as efficient - as almost the best written C code. So, we'll pick here Rust code. We'll make a file, sort.rs, save it. And then, we have Rust compiler for the rust file. Ah, sort, not rust, obviously. Okay, one warning, doesn't matter. Let's then try numbers.txt. Cool. Maybe I'll print something here to make sure - that it really is the Rust code, - and I will get to see how my demonstration skills work. Rust sorting mechanism. Yeah, Rust sorting mechanism. And of course, as an example, this is relatively simple. We have this algorithm in place, and we replace it with Rust. But the point is quite clear. You have your code, AI gets the context, - it understands what the code actually does, - and it is able to rewrite the same functionality - using a completely different language. The same way as I am, for example, using AI as a translator today, - way more than I'm using, for example, Google Translate. [Henri:] And there are already, we're not going to go into the details,- but this is something that we've seen and heard from many of our partners, - that there are these tools coming. Their first tries are already, I think, open for try. So, this will, for sure, come. And we both believe this is the direction. We will definitely go with the legacy systems. But let's go forward. [Marko:] I'll show something before we go forward. We briefly added some tools that you could use. But I want to show you something. So, already in the version control systems, - you could have this kind of auto development in place. And here is just an example how it contextually would work. So, I have code scanning, it's CodeQL scanning, - and I have three problems that have been found from there. And how the modern world would work is that you have, - here's an example of Copilot autofix. It goes in, it sees the problem, it reads the code, - it reads the context, and it already proposes a fix for me, - which I can add in as a pull request. So, instead of just being a co-pilot sitting next to me or a translator, - it already is taking place as a real developer in the team - working independently, which will then take us to... [Henri:] Yes, thanks. I'm sorry for rushing you. [Marko:] No, no. - So, the third phase of things - is that we believe that the language will change. I think this is something, you always tell the story from Jan, right? [Marko:] Yeah, so Jan is one of my colleagues, - one of our colleagues working in Copenhagen, - and he has always told me when I've shown demos like week number, - he has always said, "Isn't AI a computer - trying to tell human how to communicate with a stupid computer?" And when you start to think about it, - coding languages have been created for the purpose of us, humans, - being able to communicate to stupid computers what they should be doing. And now, we've created AI to tell stupid humans - to tell stupid computers what they should be doing. So, it's quite obvious that this is due to change in the future, - and relatively fast, I would assume. [Henri:] Exactly. And this is a picture that genuinely Marko hates, - but I still got to show it to you. But the idea, shortly, is that, - how it would work is that the iterations with the product, - you can think about agile things, - you will have business requirements which start to iterate - with the human loop all the time, - and then when you can say to something, "Hey, this is good", - then it will go to the next level to get the non-functional requirements - or the operational stuff in security stuff, - the order doesn't matter, it can be something different, - but at least in bigger enterprises there's no point in always building - a perfect software and then going back to test it. It's going to be agile in very short loops, - which you can define maybe in the form of user stories, - or there are people from our end - who like more of these test-driven development things. So, we don't know what it will be, - but that's the direction we definitely believe it's going to go in the future. [Marko:] Yeah, and Peter, in one of the previous sessions on track two, - was talking exactly about this, - how, for example, in Qt environment, they have QML, - which is their language of explaining the user interface in code. And we see that there are similar solutions already, - for example, Figma is doing, and Adobe uses already tools - that you can use to define the user interface. And then, the connection from user interface into the actual requirements - and then getting into the operability is something that are clear steps - that are happening independent of each other - and will be connected in the future, in the near future. [Henri:] Third try. - Third try, yeah. One success, one failure. There is an interesting service called Critique. It's actually built for a very different purpose. It's built like a browser addition - to be used as AI helping you browse better. But what you can do with it, what they kind of implemented - to be part of it is, you can define an API using AI. API means Application Programming Interface, - which means a place where you can go programmatically - to ask data or information. And then, you can use anything you want with that information. Most of you probably know what API is. No, we don't have a questionnaire for that, don't worry. So, I've defined an API, - it says, "API that lists GitHub repositories that have most stars." And okay, this is a relatively boring API - because you can pull it from GitHub as well. But the fact is, it could be anything. This is just a demonstration. You go there, and you try out your own versions of it. It's quite funny. You define the Input Schema. I have limits. Then, Configuration, what's the name, and then Output Schema. And in the Output Schema, I already have quite a bit of information. I've already added, for example, the number of stars and owner here. And then, when we try it out, - test and export the code, enter limit, we want five. Five repositories. And of course, here we get into the performance - of modern API generated code. So, it has to interpret first what I'm wanting. Then, it has to get the results and interpret the results. But the results, however, is something that looks like data. This is JSON. And you can already read there top five most starred GitHub repositories - along with their details. And some code to accompany that. So, you could have a super simple, - this is just javascript code, don't worry about it, - but this is the URL I’m using for the Critique browser - using an API key and just a regu