Last week I talked about Seagull Management. Today, in a slightly different vein, here’s a Budweiser commercial celebrating the Micromanager:


Reeeeal men of geeeeeniuuuus!

Today we salute YOU, Mr. Micromanager manager.

“Mr. Micromanager Manager!?!”

Only YOU can fully appreciate the mind-blowing tragedy of a bunch of 18-22 year old athletes you‘ll never meet, losing a game.

“Don’t you TAAAAALK to me about perspective!!”

While others are too preoccupied with things like real life, you take your anger directly to the place where it will make the absolute least possible impact: An Internet discussion forum.

“Loggin’ on now!”

Your unique eye for logic allows you to sling turds of doom every which way, and then brag about how you were RIGHT as soon as one of the pieces sticks to the wall – regardless of how many dozens fell limply to the floor before that.

“See I told you sooooooo!!”

And if some idiot newspaper columnist has the gall to not be as incensed as you are, you unleash your fury down upon him with all the tenacity and mercilessness of a rabid pit bull with a tender buttock locked in its jaws.

“Total anonymity!”

So keep clicking away, oh Marauder of the Mousepad. Because when the results you so desire finally come about years from now, you can say it was because YOU demanded it.”

“How come they haven’t fired that dumbass coach yet?”

Programmer Pedantry

I’m a programmer. I’m also a writer. Put the two together, and you get a yummy stew full of pedantry. 

Free Market an economic system in which prices and wages are determined by unrestricted competition between businesses, without government regulation or fear of monopolies.

We haven’t had a free market in a really long time. Not since before the Federal Reserve was created in 1913.

Any action taken by government to regulate, manipulate interest rates (What do you think the Federal Reserve does?), or otherwise insert itself into the marketplace automatically removes the ‘free’ from ‘Free Market’.

You can argue for or against the actions by the government, but you cannot still call it a ‘free market’ once that has been done.

If you’re interested in economics, I recommend The Politically Incorrect Guide to Capitalism. It works whether you believe in Government intervention into the market or if you hate it. If you believe in government intervention, then this provides a useful counterpoint. If you hate government intervention, then it gives you evidence and logical reasoning as to back up your reasoning.

Now back to your regularly scheduled programming blog posts.

Seagull Management

From Flickr: http://www.flickr.com/photos/adobemac/1096715290/sizes/m/

During my time as a Sergeant in the Army, I dealt with many different types of managers. I’ll save my favorite manager for a later blog post; but for now I want to share an experience I had with Seagull management.

As it happened, I was in a unit with a new Second Lieutanent (2LT), the kind that just graduated ROTC and thought his stuff smelled like roses. Having been in the Army for four years at this point, I knew just a little bit more about the happenings in my team than he did. That didn’t stop him from behaving like a seagull, however.

Seagulls are nosey creatures. They fly in, see what they can mess with, poop everywhere, and leave.

That described this 2LT to a ‘T‘.

Generally he would do what officers were supposed to do (go to meetings), but then he’d also come back from the meeting and try to micro-manage every little detail of what we were about to do. In other words, he did my job for me.  Once he felt like he had meddled enough to assert his authority, he left us to pick up the pieces.

There is a special circle of hell for that behavior, and he was doing his damndest to drag us into it with him.  As the first-line supervisor of the team, it was my job to carry out his directives — but once he meddled into the how, he made me little more than a glorified grunt. A really well paid grunt, but one nonetheless.

Seagull managers exist in Software development too, or in this DailyWTF story, just think of them as one of the three Bs.


Convert or Pay the Productivity Tax

My Islamic studies professor in college frequently told this ancedote on the first day of class (or whenever he got an opportunity). It started out like this:

When the ancient muslim armies invaded other countries, they normally issued an ultimatum: Convert, Die, or Pay a tax. This usually resulted in the question: So how much is this tax? 

It’s no surprise that the muslim armies were able to invade many territories without bloodshed.

We need something similar in Software Development. Too many companies cling to Enterprise-y Version Control Systems that make even the smartest developer cringe when the subject of branching and merging is brought up.  Management clings to these systems without logic, and we suffer for that decision. It even pervades to our project management and defect tracking software (I’m looking at you, Test Director).

It’s time to issue our own ultimatum:

Convert, or pay the productivity tax.

