Archive for category General

The impact of being behind schedule

In managing a group of software engineers, this is something that has happened frequently in my team and has been bothering me for a while. It’s a lot easier for me to notice, as in my case, I actively write software with my team.

The problem

The entire team tends to perform so much better when we’re ahead of schedule, our spirits are high, everyone is motivated, the SCRUM board is bouncing around actively and everything is going great. However, as soon as the pressure starts to increase, a few milestones are missed and things start falling a little behind schedule. The entire team rapidly starts losing hope, everyone appears lethargic, demotivation kicks in and things slowly start grinding to a halt.

So how do we stop this ?

In trying to curb this level of demotivation and fatigue, we first need to understand why this happens. In reality, being a bit behind schedule is really not the end of the world. Estimates are provided on project milestones, but we need to realize that they are called estimates for a reason. No matter how many proven processes your software engineering team has in place and how good you have become at determining your teams velocity, there will always be parts of a project that cannot be put into a little box with a start and end date.

In addition to that, even though your estimates may be quite realistic, you can never accurately gauge what other problems may come along during a sprint. In our environment, we often have “urgent” requests to deal with; bugs, emergency maintenance, and other pesky time-wasters. To the management suits upstairs, these may seem inconsequential but in my experience, they have a far greater reaching impact than the suits realize.

All of this unexpected work contributes to pushing the team behind schedule. Most times we can catch up without impacting the projects final delivery, but there are rare times where we fall further and further behind schedule. It is these times that the team seems to get stuck in this cycle of despair and their relative output is reduced to who shouts at them the loudest.

So far, I have not found a good way to reverse this mindset after it has happened. The best way to work around this problem, in my humble opinion, is to not get there in the first place. Software engineers, sales teams and clients must realize that deadlines are going to be missed, specs are not always accurate and all kinds of impediments are going to get in the way of delivering quality work on time. The best thing we can do to prevent this is to manage everyones expectations in the best way possible.

Keeping everyone happy

Communication is key in managing the expectations of everyone involved. It is a lot easier to keep everyone happy when they know upfront that the team is falling behind schedule. The pressure from clients is reduced when they are informed early that an expected date of delivery is unlikely to be hit, which in turn reduces the amount of pressure. This contributes greatly to keeping the workforce in high spirits, amidst the whooshing sound of missed milestones flying by, and lets them stay motivated and productive.

Increasing the amount of pressure really does nothing to help a project along, although this is often the only solution that the clients and non-developers can think up. In fact, I strongly believe it does just the opposite of what it was intended to do. Adding pressure to an already drowning team only culls whatever motivation there was still remaining. This leads to developers lying about the status of a project in a desperate attempt to alleviate that pressure. That inaccurate status gets communicated back to the stake holders and the cycle just begins over – except with more pressure as the team is now even further behind.

In conclusion

Software engineers, be honest and accurate about your actual status, it may not seem like it, but you’re only going to help yourselves in the long run. Suits, be nicer to your workforce, they’re doing the best they can. Adding more pressure is helping no-one.

That is all.

, ,

No Comments

The day the routers died…

On February 3, 1959, Buddy Holly, Richie Valens and JP Richardson (aka The Big Bopper) died in a plane crash. Don McLean immortalized that day as “The Day The Music Died” in his 1971 hit, “American Pie”.

It’s somewhat ironic that on February 3, 2010 the last five /8s from the IANA IPv4 pool have been distributed to the RIRs.

102/8   AfriNIC    2011-02    whois.afrinic.net ALLOCATED
103/8   APNIC      2011-02    whois.apnic.net   ALLOCATED
104/8   ARIN       2011-02    whois.arin.net    ALLOCATED
179/8   LACNIC     2011-02    whois.lacnic.net  ALLOCATED
185/8   RIPE NCC   2011-02    whois.ripe.net    ALLOCATED

During a RIPE55 meeting surrounding IPv4 exhaustion, this rephrased version of that 1971 hit was played:

No Comments

Getting Git manpages on OS X

For some reason the OS X install of Git doesn’t include the manpages. Here is how I installed them.

First off, find the appropriate manpath.

greg@codemine:~ %> cat /etc/manpaths
/usr/share/man
/usr/local/share/man

/usr/local/share/man looks good…

greg@codemine:~ %> VER=`git --version | awk '{print $3}'`
greg@codemine:~ %> curl -O http://www.kernel.org/pub/software/scm/git/git-manpages-$VER.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  242k  100  242k    0     0  92051      0  0:00:02  0:00:02 --:--:--   99k
greg@codemine:~ %> sudo tar xjv -C /usr/local/share/man -f git-manpages-$VER.tar.bz2
Password:
x ./
x ./man1/
x ./man1/git-add.1
[snip]
x ./man7/gitworkflows.7
greg@codemine:~ %> rm git-manpages-$VER.tar.bz2
greg@codemine:~ %>

