The process we use to develop software also helps us develop ourselves.
The development methodologies and tools we use to build software can also be applied to the way we do other things in our lives. Software development literally becomes part of who we are. How many times have you been around a table of folks (who are not involved in the high tech industry) and someone asks you what you do for a living? As you start to explain how you create software that can be used in all sorts of business systems, you can see their eyes gloss over with a thats nice kind of look. However, even if the technical details of our professional are elusive to others, how we live our lives becomes a reflection of our work. And visa versa.
For example, Im about to take off on a 550 mile, 7-day bicycle tour. Some might think that mileage is on the crazy side, but I literally think of it as 27 (ok 27.5) x 20-mile rides. Ok, so Im in denial, but that seems like a much more manageable number. This is the same scenario we apply when using XP or Test-Driven Development (TDD). We take a complicated problem and break it down into its most basic parts, and then work iteratively from there. Eventually, well get to the point where all of the basic parts equal the more complex scenarios. If you want to take a look at how XP and/or TDD actually is used (and works), check out the agile alliance where youll find plenty of pointers and resources.
I find myself injecting software development process into many aspects of my life without even realizing it. I frequently speak with Dave Thomas at various conferences, and have listened to him talk about the broken window theory. While this is a theory that was applied in a social-economic environment, it fits into the software lifecycle as well. Nobody wants to be the engineer who takes the nice, neat, clean, tested code and breaks the window. I actually applied the broken window theory to another part of my life to see if I could keep my closet neat. This has been an on-going project since Ive been about 5. I thought if I keep everything folded, then by magic they would stay folded, and new laundry would fold itself. By and large it really works. Im going on about 6 months now of actually being able to find the shirt in my closet Im looking for and it is (relatively) wrinkle free. Six months is a personal-best record for me. The point (and Im pretty sure I had one) is that we can apply facets of our work to our lives, and how we live our lives to our work.
So Id like to thank Dave for helping me keep my closet neat. If only my mother was able to locate him when I was 5.
As you start to explain how you create software ...
Oh, c'mon. That's the *first* thing you learn: never try to explain it past, "I write software." It's better that way. People tend to have much more romanticized images of the job, and explaining the gory details would only ruin their day.
"You mean you sit in meetings all day?"
"So *that's* why they call it a veal pen!"
"Aren't there laws about working that many hours?"
I find that the most difficult thing to do is teach someone something new, different from the way they "normally" do things. Even if this new way is clearly superior, obvious, relatively intuitive, a no-brainer.
The problem is that people generally resist change due to the FUD factor.
This is especially true when trying to introduce complex modern development methodologies into organizations that are perpetually stuck in waterfall mode. It is difficult maintaining focus on the vision, when distracted by momentary obstacles that have the potential to derail the mission. These obstacles all too often become convenient excuses for retracting back into the carapace.
One strategy is to bring in an outsider, someone that has credibility and the ability to carry the FUD on his/her shoulders, to drive the project and hopefully affect change. The key, as Sue points out, is to develop confidence through small and consistent successes, break the problem down into manageable chunks, build on those successes and develop the "muscle memory" to the point where it becomes natural. Just like life.
The process we use to develop software also helps us develop better relationships/love life. To quote Wiki, - Do The Simplest Thing That Could Possibly Work: try chocolates first. If that doesn't work, roses. Don't make a complicated plan on how to win their heart - just think of something simple and honest. - Continuous Integration: If something goes right, be sure to cement that behaviour by presenting her with a gesture of approval. If something goes right, be sure to include it in your future plans. - On site customer: Long Distance Relationship does not work...
I'm sure you know which process I am talking about,