Archive

My undergraduate degree was in history. As credentials to build a profession on, its a pretty useless major, unless you want to teach history. But one thing it gave me was a perspective on the flow of time in the human story. Everybody always thinks that now is the ultimate stage of development. Modern is wonderful. Woops, I mean post-modern is better. Oh, no, I mean post-post-modern is everything we ever needed. Wherever we are now, if we’re inclined by temperament to be content we have reached the pinnacle. If we’re inclined to optimism, now is messed up but surely truth and enlightenment are a stage or two down the line. If we’re skeptics then whatever we did yesterday was definitely wrong, we’re not that much better today, and tomorrow is doubtful.

When we call something “post” something else, generally its a reaction–a rejection of whatever was in the something we are now post. It is the plight of youth to react to whatever the generation before thought was great. It is the plight of the young, bright professional to think that the voice of experience has stagnated.

Not really being the voice of youth any more, I have come to understand that my views on how to do things aren’t the pinnacle of perfection any more than the problems built into previous generations of methods were perfect. The methods of tomorrow aren’t going to be perfect either. While technology develops, people basically have the human capabilities that they have had for the past several thousand years, and unless we hit a technology singularity (or maybe even then, just faster) or the world ends we are about the same as the people a couple of thousand years from now. Human nature, human creativity, human relationships, all work about the same over time. And these are what our lives are made of, regardless of whatever the current hype.

Given that work is done by humans, and humans tend to be about the same as they have always been, why does it seem with each generation that the new methods for getting stuff done are so much better than what has gone before? Is this just illusion? Is Agile really better than TQM and the “tired” methodologies that went before? Is post-Agile an improvement? Total Quality has a lot of obviously valid points in retrospect. The Theory of Constraints is mostly just common sense applied to processes. To a great extent, the heart of Agile (as exposed by the Agile Manifesto) is just a reminder about the human core of all processes. Here’s a guarantee: our children will think Agile is nonsense, and whatever is the new fad is incomparably more effective. Our grandchildren will be post-whatever our children are. And they’ll be right, but at the same time they will be wrong.

I’m convinced that methodology itself mixed with human nature plus time is the main problem with methodologies. Agile isn’t any different, as successful methodologies go. It reminds us of the important stuff at the heart of processes: people getting things done for people. It reminds us that it is the people who are important, and that trust matters. This is good stuff. Important stuff. Then, being creatures of habit, we formalize the rules of our methodology. We try to make it reproducable. We write books so that other people can do it too. We tell them with confidence that if they do it like we did it, they will succeed. If they don’t succeed that means they didn’t follow the method. Bull.

What is successful about Agile isn’t the methodology. Its the philosophy that processes are about people doing things for people. Its the reminder that we should aim for the goal. When the philosophy succumbs to the habits, the truth underlying its success dies. The method becomes king rather than what made it successful in the first place.

Here is what makes Agile successful:

People matter more than tools and processes.

Software should work, and it should accomplish the goals for which it was created, as quickly and effectively as possible.

It must accomplish the real goal, not my conceptualization or explanation of the goal.

Methods that enforce these concepts are successful, at least until the method takes over and the concepts are buried. Processes stagnate, because humans are creatures of habit. Habit isn’t bad. It helps us reproduce good behavior. But it can also kill us when we stop examining. New processes, if they are any good, re-remind us of the things that matter. They strip off the stagnation and bring us back to the things we were reminded of when the old processes were new.

Post-Waterfall is a very good thing. Post-Agile is fine. Post-Post-Agile will probably be fine too. Maybe it will be a reaction against the fuzziness and a re-injection of more formality. If so, it will be because people got too lazy with post-Agile development and devolved to ineffective chaos. We’ll cycle around and figure out that whatever went before was all wrong.

At the base of it, its still about applying technology to make people more effective in reaching real goals. Its the people and the goals that matter. Pick a methodology that enforces these critical concepts, and do it until it becomes habit, then shake vigorously and repeat. Do that until that cycle becomes habit, then do something else. But always remember that its the people and the goals that matter, not the technology, and not the processes themselves.