We must stand up against the tyranny of idiotic version control. Not being able to branch and merge? What’s the use in having Version control? Not being able to commit code until it’s bug free? Sacrilege

There is a better way.

Joel Spolsky has written up an excellent tutorial on Mecurial and how it differs from traditional version control systems. Read it. Pass it around the office. Hound your manager. Light Pitchforks and Raise torches. Do whatever it takes: DVCS’s are free. They’re better than tradtional VCSs. 

Why aren’t you using them?

An Obituary for ASP.NET

ASP.NET died today. Much like Cobol, he leaves behind a legacy that will touch our lives for years to come.

ASP.NET grew up in the shadow of his older brother, Winforms. His father was ASP, his mother VBScript. They lived in a world much like our own, a world of webs and the things that connect them together.

ASP wanted a better world for his son. He worked tirelessly to make sure that his son never had to deal with bees and their awful stings. He worked with uncle MFC to create a safe environment where ASP.NET could play without fear of hurting himself or others. MFC, having no children of his own, sought this as his life’s work. Soon, the .NET framework was built, and ASP.NET’s purpose became clear: To become the framework for the web.

Like any rebellious child, ASP.NET didn’t listen to his parents.

He toiled in the web, jealous of  Winforms, emulating his ways.  Some might say he didn’t have an original thought for himself, that he just imitated his brother; they would be right.  

He saw the flaws in his classmates’ work, how they constantly forgot what he told them.  He knew that with just a little work, he could remember what they had failed to.

He knew this because Winforms remembered everything, and come hell or high water, he would too.

Staying awake late at night, he tinkered with what he would call Viewstate, believing that a cool sounding name would increase his standing with the girl across the moat, Perl. 

The Castle. From Flickr. Here: http://www.flickr.com/photos/lincolnian/370208387/sizes/m/ by Lincolnian Brian

Perl, the daughter of C and Larry Wall, had her own problems.  For so long she had run around with her glue, patching up different parts of the web. She spoke many different dialects, she  could even speak Gibberish and still get her job done, but she was tired. She was cranky.  Some called her insecure, but she laughed at their ignorance. Her ‘friend’ PHP treated her with contempt while imitating all of her best features.  She wondered when the world would let her retire. After all, they had PHP, they had Python, and they had Java. Why would they need her? Couldn’t she just rest?

It was not to be.

Meanwhile, ASP.NET wished to free his girlfriend Perl of all her troubles and Viewstate was his ticket.  They seemed an unlikely pair, ASP.NET and Perl, but it is said that opposites attract.

Predictably, Viewstate was heckled by PHP.  Java, being the robust gentleman he was, just kept eating resources, getting rich and fat off of all the features people were paying for. Java’s followers saw PHP as a poser, and ASP as childish; but when ASP.NET came out and they saw how easy it would be to use Viewstate, they were hooked, and for Java, the feast was over.

And so it came to be that ASP.NET was crowned king, with Perl at his side; able to rest a little more.

 Meanwhile, PHP worked to fill in the gaps of its knowledge. Simply copying Perl wasn’t enough – it lacked the magic Perl had. PHP had a huge vocabulary, but no way to categorize it.  Looking around at everyone else, it saw that they used namespaces to separate their vocabulary for their audiences. But, as is often the case with drastic change, it knew that it wasn’t going to be easy.

PHP worked to include namespaces, but not before shedding her dignity and self-respect, what little was left.

ASP.NET’s  rule was fought by Python, the snake that nipped at its heels, reminding him that Viewstate had left him slower and heavier than he used to be. Perl couldn’t even fend Python off, as he came with everything.  Python was winning. He could do everything that Perl could do, and he could speak clearly at the same time.

The web was a cruel world.

ASP.NET knew he would lose his kingdom if he didn’t change. Python and Ruby had been dating, but broke up when they realized that Django and Ruby-On-Rails were copies of each other. They are currently settling out of court. 

The infighting gave ASP.NET a chance to get it right; a chance to regain all that was lost. He hoped he could even pass the torch on, and allow he and Perl to retire to an island in the Caribbean, free from tax laws and all of the problems the race for #1 causes.

