Werner Vogels56:08
I do think if your job was only being a code monkey, just tapping, all you do is code, you don't think, you don't plan. If that would be... but I think most of us have had to think about some of the stuff that we built. We had to think about algorithms, tradeoffs. You went over to your colleague on the other side and said, 'This is what I need to solve here, but I think there's a cache out for if that happens and that will brown out, then do you think that too? Shall we set up a test environment and see whether that works or not?' There are so many parts to development that will require our brains. That's why I picked the word Renaissance. Before the Renaissance there were the Dark Ages: a thousand years of the Black Death, the plague, everything ordered by religious institutions. That changed at some moment where people became interested again in all the amazing things that had been done a thousand years before by the Arabs, the Romans, the Greeks. They suddenly completely started to change. There is this word associated with the Renaissance: polymath. Many people think that's someone who can do mathematics in many different forms. No, 'poly' means many, and 'mathia' means learning, much to learn. If you look at the people in those days, they suddenly started to become interested in many more things than just the one thing they were specialized in. Da Vinci was not just a sculptor, he built airplanes. Well, they didn't fly, but he did build them. Think about all the people in those days that suddenly allowed their curiosity to come out. As developers, there are a number of things we will encounter. First of all, we've been learning for 60 years now how to do computer science. We've been learning programming languages for 60 years, going from mainframes to minis to PCs to cloud to whatever. Everything required a new approach to building or enabled us to do new things. Before cloud, you may have only had one colo and never would be able to build a replicated database, but then cloud came and suddenly you could replicate your database. You need to learn how to do that. I believe it's not just sufficient to... and now I need to be careful because I don't want to give away too much of my keynote. I believe to be successful not only now, not only in the future but also now, is to not only have a deep specialism but start to become interested in the broadness as well. It's called a T-shaped developer. Someone that is not just a database expert, but knows about other types of applications, other programming languages, may even be able to help his colleagues on the other side or at least can have a conversation about it, understands the business principles of the business that he's actually running. Another area that the newer type of developer, the Renaissance developer, needs to be is an excellent communicator. If you look at the Amazon website, just imagine that for you. There are some parts of the Amazon website that always need to work because otherwise we can't sell anything: browse, search, shopping cart, checkout, and reviews because if there are no reviews people don't buy things. Five things that absolutely need to work. Then we have all the other things that are really important as well: recommendations, personalization. Then there is stuff that is just nice to have, like best lists. As a technologist, you need to be able to have a conversation with the business and say, 'How many nines do you want behind that? Oh, you want four nines behind your bestseller list? That's going to cost you so much.' Then it becomes a business decision how I am going to implement this. But I need to be able to explain to the business what the risks are, what the costs are, how resilient can I make this. Without that kind of communication, you're not building the things that you want for your customers. An important part of the Renaissance developer is to be able to communicate in exactly the right way, not only to the business but also with your customers. What are you building? How does this interact with this? If I show you a picture of the thousands of microservices that build out Amazon.com, if I do something here, what's happening there? Is there a relationship between the two? System thinking becomes crucial as well. Not just about your little piece that you're building, but what impact does that have on other things. You're happy going away, your database is running, your code is running, transactions are playing through. Suddenly the number of transactions doubles, but there isn't a doubling of the number of customers on the website. Who the hell is doing this to me? Being a specialist in one particular area and just staying there is safe, is fine. But you live in a bigger system. That really comes out of Donella Meadows' work on system thinking. In nature, if you remove one piece out of the equation of the complete nature equation, you ruin the overall thing. At some moment in Yellowstone Park, there were too many wolves. They removed the wolves from the park because they were killing all the elks. Then the number of elks grew like mad, which started eating all sorts of parts of Yellowstone. Not until they reintroduced the wolves did the balance get back. So system thinking is something that we as the future Renaissance engineers need to be part of as well. We need to understand that the one thing we're working on at this moment has impact on all the other pieces around it. We need to be able to communicate with the others, to see how we are part of this bigger problem. And it will be fun. One of the things I always found less interesting in the beginning of my life as a developer were code reviews. It's a bit like standing in front of the class and the whole class gets a chance to say you're an idiot. But code reviews are fun. Sometimes you think there are mistakes, sometimes you go 'wow, that's an elegant solution, I wish I had thought about that.' Code reviews are super important for junior engineers because the senior engineers are in the room discussing the code on the screen, and you're learning on the spot from all their years of experience. Someone will say, 'Yeah, I tried that when we were building product X, Y, or Z, and it really didn't work then, or the problem at that time was something.' Whether the code on the screen is generated by you or by some AI agent doesn't really matter. We still need to do code reviews because we have ownership. Whether we used a tool to create the code that we're looking at or whether we actually wrote it ourselves, we're still responsible for it. We still own it. Those things don't go away. If your system has been created by one of the AI tools, as I said earlier, you are responsible for it. Especially if you're in life sciences, healthcare, financial services, you cannot only rely on the fact that 'oh but AI built it.' You are still responsible for what you deliver. That means you need to be able to look at it. Generation of code may go faster, reviews will probably go slower because this is not code that I've written. If it's my code, I can stand up in front of the class and say, 'This is why I did this and this is why I did that.' But if a completely unknown, non-human entity created this code for you, it takes longer to get used to it. That's not bad. Don't take this as that I'm cracking on AI. There are parts that will never leave us. We need to learn the next steps. We continue to keep ownership of what we do. We continue to need to learn the next language, the next tool, the next system that we build. We need to know more than just that one piece. We need to be more than that. My favorite, and he comes back in almost every presentation that I give, was Jim Gray. He won the Turing Award. He's the guy that actually built System R at IBM, the inventor of transactions. Jim was brilliant. There's an article if you want to look it up called '20 Questions to Jim Gray.' Jim said, 'Give me 20 business questions that you as a user of a database would want the database to answer. I will build a database for you.' One of the most interesting questions: he walks into the room where the big machinery is and he hears the disks rattling. He looks sideways and listens to the disk and says, 'Your database layout is wrong.' That was something he could hear. But he was not just a database expert. He had a lot of other skills in other areas. He was what we would call a T-shaped developer. An I-shaped developer is someone that knows only one thing. A T-shaped developer has a number of knowledges in other areas, whether it's computer science or from the world. It's a broader person than just only the database developer. In the future, this is something that we will continue to harness. You need to know more. You need to be able to communicate with your colleagues that built other parts of the system if you actually don't know anything about what and how they're doing it.