Monday, April 27, 2009

Motivating Geeks... And non-Geeks

Maslow's hierarchy of needs and Herzberg's two factor theory both say the same thing:

You need to get the basics right before you can expect your staff to be motivated.

If workers are scared of losing their job or frightened of not being able to buy food for their children, they aren't going to be motivated.

When people get annoyed at their unresponsive PC and tediously slow compile times they aren't going to be motivated.

It won't help if they're in pain because their desk or seating area is wrong. Or if the temperature is sweaty-forehead-hot or freezing-nose-cold.

When there is excessive noise they won't concentrate, and won't care.

If bullying occurs or workers feel undervalued they'll just not bother.

Pay attention to the little things. Ask your staff what they need and what they want, and you'll be well on your way to a motivated workforce.

Motivating Geeks... And non-Geeks Part II

Wednesday, April 22, 2009

Is Programming a Creative Pasttime? Discuss.

Martin Amis missed a trick when he called his book The War against Cliché. The War on Cliché would have been far more apt.
"What has a book on literary criticism got to do with software development?" I hear you question.

Well, programming is often said to be a creative pasttime. And when I was developing video games I would have totally agreed with that statement.

But now, with some years of professional development in non-entertainment-software circles, I'm not so sure that it is.

Beautiful software is built from well structured reusable components that adhere to design patterns.

The design pattern is the programmer's cliché, in that the world has seen it all before.

So when you're thinking about being creative and coming up with some fancy new algorithm, just remember that good ol' design pattern clichés are good.

What do you think? Is programming creative?

Wednesday, April 15, 2009

Business Balls for Leadership and Management

I just quickly need to mention as it's an excellent repository of business and management articles, reference sheets and explanations.

If you're wondering why that staff member might not be motivated, what it takes to be a fantastic leader, how you should conduct that interview, or even if you're looking for some team building day icebreakers, this site has it. And some.

Thursday, April 09, 2009

Risk in Software Development.

I've been listening to some talks on financial markets and it's got me thinking about risk in software development.

Risk is everywhere in the software creation process.

For example, should you invest resource in writing formal user requirements specifications, functional specifications and acceptance test plans. Or do you risk the project overrunning when it doesn't quite do what the customer expects and you have to make a number of late changes?

Should you take time at the start of a small project to write unit tests before any other code. Or do you risk a drawn out testing phase later on?

In financial markets risk is measured using a number of statistical methods but how would you go about measuring the risk in the examples mentioned above?

If you know the customer that you are delivering the product to, you may know how forgiving (or not!) that they are. If you have a good relationship with the client you may be able to get away with a number of severity 3 or 4 bugs.

When dealing with an unknown customer assume the risk is high. And the larger the development, the larger the risk. With a high risk project you should aim to employ as many good software development practices as possible.

(Thanks to Esko for the excellent photo)

Tuesday, April 07, 2009

6 Free Tools that every Windows Programmer should Install

1. Unlocker

I've talked about unlocker before, it's basically a fabulous little utility that tells you which app is locking your file (and it normally says it's the TortoiseSVN cache which brings me neatly onto my next utility...)

2. TortoiseSVN

The code you produce at work is version controlled, so why isn't the code your make at home? TortoiseSVN is the best way of managing a home version control system as it's a really easy Windows Explorer plugin.

3. Dependency Walker

So you're developing a large application - and by large I'm talking tens or even hundreds of dlls.

You change the public interface on one of the non-dynmically loaded ones and, because you're in a hurry to get a build finished, only rebuild that dll.

Suddenly you can't start you app up any longer.

Dependency walker can tell you which other dlls need to be rebuilt so that they can interface with the changed dll.

4. Notepad++

You're not still using notepad to open .txt files are you?

Notepad++ is far better as it supports custom plugins and has macro recording, yet it still starts up in an acceptable time.

Of all of the freeware editors out there, this is my favourite as it behaves the most like Visual Studio when the Ctrl key is held down and your flicking from word to word.

Other alternatives to the Big Bad Pad are: PSPad or Programmer's file editor, but I've tried them both all I'm sticking with Notepad++.

5. Process Explorer

Want to know what's eating all your processor time? Download Microsoft's pimped-up task manager, Process Explorer.

6. AutoHotkey

There is generally thought to be a 10 fold difference in productivity between poor programmers and expert ones. I believe that this is in no small part down to the experts' use of keyboard shortcuts. Auto Hotkey allows you to set up hotkey scripts to control virtually anything.