July 27, 2006

Carnival Of The Agilists - July 27th, 2006

Welcome to the July 27th edition of the Carnival of Agilists.
The next edition will be on August 3rd (next week). So if you missed the deadline to have your article included in this edition, make sure to send us email to get into the next one!

If you’d be interested in helping create a future issue/edition of the Carnival, please let me know!

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

In the news

Previous Editions
All previous editions of the Carnival are referenced at the Agile Alliance website. You can also find it at the Blog Carnival
Join in the Fun!
Have something that you think is worth sharing? Don’t be shy! We love new ideas and insights. Send us a link to your post at agilists.carnival@gmail.com.

Future editions will be on the first and third Thursday of each month. If you would like to participate, please send us a link to your post at agilists.carnival@gmail.com. Or, if you prefer, use this handy dandy carnival submission form.

July 24, 2006

Complexifiers and Simplifiers

Scott Berkun says “There are two kinds of people: Simplifiers and Complexifiers

And of course, the Complexifiers in the comments go nuts.   I think that there are two kinds of people - the kind that can tolerate the “glossing over” of aspects of a problem space, and those who can’t

I’ve just analyzed my mental database, and as far as I can tell, every, and I mean every successful entrepreneur started out by solving a complex problem, by ignoring everything but the one or two key things that made the problem interesting.

  • Google:  We’ll focus on making a better searching algorithm.   They didn’t worry about content, or network effects or portals.
  • Microsoft: We’ll build a basic interpreter for the new 8086 chips.
  • Dell: We’ll make it so you can order computers from a catalog
  • Cisco: We’ll make a hardware equivalent to the software routing code inside BSD Unix
  • Hershey: We will make milk caramels
  • Ebay: We will make it so people can buy from each other
  • Oracle: We will create a relational database
  • Motorola: We will make radios for cars
  • McDonalds: Consistent food at a low price
  • Ford:  We will make a car that is cheap and reliable.

Every single one of those strategies was rife with complexity - what about supply chains? What about inspections? How will we manage quality?  How will we deal with hardware changes? How will we take orders?  How will we grow quickly?

But all of those, it turns out, were side issues - they correctly identified the core issues that people cared about, and ignored the rest.  They simplified, and by simplifying, they were successful.
Now, many startup businesses that attempt to simplify fail because they simplified the wrong things.   And I’m sure there are a few businesses that succeeded out with “we’re going to do x, y, z, w, a, b and c and dominate the market”.  But in my experience, it is very, very rare to win with the “we’re going to solve every aspect of a complex problem”.

In general, that seems to be the case regardless of the kind of project you’re working on - initiatives that attempt to simplify a complex problem succeed much more often than initiatives that attempt to manage a complex problem.  Most “managing” solutions that I’ve seen end up living a perpetual undeath of partial use, unable to actually succeed at anything.

C# vs Python

Darmesh discusses his programming history, and finally ends up with the eternal question: “Python or C#”?

To me, the ultimate reason not to use Python is contained in this following interaction:

Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> exit
‘Use Ctrl-Z plus Return to exit.’
>>> quit
‘Use Ctrl-Z plus Return to exit.’
>>> ^D
File “”, line 1

^
SyntaxError: invalid syntax
>>> ^Z

C:\Documents and Settings\jb>

Yes, you read that right. Python *knows* what you want to do, and doesn’t do it. Instead, it tells you how to do it the right way.

I have to use Python because it has some nifty hooks into the R statistical programming language. But I won’t use it for anything else. If I need scripting, I’ll use Ruby, thank you very much. Because here’s what happens when I interact with the interactive ruby shell:

C:\Documents and Settings\jb>irb
irb(main):001:0> quit

C:\Documents and Settings\jb>irb
irb(main):001:0> exit

C:\Documents and Settings\jb>irb
irb(main):001:0> ^D

C:\Documents and Settings\jb>

The only mechanism it doesn’t support, ironically, is ^Z + Enter

Yeah, I know they’re not apples-to-apples comparisons. And I’m sure there are people out there who love Python for its strict purity of behavior. But I am not one of them :)

July 20, 2006

What hash Digg wrought?

Digg is probably the epitome of “mob rule” websites, where articles battle it out to reach the conciousness of the world.    Every vote counts, and every vote against counts as well.   But in essense, Digg represents the “voice of the community”.

You can see this by viewing the Digg Spy, a never-ending waterfall of stories still in their infancy.  Here, you will see plenty of green votes (positives) but also some yellows and reds (neutral or “bury this”) votes.  However, on the front page? Nothing but green, and lots of it.  There are a lot of topics covered by Digg, especially now in the “version 3″ phase, but generally posts get attention if they fall into these major areas:

  • Microsoft sucks
  • Censorship sucks
  • George W Bush sucks
  • The Iraq war sucks
  • The US sucks
  • Linux is cool
  • Apple is cool
  • The Internet is cool
  • Digg rocks!
  • Google is cool
  • Open source is very cool
  • The earth’s destruction from Global Warming is imminent

Problems
The problem with this model is that opinions that are popular to the majority of diggers are the ones that survive, while other opinions are often (but not always) quickly strangled.  There are two things wrong with this system:

  1. People who hold different opinions may flee from Digg, creating an “echo chamber” that kills Digg’s usefulness for everyone who isn’t part of the “popular” club
  2. It is vulnerable to organized vote fraud.

To some degree, these are contrary problems - if Digg is an echo chamber with a large number of users, it becomes harder to execute vote fraud, while the ability to execute vote fraud demonstrates that it is not yet an echo chamber.   So these are potential problems, not real problems.

But these are serious problems - with only 500 votes required to get a front-page view, China could trivially control every post on every category on Digg by getting 2000 dedicated Digg-voters in a room to ensure that only China-friendly messages made it onto the front page.  All they really have to do is decide to do it, the infrastructure required is trivial.

