Thinking about Windows programmers

IT Conversations | StackOverflow | Episode Seventeen.

There’s a website for CSS and HTML called “Don’t meet your heroes“, which has always been one of my favorite website names. This podcast always makes me think of that phrase. I really like Coding Horror, which is Jeff Atwood’s blog about programming. It’s great, even though I don’t always agree with him. But now he’s doing this podcast about a website he’s building called StackOverflow and listening to him, he keeps losing cred with me. He’s a Windows programmer, which earlier in my life I equated with brain damage. I’m a lot less judgmental now, especially since my wife has done a lot of Windows programming, but I’m still biased against Windows if I’m honest. The problem with Jeff on this podcast, especially this particular episode which is the “Developer Episode” where they talk nuts & bolts about StackOverflow, is that the things he’s discovering are really old hat to anyone who has done development on Linux (or anywhere but Windows I imagine). I can’t tell if the Windows development environment is really stunted from basically having one IDE, Visual Studio, and the related tools from MS, or if he and his team don’t pay much attention to programming practice.

They’re really surprised about continuous integration using Cruise Control versus the MS tool which apparently requires you to install Visual Studio on your server (!!!). They all seem to be new to the very idea of MVC (model, view, controller) programming, which has been pretty standard for years, because MS is just now coming out with their approved MVC product/environment. Jeff talks about LINQ like it’s the only option for not putting SQL directly in your code, despite various ORM tools and similar things being around for quite some time. They do use nUnit, which is the .Net port of jUnit, so they do have that going for them.

But don’t even get me started on Jeff’s decision that writing tests somehow makes you less agile. Yeah, not having tests lets you write crappy code much faster. Great!

Now, I have no doubt that all 3 of the guys on the StackOverflow team are much, much better programmers than I am. Even without seeing their code I would venture to say I know they’re better than me. No slight to them personally, at all. At all. But I can’t tell if the lack of knowledge of what I consider basic standards is them or their environment and that’s bad. I guess if I’m a Windows shop and I come up against somebody who has never heard of MVC, that’ll be fine since I won’t have heard of it either. But if I’m used to people who think MVC and continuous integration and unit tests are given parts of good projects and I come up against people who only have experience with Windows stuff, they won’t seem like they’re as experienced. And I’ll have missed out on good programmers, most likely.

On the other hand, Joel Spolsky is a Windows programmer and well, he’s Joel freaking Spolsky. He and many others are probably existence proofs that I have no idea what I’m talking about.

Are Windows programmers missing out on so much good stuff because they don’t pay attention to the tools used by other programmers? Java has a rich environment of tools by many, many different parties. I have 2 different static code analyzers (just for an example of a totally niche product) in Eclipse (1 of 4 really nice IDEs for Java) telling me about bugs in my code. Does Visual Studio have anything like that? I can think of 3 different continuous integration tools. It seems like if they paid attention to other programmers’ tools, MS would have to provide more than they do or the environment of 3rd party tools would be a lot stronger.

I’m not sure what the point is of this post, I’m just trying to figure out how somebody who obviously knows a ton about programming misses out on so much of what I (and others) would consider very basic ideas. I don’t think it’s just that there’s stuff about .Net programming that I’m missing out on. I read a lot about programming in a lot of different languages and it really just seems like the Windows development ecosystem is missing a lot of things because Microsoft hasn’t put whatever-it-is out in a box with Visual Studio. Jeff even talks about using some 3rd party code diff tool, for pete’s sake. How can you use an editor to work on code with other people without a diff tool and source control built in?! I still like Jeff and Coding Horror and I’m sure I’ll love StackOverflow from what I’ve seen of it. I guess I’m just going to have to accept that different environments can produce different kinds of programmers. Smalltalk people are probably laughing their asses off at my I consider my toolset so it’s all relative.

If you’re a Windows programmer, I’d love to hear more about working in that environment in the comments. Thanks in advance.

Pair programming. What researchers say on the costs and benefits of the practice. | Agile Software Development

Pair programming. What researchers say on the costs and benefits of the practice. | Agile Software Development.

Just what I was hoping would come from the post the other day about pair programming, data on its effectiveness.

First Java servlet

