Monday, May 21, 2012

Portland Rock 'n' Roll 1/2 Marathon


Let's hang out after the marathon
and go to the gym

I imagine the lady in the purple shirt is thinking, "this guy is too happy to be running."

Portland Rock 'n' Roll 1/2 Marathon

taken by Dena Rosko on 5/20/2012


Wednesday, May 9, 2012

Work Harder

A manager I once worked with got out of an executive meeting, walked over to development, and said, “I’ve been talking with the VPs and everyone has to work harder.”  Fred, the manager, continued by saying, “We’re going to have to be creative about how to get all this work done.”  I took Fred aside and asked him, “by ‘creative,’ you mean work more hours don’t you?”  He replied, “Yes, I mean work more hours.”

Before you criticize Fred, let’s try to understand what it means to, “work harder,” “be creative,” and more importantly how a development organization should respond.

From a laborer point-of-view, working harder means move faster, take shorter breaks, push through the pain, and work more hours.  All of these seem intuitive...  Before college, I worked at a greenhouse.  When my greenhouse boss said to work harder, he’d then add, “move faster,” “get back to work,” and “this needs to be done today.”

At the time Fred made his appeal, our two Scrum teams worked on two major projects.  I asked Fred, “What are some specific things a software development organization can do to work harder?”

From a programming point-of-view, typing faster doesn’t solve much because a developer invests substantial time in reading code, discussing tools and frameworks, and choosing names for things.  However, a few programmers I know might benefit from a refresher course in typing.

I suppose developers can take shorter breaks, but the the Pomodoro Technique suggests an optimal work/break schedule.  Essentially, it prescribes how long you should engage in a focused activity before taking breaks, and how long each break should be.  As you repeat the technique, the schedule changes.

“For many of us time is an enemy. The anxiety triggered by ‘the ticking clock’ and deadlines to be met leads to ineffective work and study habits and procrastination.” - Pomodoro Technique website

According to Fred, working harder also means working more hours to complete the projects.  Working more hours gives a diminishing return on investment and should only be used in exceptional cases.  It does not increase long term productivity.  I consider working overtime an Agile antipattern.

“Working overtime sucks the spirit and motivation out of your team. When your team becomes tired and demoralized they will get less work done, not more, no matter how many hours are worked.” - from “Set a Sustainable, Measurable, Predictable, Pace”, Extreme Programming website

Now that we’ve established the traditional definition for “work harder” doesn’t fit for a developer, let’s address the goal of what is needed by working harder.  After all, working harder is a means, not an end in itself.  As Fred himself said, the goal is to “to get all this work done.”

“Work harder” really means “get it done”

The “get it done” phrase is popular among managers.  I believe managers say this when they know what they want done but don’t know how to increase organizational productivity.  The Agile development process increases organizational productivity over traditional models by prescribing  team focus (swarming), immediate results (low work-in-progress), high moral, and other best practices like pair programming and high quality (see XP programming).  

XP teams produce quality software at a sustainable pace.” - Extreme Programming Explained by Kent Beck & Cynthia Andres

When we adjust the speed at which we deliver software at the same cost, quality traditionally suffers.  Following Agile/XP practices, we can attain high quality over long term by focusing development effort on the highest priority project first.  That way, the business gets the most important project completed soon, with high quality, and the lesser important projects done a little later.

By the end of each sprint, a Scrum team is required to produce working software... the Agile manifesto states that we are to value ‘working software over comprehensive documentation’.” - from “Delivering Working Software Each Sprint”, Succeeding with Agile: Software Development Using Scrum, Mike Cohn

I told Fred working overtime might give us the appearance of getting more done, but we wouldn’t actually be delivering as much high quality software.  Instead, we should focus on the highest priority project first and use XP programming practices to obtain high code quality at a sustainable pace so that we can continue to meet business objectives.

In the end, the executives realized the project dates they committed to weren’t in line with what the business was able to deliver.  Following Agile and XP practices, the development organization got the highest priority project shipped first, a big win for the company, while at the same time kept reasonable commitments and working at a sustainable pace.