So he began his work, looking back on the design documents he inherited from his father. He still understood his mother’s language, but wanted to use a language he’d embraced early on in his life, C#. C# was a tribute to C, Perl’s mother, and C++, Perl’s aunt.  He knew that C# would encourage the remaining Java followers to embrace his work.

But that wouldn’t be enough. He would need something more, something that PHP’s friend Zend, Django, and Ruby-On-Rails had. He would need MVC.

from Flickr: http://www.flickr.com/photos/faisalsaeed/212339449/

The climb to Mount MVC was treacherous. Along the way he met a strange traveler who insisted on proving each step was valid before taking it. After three such tries he finally was able to gather the name of that strange, traveler: TDD. TDD and his little brother, Unit Test had just come back from the Agile mountains, hoping to spread their word among the heathens, pressing them to change their heath-ren ways. They had read the ancient texts, and knew that the evil Bugs could be squashed with their Agile religion.  They were confident of their success, haughty even.

But this story is not about them.

Shaking his head at TDD and leaving, ASP.NET would later realize that he was jealous that he could never have learned those ways. It would have taken much work, too much mocking, as his work depended very much on dependencies that were not easily removed.

Arriving at Mount MVC, nestled in the bosom of the Separation of Concerns in the Agile mountains, ASP.NET sought out the answer to his problems. There he waited and meditated, feeling the ebb of the web flow through his consciousness. From where he sat, gazing over the ranges below, and watching the various forms of life try to communicate.  His answer wasn’t something in the Mountain, it was the mountain itself.

Studying how the mountain was laid out in the Separation of Concerns, how it all interacted in symbiosis, ASP.NET knew he had his answer. He bounded back down the mountain.  He passed TDD easily, as TDD was stuck in a failing test. ASP.NET thought about stopping to help, but realized that TDD just hadn’t written the passing test yet.  Eager to reclaim his throne and his bride, ASP.NET sprinted back to his kingdom, arriving just as the tribe of Django, Zend, and Ruby looked as if they would converge on his castle, pitchforks in hand.

If he didn’t hurry, there would be nothing to save.

He asked Perl for one last favor: she was to hold a code-golf tournament to keep them occupied while ASP.NET toiled in his labratory.

Perl obliged, knowing that if C did not show up, she would win any code-golf tournament held (Her fears were unjustified, it would turn out, as C was still locked in her own Obsfucation contest. It was a similar last ditch effort to retain her own followers: Long abandoned except for by OpenGL, Unix, and Win32. As an extra-long aside, Win32 and Unix were still fighting, with Unix claiming that his hot Girlfriend, Apple OS X, could knock the sock off of anything Win32 had. That too, is a story for another day)

While the tournament was progressing, or rather, getting shorter, ASP.NET went back to web fundaments, back to what his father had taught him. The web could indeed forget, but he knew the ways around that without sacrificing his soul. Eating cookies while he worked, he looked at his father’s own manuals.  Seeing the answer before him, and remembering what he learned in the Agile mountains, ASP.NET finally had his creation.

He named it ASP.NET MVC, in honor of the Mountain.

Using the best parts of his father and his own life’s experience, he created something that would appeal to anyone who might defect to the Django, RoR, or Zend tribes. As a tribute to the zen masters in the Agile mountains, he even included something that he himself still thought silly: TDD.

With his creation complete, he carryed it down to the tournament. Seeing that the entrants were down to 28 characters, he knew it would end soon. Perl soon landed the coup de grâce with the -e modifer. Python and Ruby didn’t stand a chance. PHP and Java were cut in the first round.

ASP.NET showed his son MVC off to the crowd; everyone noting his strength, good looks, and physical prowress. MVC promptly pulled Ruby’s hair. Django took far too long to object. Zend, seeing his tribe in peril, left immediately to try to learn what the word ‘debugger’ meant.

Like any son, MVC didn’t listen to his father. He instead took in his father’s lessons in his own rebellious fashion. If ASP were still around, he would probably have chuckled, seeing his own parenting pains exacted upon his son.

ASP.NET died today. This was his story. He is survived by his Wife, Perl, his brother Winforms, and by his son, MVC. MVC is said to hike in the Agile mountains, fully steeped in the ways of object oriented principles.

Zend still hasn’t figured out what a debugger is, and Ruby is plotting her revenge against MVC for his hair-pulling stunt.  They have the makings of a cute couple.