Jeff and .NET

The .NET musings of Jeff Putz



My Sites


June 2006 - Posts

Bill Gates is retiring

Bill will still be the chair of Microsoft, but he's going to step away from his executive role. He wants to spend more time with his charitable foundation.

When you're worth $50 billion, how could you not want to be more interested in trying to have a positive impact on the world? I would do that in a heartbeat. In fact, I would've probably done it years ago if I were him. We can all do our part at the local level, and that's great, but imagine being so loaded that you can single handedly immunize a small country against a disease or drop several new buildings into a university. I honestly wouldn't know where to start!

Posted: Jun 15 2006, 07:53 PM by Jeff | with no comments
Filed under:
I just can't test it all
So here's the thing about test-driven development. I think it's awesome because it forces me to be more focused in my design and I know when I break something if I have to revisit it. But I suck at it.

I test too much or too little. Sometimes I write tests after the code because I want to get something working quickly. I don't break things into small tasks like I should, and I let big picture temporary roadblocks slow me down.

The bigger realization that I've come to is that TDD is amazing and awesome for back-end development. When I was first exposed to TDD, it was in an environment that was 100% executing code with no UI, like mainframe replacement stuff. Indeed, this development methodology is a big deal because you really don't have any other way to understand and be sure that the code you're writing actually works.

When you're building a Web app, especially on the considerably smaller scale involving a team of one, TDD can get in the way. A lot of the time, I want to hack out some UI and start to drive my requirements from that. And if you think about it, that really makes more sense, because the UI helps define the solution to the business problem you're trying to solve. I'm sure that some consultants would freak out hearing me say that, but it's so true. The UI is something tangible up front, not a bunch of abstract bullshit that won't actually translate to something useful.

That said, there are a lot of cases where TDD makes sense even in this scenario, because it provides a great apparatus to make sure what you're doing works. It's great for testing (and maintaining) data access code in particular. It also works great for making sure some kind of calculation or text manipulation performs as expected.

So as is the case with most things in life, I'm finding the all or nothing approach using a particular methodology is just not practical.
Iterate, dammit!

In my relatively short career in software development (which is still like 50 years in Internet time), I've been exposed to a wide range of development methodologies, project management and general dev culture. The easy trap to fall into is trying to apply what you learn to every new situation.

The worst thing I've ever seen was at this, uh, accounting type company I worked at, where they had this monstrous application (in FoxPro, puke!) that was a dog. My boss would work like 60 hours a week, people were pissed all of the time, and there was no significant testing, and zero documentation. Changes would go to production instantly. Getting laid-off from there was the best thing that could have ever happened to me, and I didn't even have any work to do there.

On the other hand, my five or so months as a contractor at Progressive was remarkable. It changed the way I look at everything. You'd think such a huge IT organization would be a mess and filled with failure. But in my group at least, the requirements process was very precise, and the agile methodologies being guided by consultants was having very rapid pay-off. It was kind of boring to do work with no UI, but I guess having a big line of green dots on NUnit was fun, sort of.

I'm struggling staying on target with the rewrite of POP Forums because, I think, it just feels like I don't have anything tangible to show for my work so far. It's so odd that despite being a published author, able to make ridiculous salary or hourly demands and generally being perceived as a clever Internet guy, this one stupid application defines my total existence. I suppose it's because the app is core to my "hobby" sites, and that's what I really like doing.

After reading the sample chapters from 37signal's Getting Real book, I decided to plop down the $19 for the PDF. I'll first say that I think these guys are a little on the pretentious side, and their preface indicating they aren't doesn't get them off the hook. That said, a recurring theme in the book is to just f'ing build something and not get hopelessly caught up in the details. And build the UI first.

Even Microsoft is starting to get that Web apps can be built on the fly (see Windows Live), and never be "done." I do agree that's true, but it's not that simple when you depend on the income from a particular existing app you're replacing. For example, my new forum app will be the core of a revamped CoasterBuzz. While they make the case that you should deploy half an app and not a half-assed app, I can't exactly put even a half-site up when people already expect certain things from it.

But there are other things they talk about that I do catch myself doing. For example, I'm thinking about some clever way to encapsulate permissions (can/can't read/post in a forum), and even tie it to the UI. As the book says, I'm worrying about a problem that I can't solve, and that wastes time. I don't even have topics or UI yet.

And this gets to the iterative nature I'd like to adhere to. I hate how I get wrapped up in details that aren't relevant when I haven't even solved the basic problem. Getting something that starts to look useful quickly, and building on top of that is certainly a lot more rewarding.

Part of the issue is my fascination with unit testing, which I don't do correctly most of the time anyway. I test too much or too little. Pair that with the agile mantra of doing short, four-hour tasks at a time, and I don't do things the "right" way at all. So here I am building a class library based on unit tests, and not getting closer to the place I want to be. At the same time, the unit tests save my ass when I do iterate and change something to, for example, add a new column to a database and associated property in the object representation of the data.

But for all of the angst I feel over not feeling accomplished, reading about different ideas on how to develop software kind of gets me energized. That's a good thing.

Tim O'Reilly is blowing it

There was a big uproar over CMP and O'Reilly sending some guy a C&D letter for using the term "Web 2.0 Conference" in that those companies are using it as a trademark.

Tim O'Reilly's response indicates that he overall agrees with the action, and honestly I do see his point and agree that defending a trademark is the right thing to do.

However, there's an underlying tone in his words, and one that I sensed at Mix06, that stinks of self-pleasuring "look-what-we-came-up-with" posturing that really gets under my skin.

Let's start with the obvious: The term "Web 2.0" is stupid. I don't know or care who coined the term (O'Reilly insists that "no one was using it" before they did a conference on it), but it has been so over-used in feel good journalism in magazines and by people like O'Reilly that it doesn't mean anything. The Web is iterative in nature and constantly evolving. It isn't having a second coming or all at once doing new things or spawning a new economy, or whatever the hell people say it's doing.

I respected O'Reilly for building a publishing empire, and articles I read about him seemed to indicate to me that he was the real deal. But when I saw him speak, he seemed kind of arrogant, especially when he brought up his company. I'll put it this way: Book publishing is a noble business that helps people, but it's rarely a source of innovation. Books help people explain and use the innovation. It's rare that it goes the other way. I think I'm fully qualified to say that since I am an author with a published book. My book isn't the result of my own greatness, it's the result of wanting to teach people about something innovative that Microsoft made.

I realize that they're not claiming "Web 2.0" is all theirs, but the difference is too subtle to matter, in my opinion. I guess it's the notion that the term is important, in any context, that bothers me.

I have to get back to writing software for Web 10.5.6, or some other such nonsense.
Posted: Jun 01 2006, 10:17 AM by Jeff | with 1 comment(s)
Filed under: ,
More Posts