by James Rosko



Tuesday, January 31, 2012

Arduino | Pulse Monitor

Maybe I've gone too far??  This pulse monitor uses an infrared (IR) light to detect the blood going through my finger.




Here is the Arduino code.  Most of it is not mine, it's mostly demo code from the example.  I had to change the alpha value to reduce static.


int ledPin = 12;
int sensorPin = 0;

double alpha = 0.60;
int period = 20;
double change = 0.0;
int goingUpSeries = 0;

void setup()                   
{
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
}

void loop()                    
{
    static double oldValue = 0;
    static double oldChange = 0;
    int rawValue = analogRead(sensorPin);
    double value = alpha * oldValue + (1 - alpha) * rawValue;
    
    Serial.print(rawValue);
    Serial.print(",");
    Serial.println(value);
    
    change = value - oldValue;    
    digitalWrite(ledPin, isGoingUp(change, oldChange));
    oldValue = value;
    oldChange = change;
    
    delay(period);
}

boolean isGoingUp(double change, double oldChange) {
  return (change < 0.0 && oldChange > 0.0);
}


Thursday, January 12, 2012

Arduino | Blink LED Two

I recently acquired an Arduino Uno circuit board which is programmable via USB.  I can flash the circuit with a custom program written in a "C" like programming language.




/*
 * Example Arduino sketch
 */

int ledPinYellow = 10;
int ledPinGreen = 12;

void setup() {                
  pinMode(ledPinYellow, OUTPUT);     
  pinMode(ledPinGreen, OUTPUT);     
}

void loop() {
  digitalWrite(ledPinGreen, LOW);
  digitalWrite(ledPinYellow, HIGH);
  delay(250);
  
  digitalWrite(ledPinYellow, LOW);
  digitalWrite(ledPinGreen, HIGH);
  delay(250);              
}



Wednesday, October 12, 2011

End a Meeting, with Style

"Welcome to my meeting.  blah, blah, blah.  Thank you very much, good bye."

This is the standard format when holding a meeting.  It can be over the phone, in person, or even on Skype.  The meeting may have only yourself and one participant or it may have dozens of participants.  If you are leading the meeting, you are charged with making sure it starts well, stays on topic and it absolutely must end well.  I like to end my meetings in style!  Saying, "Thanks, good bye" is just too boring and doesn't motivate anyone to share in the team vision and all that stuff.

Sometimes facilitators say "You're dismissed."  Let's see how that sounds, "Welcome to my meeting.  blah, blah, blah.  You're dismissed."  It sounds like some is getting fired or at least they should leave and not come back for a long time.

If you are in the military, you might say "As you were" or "That's all for now."  For my team meetings, these sound worse than "Thanks, good bye."

I hold a lot of meetings; at least once per day.  One week, I tried ending meetings by saying nothing, really!  It confused so many people because they didn't know if they could leave or if I left to get something and would be right back.  Meetings need clear endings that make people feel like they are part of the group and can transition to the next activity.

Let's review some other popular saying:

In David Weber's Honor Harrington book series,  Captain Harrington would end each discussion by saying "Let's be about it."

Jack Campbell's The Lost Fleet book series, Captain John Geary says "To the honor of our ancestors" after every formal statement he makes.

Star Trek's Jean-Luc Picard says, "Make it so" or "Engage."

Marvel's Avengers, Iron Man gathers his team by saying "Avengers Assemble".  He'll even say "Avengers Disassemble" when he wants them to separate.

Even religious groups have their own peculiar sayings.  You may be familiar with the phrase "Go now in peace."

My favorite saying however, to end a meeting, comes from the "Back on your heads" joke.  If you want to use this quote to end your meeting, you'll first need to tell the joke.  It can be a little crude so feel free to make it PG to suit your audience.
http://www.jokesgallery.com/joke.php?joke=2223&id=1

What do you say to end your meetings?  Please comment below.

And by the way, back on your heads!