I’ve been using Suse (and OpenSuse) for years, ever since moving off of RedHat when they started Fedora. Other than a couple of Gentoo detours, RPM based distributions of Linux have been where I have lived since RedHat 6 point something.

I have been having some problems with my laptop (running OpenSuse 10.2) and it got to the point that I thought it might be easier to get a clean install than figure out what was causing my various problems. That sometimes happens when you get a year and a half of messing with stuff accumulated. You can’t easily roll back what you can’t remember you did.

So I’ve been waiting with anticipation for OpenSuse 11. But I got tired of waiting, and this weekend I decided to try Ubuntu, which I’ve played with but haven’t actually used. This is quite a change for me. I’ve worked with Debian servers from time to time, but not by choice. I have also been using KDE for a very long time (starting with KDE 2). For the first time in recent memory, I’m moving to Gnome. I might end up changing back to OpenSuse and KDE when it is released, but this will give me a month or two of spending the ten hours a day I spend on my laptop finding out what the other side is really like.

Ubuntu installed very nicely. The installation process doesn’t seem as flexible as OpenSuse. I missed OpenSuse’s easy package group selection. But overall, I was fairly impressed. Within just a few minutes I had a shiny new Ubuntu desktop. Of course, it didn’t use my external monitor, and the display resolution it started with stunk. But a quick install of the binary drivers (not installed by default because they aren’t “free” in the sense that they don’t come with a open source license), and a little configuration tweaking, and I had my dual monitor Xinerama setup working nicely.

I am not a fan of sudo, at least on boxes on which I am the only user, but I think I can get used to using it. I’d rather open a terminal and su to root. But its not a big deal, I’ll adapt. On boxes where there are multiple people who might touch system wide settings, sudo is very nice. That just doesn’t apply to my laptop.

Wireless, sound, and all of the rest of my hardware just worked. Adding packages was very easy, and everything worked very nicely. While there are some things I like about smart over synaptic, I’ve used synaptic before and it has come quite a distance since I last worked with it.

One thing that really impressed me was adding a printer. The system-config-printer tool found my printer on the network (I print directly to the IP address using CUPS) and got it set up and configured almost without intervention, and it was about the easiest printer setup I’ve ever seen. Way easier than it would have been in Yast (at least on OpenSuse 10.2), and of course way easier than Windows does anything.

I prefer administration tools that put everything in one place for you, rather than having to hunt for the right tool to tweak settings. So I like the approach of the KDE preferences tool and Yast better than the “What was that thing called again” search for the right tool. Some of that might be familiarity, but Ubuntu/Gnome could do a better job of streamlining the preferences process.

Overall, I am impressed. The system install, adding software, getting things configured, and getting started using the new setup was very quick and easy. I think just about anybody could do it. Having recently struggled through trying to get Windows 2003 servers working properly, Linux definitely beats Windows, and I would not have any trouble at all recommending Ubuntu to anybody.

Some of my easy conversion might be because I’m not exactly new to Linux, and I knew going into it what some of the differences were going to be. There are also a couple of non-distro related factors that make migration easier than it used to be. I have a handy external USB hard drive. So backing up my home directory so I could repartition my laptop was simply plugging the drive in and dragging the home directory over. The hard part was waiting until it finished before I started messing with it. When I got Ubuntu installed, I just dragged my stuff back to my new home folder. Also, so much of my work is on Google, or in an svn repository, or other places out there somewhere in the cloud that saving the actual stuff on my hard drive is much less critical than it has ever been before. My laptop is much more of an interface for stuff out there somewhere than it is actually used for storage.

If I change back, or if I find out things that make a difference, I’ll post them here. I’m not sure how much I’ll like the differences in editors, terminal, and so on. Only time will tell. At the moment, it looks like my experiment might turn out to be a little boring, so I’ll stop talking about it for now.

I was delighted to see the announcement that Zend Framework is partnering with Dojo. Life will be easier. I like Zend Framework. I like Dojo (although I’ve used jQuery on some recent projects). What could be better? Time from idea to working solution will be shorter. As a result, customers and users will say “Wow, how’d you do that?” and get back to working more efficiently and in ways they couldn’t before, quicker. That’s good stuff.