Wednesday, June 27, 2007

Tsst.

Every wonder what career a character like Cartman might gravitate towards when he grows up? If you said Project Manager then you probably work as a developer too. Pushy, whiny, demanding, self-centered and glad to criticize you while you are working.

Well, the trick is to assert your dominance and become the alpha dev of your team. Not that you want their job, just that you need to assert that you are a confident professional. But unlike Cartman's mom, you can't actually pinch your PM's in the neck. What you can do is assert your own authori-tay.

If your PM has as much willpower to control work intake as a greedy little piggy then you need to take action. Tsst! They need to flip the words around in their title and learn that if they don't want to look bad they need to "manage projects". It's not your fault they promised that the invoicing changes, website updates, database optimization, customer xyz's customizations and anything else they see lying on the ground while walking to their desk, would all be done by Friday; it's theirs. Sit down with them, list the projects they want to accomplish and figure out what you can finish by Friday. Then work out what it will take to accomplish the entire list. They can then take that to whoever they swore their first born to about that Friday deadline and take their lumps. Don't work overtime just because they cry "but maaa-aam, I want you doo eet, whaaa!". You are only reinforcing negative behavior. Overtime should only be allowed in the case of actual emergencies and by emergency I mean that space aliens and the government are somehow involved.

Pretty soon they will get used to actually working WITH you to plan their projects. And with patience and proper manager training, you will win the war and find yourself in an agile shop without a single shot being fired*.

*Or you'll be fired. This is insanity, I am an insane person. If this works for anyone then they should get their own television show.

Submit this story to DotNetKicks

Clumsy Development

Basically it's the George Costanza model of software development. The only requirement is to know the vocabulary, not that you need to know what the words mean though.

For example.

Agile says to not have constantly changing priorities while expecting your developers to change on a dime.

Clumsy says, the more projects the better, what else are the developers going to do with their time? Test, bah!

Agile says to keep meetings to a minimum.

Clumsy says that whoever passes out from lack of oxygen first wins.

Agile cares about the developer's quality of life and acknowledges that it is important for the long term success of the project.

Clumsy says "Whip the horse until it's dead." (This I have on reliable hearsay was an actual statement made by someone with a very fancy title and doors on his office.)

Submit this story to DotNetKicks

Heroic Developer, the Saga Continues.

Continued from Heroic Developer.

*Deep Breath* If you find yourself working on some half-baked idea concocted by your project manager as they were on their way out the door at a 4:55 PM until midnight for more than zero nights in a row. Then you might be a Heroic Developer. *pant*

Submit this story to DotNetKicks

Tuesday, June 26, 2007

Programmers Bill of Rights

Coding Horror posted an article in 2006 that proposed a Programmers Bill of Rights. I've worked at some pretty messed up places that violated all or most of these "rights". Although I know that the word "rights" was used in a tongue-in-cheek manner the point was that these things make sense. Calling it a "Bill of Rights" was meant to get the readers attention, but it's fair to call the list "Common Sense". To be fair, most of these things I'd be happy to get myself if I'm paid well enough, but somethings can only be provided by the employer, such as the quiet working conditions and fast internet connection.


  1. Every programmer shall have two monitors

  2. Every programmer shall have a fast PC

  3. Every programmer shall have their choice of mouse and keyboard

  4. Every programmer shall have a comfortable chair

  5. Every programmer shall have a fast internet connection

  6. Every programmer shall have quiet working conditions

Submit this story to DotNetKicks

Heroic Developer

Look, over in the cube. It's a nerd. No, it's a geek. NO! It's Heroic Coder. Coding longer than a puny developer! Introducing bugs and errors faster than a marketing drone can dream up the next greatest feature. HEROIC CODER!

Seriously, how long can we take it? If the manager can't plan the project based on sustainable and healthy working hours over time, then you need to push back. Just because you can work late into the wee hours of the morning and over the weekend doesn't mean you should. Take a break, go home and drink a cup of tea. Go for a walk and read a (non-technical) book. Your brain needs a break. Spending too much time trying to hack in another knee-jerk requirement is going to end up taking longer and wear you out, leading to increased mistakes and a myopic view of the problem. That tunnel-vision and fatigue will only add up to having to spend more time later debugging a rapidly deteriorating code-base while still trying to shoehorn in yet another new feature. It's a vicious cycle and it's up to you to break out of it and take on the mantel of "Professional Developer".

Heroics == Hours Spent
Professionalism == Effort Maximized

Submit this story to DotNetKicks

GWDD

Greasy-wheel Driven Development

All development is driven by whomever is screaming loudest. Project priority is determined through a bidding type system where the competing requests are escalated up to the next highest person in the management chain. Progress is managed by continuous nagging and veiled threats to whatever resources are assigned to, or at least coerced into working on, the issue.

See also ADD.

Submit this story to DotNetKicks

Automated code formatting tools

I love automated code formatting tools. Anything that will help clean the layout of code, especially code that I've inherited, is a major productivity booster.

I've been a bit of an evangelist for ReSharper in every development team I've been a member of. If the only thing ReSharper provided was code formatting I would still recommend it. It provides a great deal more which I'll cover some other time. ReSharper has granular enough code-style rules tools that should satisfy almost any possible team standard for code layout. The rules can also be imported/exported which is a time saver when you work on several machines or in a team. ReSharper is one of the few tools I've bought out of my own pocket and will be happily upgrading my 1.x license to the new 3.0 version very soon.

A classic free tool is GhostDoc. It doesn't reformat your code, but it will clean up and generate the xml documentation for methods, constructors and properties. It's very handy when you are maintaining code that doesn't have any xml comments to select "Document This" from inside the method and have the template filled out for you.

A new tool that seems very promising is Regionerate. It will automatically organize your C# class properties, fields, constructors, events and methods into neat regions with nice labels that contain a count of the number of items in that region. Very slick.

Submit this story to DotNetKicks

Monday, June 25, 2007

The Play

The actors are assembled for the Writer's play. Some will play heroes, and some villains while most will walk through the scene forgotten and unheard. The Director moves the actors through the tragedy and comedy and the quiet moments in-between. When the script is done and the speaking stops the curtains draw and the all is ended. The cast is called to take a bow, is the villain still applauded? Or is he taken away and punished for his role? Is the hero to be knighted? The Writer wrote their deeds and they played their part as it was already decided. Who will be invited to the post-production party?

Submit this story to DotNetKicks