Opinions

But even without China manipulating votes, there are still essentially two “power groups” within Digg.

  • The people who put posts up
  • The people who vote posts down

The posters - the “one-percenters” are the most important group to Digg, and to the world at large - they are the people who keep everyone else informed.  By and large, there’s nothing “wrong” with being an active participant and sharing your knowledge and discoveries with the world.

The second group - the “vote downers” are the ones with the most potential for abuse, because enough negative votes and a story is dead, whether it is true or not.  The Vote-Downer population can claim that a story is inaccurate, even if it isn’t, they can call a post spam or lame, or what have you, without any “checks” on their power.   Right now, they generally behave responsibly to my eyes, but I’ve seen several stories that seem accurate but are marked inaccurate because they deviate from the “accepted truth” of the Digg population.

Win Friends and Influence People

But there is a way to fight back, and that is to become a Vote-Downer, and actively mark down any article that you find lame as lame, or any article that mischaracterizes what you understand to be the truth as inaccurate.   Because if you don’t, you are essentially saying “I will let others control my Digg experience.”

So get out there, register, and get active, because Digg’s concept is awesome and the only thing that will save it from the Echo Chamber or the Vote Fraud problem is you.
Caveats

I’m sure this article will rile some people up, so I want to issue some caveats here at the end:

  • I don’t think Vote-Downers are bad people
  • Digg is a very effective mechanism at informing the world about interesting stuff
  • I am not calling for people to lie and deliberate “astroturf” Digg.  I am calling for people of all opinions to participate, to make Digg better
  • You can get access to the “raw” Digg by visiting Digg Spy
  • Digg, the company has done a number of things to make the system fair, and it is not clear that adding more layers of technology will make the system “more fair”.  Again, the solution is for people to get involved.

Thanks!

July 14, 2006

The funniest Daily Show segment ever

Jon Stewart on Senator Ted Stevens and his understanding of the nature of the Internet.

http://www.comedycentral.com/sitewide/media_player/browsevideos.jhtml?showId=934

Somewhat safe for work - includes the word ‘masturbate’.
If you can’t watch it at work, watch it at home. It’s that funny. Don’t drink anything while you watch it.

Carnival of the Agilists - July 13th Edition

Can be found at Pete Behren’s blog.    Great job, Pete!

Most intriguing article: Groups do better than individuals at problem solving.  Still digesting it, though.

July 11, 2006

Ruby On Rails - The Journey Continues

I’m at the point where I am comfortable with the basics, with producing basic application skeletons, hooking together objects, using the scaffolding, etc.

But like everything else, the more I know, the more I realize I don’t know.  Here’s what I’m still struggling with (this gives me a list of things to focus on as I continue to work on RoR apps)

  • People say “you should be spending half your time or more in the test directory” - but I am unable to do that.  I’m quite familiar with Unit Testing and TDD, but I can’t  “grok” how to use the RoR unit testing “scaffold”.  I can’t really use it, and it doesn’t seem consistent with everything else
  • The test database - I don’t really know where to get started here, and so far I haven’t found much assistance in the books
  • The test fixtures - similar - I don’t know how to use them.  I tried, and everything blew up in my face

Reviewing the list, it appears that while the RoR MVC model is very intuitive and comfortable for me, the testing model is less so, and there’s probably some unlearning that I’ll need to do to get comfortable with it.

July 7, 2006

A Manager’s Mind

Henrik asks: What do you think went on in the manager’s head?

The department manager realized that we needed to work close by to have the slightest chance of success. “OK,” he said, “you’ll get the room, for this project, because it is an unusually difficult one, but of course you can’t get one every time you need it.”

Oh, let’s see, here are some possibilities:

  • They don’t really need that room, but I’ll give it to them this time because I’m a nice guy
  • Getting that project room takes a lot of political capital.  I hope they don’t expect me to spend my capital on them for every project
  • They’re angling for a permanent room.  I’ll warn them off that, so I don’t have to deal with false assumtions later
  • This project may be diffuclt, but the others really aren’t that hard.  They probably would think I was a patsy if I let them have the room for every project
  • Reserving that room is expensive - I’ll have to lay off one of the staff members if they use it all the time, but I don’t dare tell them that
  • Learning and expertise comes through suffering.  If I pamper them, they’ll never get used to real-world conditions
  • I never had a dedicated project room when I was a developer, and look how I turned out.
  • If I give in on the project room, they’ll start asking for coffee, and a  restroom, and lunch breaks.  Better nip this in the bud.
  • Oh sure, he says he just wants a project room, but he’s really trying to take my job!
  • George, George, George of the Jungle, strong as he can be… George, George, George of the Jungle, Watch out for that Tree!  Sorry… did someone ask me something?
  • I don’t need a dedicated project room to do my job, so why should they?
  • Only 49% of development organizations use dedicated project rooms.  I’d rather stay with the majority and not rock the boat
  • Boy, this guy really has some spirit.  I’d best crush it right away.
  • Hmm, if I give them the dedicated room, it will cost me $100/month in interoffice budget..  and I need that money to pay for the open bar at the Christmas party!
  • If they stay too long in that room, they might notice the smell…. and if they notice the smell, they might find… the body!
  • It’s times like these I ask myself - what would Dr. Evil do?
  • Jesus didn’t need a dedicated project room… why should this loser?
  • Excellent… by diminishing his expectations, I’ve avoided a too-high rating on my 360-degree feedback plan.   Don’t want to look too talented, or they’ll start to give me real work.
  • Next month when I change my mind and tell him he can have the dedicated project room after all, they will bow down and worship me as a god!
  • I giveth with my left hand, and taketh away with my right.

That’s all I can think of right now.