LDD: Learning Driven Development

Josh Cirre
Josh Cirre

Josh's talk focuses on the concept of Learning Driven Development (LDD), emphasizing a paradigm shift in how developers approach the learning process. Josh highlights the inefficiency of traditional learning methods where developers are first expected to acquire knowledge before building, suggesting instead that learning should happen concurrently with creation.

Josh argues this reversed approach addresses the common challenge developers face when presented with extensive learning requirements before starting projects. By sharing his personal experience automating security reviews through AI, Josh demonstrates how encountering a specific problem naturally drove him to learn about embeddings and vector databases, illustrating the effectiveness of problem-driven learning.

Josh advocates for three key principles in the LDD approach: making learning personal by connecting it to individual problems, focusing on identifying problems rather than tools, and maintaining continuous creation as the engine of ongoing learning.

Share this talk

Transcript

Hey, everyone. My name is Josh. And usually I I give the start of the talk to say who I am, what I do. But since, you know, Brie and Taylor already gave a little bit of an introduction, I only have five minutes.

I figured I'm not gonna spend too much time talking about who I am and what I do because I only have five minutes to talk about what I really want to talk about with you.

But in fact, just me telling you that I'm not gonna talk about who I am and what I do has already taken twenty eight point two seconds. And the people watching the video get that bit a little bit more because they actually see it took twenty eight point two seconds.

But yeah, we're gonna be talking about LDD three letters and you already kind of got it spoiled for you of what those mean. It's learning driven development. So what does that mean for us as developers? Learning driven development.

Well, I've heard this phrase put on and it's something that, you know, it's kind of resonated with me a little bit. I don't know exactly where this quote originates from, but maybe you've heard it as well. It's the fact that you can just do things. I don't know who said it.

I don't know, like, where it originates from. But yeah, maybe it inspires you. Maybe it doesn't. I don't know. But you can just do things. But in fact, in order to just do things, you need to learn how to do things, right? You need to learn how to do the things that you want to do.

You need to learn what things are the things that you want to do. Right? You need to learn how to do things. And the fact with learning as developers, I think we need to learn how you learn. That's the starting point. That's the primer for learning, especially as developers, but just as individual humans as well.

We need to learn how we learn. And I could go off on tangents of specific learning styles of what, of how you learn is different from how you learn. How I learn is different than how someone else learns. And you probably learn different from anyone else in the whole world. But learning how you learn is important.

It's something that is, you know, interesting to you. There's a fantastic book called How We Learn by Benedict Carey. I absolutely recommend it. Just giving a starting, a primer for how you might learn because it affects how you go about life, not just as developers. So how do we learn?

But the fact is, as developers, especially when we're starting out or even just seasoned developers, I think we have it backwards. Usually, as developers, we are told from the very beginning or as seasoned developers where whatever job that you might have, whatever project that you might have, you need to learn something.

You need to have this list of things that you're going to learn when you're getting a job. You need to learn React or HTML, CSS, JavaScript. You need to learn how a database connects to this. You need to learn these things.

And maybe even as seasoned developers, you are saying you're being told by someone above you saying you need to learn this, and then you can build something. So you need to learn something in order to build something. But I think as developers, especially, we often have it backwards.

And I think in life as well, it's not learn something and then build something. It's learn something while building something. So what does it mean to learn something while building something? Well, let me tell you a little story that happened two years ago.

Two years ago, I had a problem at the job I was I was working at at the time, and I was wasting too much time doing these, security reviews, basically 500 plus questions of answering these things for companies. And I already had the answers. I just need to copy and paste them.

Well, I wanted AI to do that, but I learned quickly AI has context limits. I can't just give it 12,000 documents and say, hey, go figure out these answers. No. I had to learn about these words like embeddings or vector. And really, the only thing I knew about vector was this dude.

So I was like, that can't be it. Right? So I had my problem. My problem that I had to learn what to solve this problem for.

And I quickly learned everything about embeddings and vector databases and how you might even do queues and long standing jobs in order to solve all the problems that I had in order to give myself more time in the day. But you can't fix everything. As humans, as developers, we can't fix everything.

In fact, my wife constantly reminds me of this if my daughter falls and scrapes her knee. The first thing I want to do especially as a dad is like I I can fix that. But no, she says you can't fix everything.

But the good thing is as developers, as people who are geared to fixing problems, we look at our individual problems and we say, Oh, I can fix that. And really, that's where the starting of our learning process begins. Finding the problems that you have that you can say, oh, I can fix that.

So I wanna leave you with three things. First, make it yours. When you're learning something new, make that problem yours. Make it mean personal to you. We just talked about image optimization. Something that you felt passionate about, but at the same time, it's not gonna be a problem for anyone else until it's your problem first.

So make it yours in order to solve the problems that are at hand. Second, find problems, not tools. Often times as developers, we're like, I want to learn x. I want to learn y. Or I want to learn z. Just like I said, we're always off until I've learned something, and then I can build something.

But no, you have to start with a problem that is specifically yours in order to find the tools that you need to solve that problem. Think about it in reverse. And lastly, keep creating. Because as developers, the only way we're gonna consistently learn is if we're consistently building.

And the only way we're gonna consistently build is if we're consistently learning. So whether that's printing off documentation or whether that's, finding new ways to solve problems and finding new tools that solve those problems, you need to keep creating. So you don't need to know everything to start, but you just need to start to know something.

So keep creating. Thank you.

Related Talks