Wednesday, May 09, 2007

Designing Software Development Methodologies

As a side note to my normal entries, I wanted to mention a website that I've started that explores a new/different approach to software development methodologies. The site is at www.methodologypatterns.org. At this site, I put forth the opinion that methodologies should be designed, not necessarily pulled off the shelf.

Not only should they be designed, but it's important to go back to "first principles" in understanding what a methodology is and how it should be designed. The idea behind the methodology patterns is to first advocate for methodology design, then define the first principles from which to perform that design, and then to provide a library of practices to use and patterns of those practices to piece together a viable methodology. See the site for details.

Monday, January 22, 2007

My Pumpkin Can See

Since my kids are pretty young, when it comes to carving the pumpkin, they do the "drawing" and I do the "carving." I think it has to do with all that "gunk" inside...that, or the sharp knife thing.

Well, I was working on one of them while my daughter looked on, making sure that I "did it right." Of course, I wasn't, because she told me so. You see, carving circles in a pumpkin, especially small ones, is *really* hard. I didn't have a professional pumpkin cutter (you know, those cute little orange-handled things that work like a saw), so all I could do was carve straight lines, and then "adjust" things to make it look more like a circle.

Of course, my daughter noticed that my cuts weren't going to work, since they were "straight" and she wanted "round." I had to explain to her that I was getting there, that they would look like circles when I was done. She didn't believe me, because she couldn't "see" it.

It reminded me of sculptures. You know, those artists who can take a rough piece of wood, whittle it down into a masterpiece, and you've no clue what they're working on until they're nearly done. You just can't see what it is that they see.

I feel like that happens with programming. Sometimes, it's difficult for others to "see" what it is that you're trying to accomplish. It's hard to describe, but you know what you're trying to do. You just have to show them the end results and hope they appreciate what it took to get there. The perception is that it shouldn't be that hard, because it's just a simple web site, or a simple GUI, or something like that. They could probably do it in a couple of days, while you're claiming it'll take weeks, if not months. They just don't appreciate what they can't see.

It's a good thing my pumpkin can now see, 'cause otherwise, my daughter would have made me buy her a new pumpkin and start all over. I don't like the "gunk," either.

Tuesday, October 10, 2006

It's All About the Fundamentals

I was out shooting around at the basketball hoop in my driveway and noticed how poor my shooting had become. I used to play quite a bit of basketball, and though I never considered myself all that great, I certainly kept up. However, I've not played seriously for many years (kids'll do that to you), and it was obviously showing in my performance that day (luckily, no one was watching).

So, what did I do? Other than lament for the "good old days," I stopped and paid attention to what I was doing. I remembered learning all those fundamentals when I was a kid...how to hold the ball, how to release and follow through, etc. I'd not forgotten them, though my hands had.

And to my surprise, after some concentration, I was making noticeable improvement. Hey, I'm not so bad, after all! Of course, it wasn't like I was hitting every shot or anything, but my focus and concentration on the fundamentals had obviously helped.

And so I'm reminded of my own programming experience...those times when I've "walked away" from it, forgetting and losing my touch, only to return and, luckily, remembering the fundamentals and picking things back up. I'm reminded of watching struggling programmers who never learned the fundamentals, and how they struggled over issues that they would not have, had they stuck to the fundamentals. It's all about the fundamentals.

Monday, July 03, 2006

Solitary Sport, Team Play

Programming is typically viewed as a solitary sport. That is, programmers are sent off into a cube, given their tasks, and emerge when the work is done. Obviously, a team exists, and get-togethers are common (sometimes too common). In some of the more agile environments, programmers are teamed together in pairs.

Recently, I spent some time "away from home," starting a new job (with the family to follow). I found myself, alone, in a apartment, with my evenings unadorned of family things: dinner, play, or any of the typical family-related evening activities. Did I mention that I was alone?

Great, I thought, I'll have plenty of uninterrupted time to work on some projects. I had plenty to do, lots of time to do it, and absolutely no motivation to get started. I found out something very interesting: it's hard to get motivated when you're the only one in the room (or whole apartment, in this case). I've not worked as a sole programmer on a project, so I'm not sure how they get motivated. However, I realized how important it is to put a team together and keep them together. They play off each other; they require each other to be "near" (even though they may not constantly communicate); we are a social animal, even when we work.

Watching the World Go By

I typically work while I eat my lunch. So, there I was, sitting at the restaurant eating lunch, working on something or another for work. As I like to do while I'm eating lunch in this way, I look up and watch...I watch people, things, and generally let my mind wander a little. I've discovered that this is an amazing thing.

You see, I remember watching Dead Poet's Society with Robin Williams. He was an English teacher, and one day, he had the entire class climb up on his desk (one at a time, of course), take a quick look around, and then jump down. The idea was to give them a different perspective on life. It's about taking the time to see what's going on around us. It's also about seeing things from a different perspective.

That's why I like to move around while I do my work. Since much of my work requires considerable thinking, it's important that I give my subconscious mind the time it needs to sort things out. And I've found that when I "wander," I'm able to see things differently. Sometimes, that makes all the difference.

Programming is a thinking-man's game. It requires deep and focused thought. And, I believe, it also requires variation, perspective, and time.