As I mentioned on twitter today, I wrote my first Java servlet today. I had written part of a webapp using the Tapestry framework a few months ago but stuck and haven’t gone back to it. This was a basic servlet to take a chunk of XML and send it via JMS to a queue for testing a new JMS integration architecture we’re working on for work. It seems like everything in Java has some weird name that always makes me think it’ll be harder and more complicated than it is. I’m used to Perl where you just drop a file in Apache and use CGI.pm to pull out the parameters. Turns out writing a servlet is almost that easy, although the setup to get all the files and classes deployed in Tomcat is much more complicated. Luckily I’ve done enough with Ant to hack a deployment script together and we have an Ant expert I can ask for anything hard. As usual, what I did was find a couple of examples and hack the heck out of them until I understood them and they did what I wanted. I did go through part of the first chapter on servlets from my Head First Servlets & JSP book that I had barely cracked the cover of before, so that’s more research than I usually do ahead of time. Overall this basic servlet was pretty easy, although I know I just scratched the surface of the power and complexity available. Tomorrow I start working on figuring out how to send JMS messages. Luckily my team is incredibly good and I have good examples to hack on.

Funny Processing update

16 Aug 2008
Processing version 146 released. It's one better than 145. Download here

hehe. And what do you know? It is one better.

Mik Kersten presents Mylyn 3.0 (Webcast)

Mik Kersten presents Mylyn 3.0.

I haven’t watched this yet but I love Mylyn and I just upgraded to Eclipse 3.4 (Ganymede) so I want to start learning about the new features.

Five risks of solo programming

Five risks of solo programming | Agile Software Development.

  • High defect rate
  • Distractions that force you out of the zone
  • Low focus and discipline
  • Low incentive to adhere to common practices
  • Slow learning

Pair programming is one of the practices I’ve always had a hard time wrapping my mind around. I’ve been told a bunch of times how great it is, and I’ve even been party to the benefits in small amounts as debug sessions and the like, but I can’t get to the point of accepting that I should be doing it all the time. One of the commentors on the post basically gives all the standard complaints and I hope the author or somebody gives a rebuttal. At the conference a lot of people stated pair programming as a given good, “proven” to work. I haven’t seen that proof but I’d like to find it.

Shades of grey

Outside the world of fanboys, people realize that most everything available sucks in one way or another, and most everything has a positive side, too. And while we all have our favorite technologies, most of us don't obsessively troll every thread that discusses them.

For example, Haskell on Linux is my language/platform combination of choice, but I am occasionally called on to write large amounts of Visual Basic at work on Windows systems. And while I don't like doing it, and I could give you a laundry list of things I hate about VB, there are also things about it that don't suck. Having an opinion and a preference doesn't mean that it can't be a nuanced opinion or preference.

I think the rest of reddit is frankly just sick and tired of hearing all about how much you hate technology X. Really, we don't give a shit.

808140 comments on Mono isn’t just for Apes.

One of the most promising things about the Agile2008 conference was the idea that Scrum and XP are really just on a spectrum of Agile methodologies, not completely black-and-white different things. I think what this Reddit user says is true for discussion Agile as well. Both camps need to get over themselves and realize they’re really just one camp.

Kim and I are going to speak on our experiences at Agile2008 at the meeting of the Agile New Mexico group next week and this is one of the topics I’ll be talking about. I think it’s great and since it was a big theme of Bob Martin’s keynote, I think people will actually listen.

Bringing people around to Agile

This is an email I wrote my department yesterday, talking about keeping on with Agile. The team has decided we want to keep going with the successes we’ve had with Agile but we obviously have to convince the people above us. Since I’m not a manager I have to put out my ideas and work more behind the scenes to make changes. I don’t know how useful this might be to anybody but if you’re looking at introducing Agile to your work, just think about putting your ideas out there to stew around in people’s heads.

Since the email is pretty long, click Read More to read it if you’re interested.
[Read more →]

BarCampAlbuquerque

BarCamp wiki / BarCampAlbuquerque.

I’m definitely going to try to attend this, should be fun. Maybe I’ll try to present something about my experiences with Agile. hmmm…

Twitter / rands: How to yell on your iPhone:…

How to yell on your iPhone: Tap Settings, Tap General, Tap Keyboard, Tap Caps Lock, YELL

from the brilliant rands on twitter.