“man git-add” should now work fine.

,

No Comments

Keyboard shortcuts in Google Wave

I was messing around a little with figuring out some of the keyboard shortcuts in Wave. Here is what I have so far:

While editing:
Shift + Enter: Shortcut for “Done”
Control + Enter: Add comment

Control + b: Bold
Control + i: Italics
Control + u: Underline
Control + g: Poor mans CSS editor (JavaScript text input)
Control + a: Beginning of line
Control + e: End of line
Control + k: Hyperlink
Control + 1/2/3/4: Convert to h1 / h2 / h3 / h4
Control + 5: Bullets
Control + 6: Drops all formatting

While viewing:
Control + r: Reply
Enter: Same as Control + r
Control + e: Edit
Shift + Enter: Start replying at the end
Control + Space: Mark all as read

I’ll update this post if I find any more…

1 Comment

New addition to the family

So after much anticipation, many tireless weeks of spec checking and a whole bunch of money I was really glad to be on the receiving end of a brand spanking new 17″ MacBook Pro!

Although it has been less than 72 hours this is (so far) truly the most amazing piece of computer equipment I have ever owned, honestly worth every single cent! The initial setup was completely flawless and only took a few minutes. The graphics, resolution and performance are exceptional, in fact I haven’t even had to switch over from the standard “on-board” video card to the higher end controller yet, despite putting the GPU through a thorough beating, testing out the Quake 4 demo :P

The specs in this machine are as follows:

  • Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
  • 4GB RAM
  • 500GB 5400rpm hard disk
  • 17″ – 1920 x 1200 native resolution

I plan to upgrade the memory to 8GB and the drive to the 7200rpm model sometime in the future.

The packaging ... Please excuse the terrible quality of my 300 year old camera

The packaging ... please excuse the terrible quality of my 300 year old camera

Here are a few more (slightly better quality) pics:

The desk

My desk

A little closer

A little closer

Yo dawg, we herd yo like laptop pics...

Yo dawg, we herd yo like laptop pics...

A little closer, this should look familiar...

This should look familiar...

Another one

That trackpad really is awesome!

The rest of the network.

The rest of the network.

From the left, OpenBSD 4.5 gateway, proxy and firewall, ADSL router and OpenWRT wireless router on top of the 3com gigabit switch. The main workhorse (storage, virtual machines and build zones) is underneath that with a quad core processor, 4GB of RAM and just over 2TB of disk space in 2 ZFS pools (3 x 500GB and 3 x 640GB) running OpenSolaris and finally 2 x 2kVA UPSs.

5 Comments

The basics of ZFS ACLs

This post was mostly inspired by reading this post in trying to get my head around the ZFS ACL and permission system.

Basically I have a pool set out as follows:

tank
tank/media
tank/zones

tank/media is served via CIFS and NFS to multiple clients on my network, each with their own unix account on the OpenSolaris server. tank/zones is used for extra zones running on the host.

Everything was working great until I found that files and directories created by clients ended up looking like this:

----------  1 greg staff 734310400 2009-07-18 19:10 foo.txt
d---------  2 greg staff        19 2008-12-06 14:10 Bar

This sure didn’t go down well when other users needed to access those files or directories.

So in following the above mentioned post I did this:

 # zfs set aclinherit=passthrough tank/media
 # zfs set aclmode=passthrough tank/media
 # /bin/chmod 0774 /tank/media
 # /bin/chmod -R A- /tank/media
 # /bin/chmod -R A=owner@:full_set:fd:allow /tank/media
 # /bin/chmod -R A+group@:full_set:fd:allow /tank/media
 # /bin/chmod -R A+everyone@:read_set:fd:allow /tank/media

A better description of what the flags / syntax mean can be found here and here

A simple breakdown:

  • First off, we tell ZFS that all files or directories must inherit all acls / permissions from their parent.
  • We use /bin/chmod as the chmod in the default path is the GNU chmod which does not understand ZFS acls.
  • The second chmod “A-” will remove all acls currently set on the object.
  • We then set the owners permission to the “full_set”, thus giving the owner all possible permissions.
  • We do the same for the group.
  • Finally, we give everyone else read access.

, ,

2 Comments

Hello world!

So I finally decided to join the world of blogging. Let’s hope I have something interesting to say…

No Comments