James Wilding's Weblog

Month: October, 2009

Free Forever?

A year or two ago, I was looking at some community websites when I found one that promised to be “free forever” (they even said “we’ll never charge for our services”).

This kind of promise is stupid. You don’t know what your business will be doing in a year’s time — unless you’re a dedicated non-profit with a clear idea of how you’ll be funding your free service, promising never to charge for it is nonsense; meaningless.

Of course the website in question did exactly what you’d expect: started charging for their services (the “free forever” promise quietly disappeared from the site). It was inevitable: how would they have made money otherwise? I don’t know how much fuss the change caused amongst existing users — I never did sign up — but it struck me as sloppy and insincere: there was no apology, and no explanation.

Promises are great — they make for excellent marketing — but they’re even better when someone actually sticks to them.

Why I don’t work Fridays

I’ve never liked working a five day week — which, if you’re British, probably makes me sound lazy. Britain has a crazy attitude to work: go all out, nose to the grindstone, 30 to 40 hours a week; then crash at evenings and weekends. Go out on Saturday and get blind drunk. Sleep on Sunday. Repeat.

Yes, as you can tell from my tone I think this is madness. One of the reasons businesses become mired in stupid regulations and corporate jargon is that nobody has the time to stop and think “this isn’t the way we should be doing things”. Everyone’s too busy working to think about the best way to work!

A three day weekend, with Fridays for optional loose-end-tidying and anything fun, lets me get some perspective on my work. Work isn’t everything: it’s fun, it makes me money, it helps people. That’s enough, and by giving myself an extra day away from doing, I can spend more time  just being and focusing on what’s really important. This is essential for a good business and a good personal life.

When you’re busy, most of the business is in your mind: things you think you have to do. You need time off to realise that those things aren’t as important as you think. When you’re working all the time, you tend to just keep working — whether you need to or not. Even if you can’t take a day, take a few minutes and ask yourself: what’s really essential? And what’s the big rush? :)

How To Upgrade To Windows 7

Don’t

Try one of these instead

How To Avoid Problem Clients

Happy Cog’s Greg Hoy recently wrote about how to “figure out which deals are actually worth closing” when it comes to website design. Here’s my take on the same subject, from a small business’s point of view.

When I first started doing bits and pieces of freelance web design and development, I thought I should take on whoever came my way but I learnt pretty fast that that was a mistake. Because lets be honest: some clients are awful.

Finding the right clients is really, really important. The right clients help you to build your business, both by keeping things simple and helping you work well, and by putting you in touch with new work. Good clients beget good clients.

Similarly, bad clients beget bad clients: time spent dealing with hassle, poor communication, a changing brief and any number of other pitfalls is time you could have spent learning new skills, meeting your peers, or improving your work flow. Bad clients are toxic: they drain your business of its energy now, and they stunt future growth.

So from the point of view of a small business, here’s what to avoid:

The Miser

This is the client with a big long list of requirements and a tiny budget. This is a sign of completely unrealistic expectations, which expectations will probably apply to other aspects of your work, too. I once met a lady who asked me to build an ecommerce website for less than £350 in two weeks. I said no.

It’s pretty easy to spot misers up front: you’ll get a good sense of them from talking through their brief and asking about their budget. Avoid them.

The Micro Manager

This is the client who has lots of “good” ideas for her website/project, and insists that you implement them. All of them. Exactly as she asks.

Micro managers will treat you more like a slave or a robot than an equal, insisting that you implement everything they ask down to the last, unrealistic, crazy detail. These people won’t take no, even when you explain why their ideas are unrealistic or just plain wrong.

It’s more difficult to recognise a micro manager before work starts, but there are signs: they tend to be highly strung, dismissive, and a little bit false (they’ll agree with things without really agreeing to them). Trust your gut reaction and walk away if a working relationship feels wrong.

The Absent Owner

This one is similar to Hoy’s “Vanishing Boss”, but worse. Hoy’s Boss disappears for most of the project only to come back at the end and ask for major changes. The absent owner walks away from the project and leaves you with no-one to liase with: for small business work, the manager is often also the project team, accountant, secretary, etc, etc… If you’re working with someone who is never there, the work will never get done — and you’ll never get paid.

Judge whether someone will be an absent owner based on their working patterns. Do they take a long time to get back to you about an estimate? Ask some discrete questions about their other commitments: do they seem too busy to focus properly on a new piece of work?

Some clients think that it’s OK to leave you to it once a design or development project has started: it’s your job to make them understand the importance of regular communication.

The Corporate Guy

Lastly we have Corporate Guy (and for some reason they are always men): the one who speaks in management jargon. It’s easy to make jokes about this but anyone who actually has to work with a jargon-speaker will tell you how difficult the jargon makes things: goals and expectations become unclear, roles and responsibilities become fuzzy, and meetings are bloody awful.

I met someone like this a few weeks ago and turned down a job worth a few grand because, after an hour on the phone with the guy, I was no clearer about what he wanted.

This type is easy to spot: you can tell them as soon as they open their mouths!

Conclusions

It might be tempting to accept any work from anyone (especially when you’re starting up) — don’t. Keep a focus on quality clients and you’ll be more able to do quality work right from the start.

PS: it goes without saying that (since I try to follow my own advice), none of my clients fall into these categories. Thankfully :)

Ruby best-practices: Boolean methods

I’ve been reviewing some code recently and have been struck by a few misconceptions about how to handle boolean (true/false) values in ruby. Here’s an example:

[ruby]
def authorise_to_edit_article
if current_user.can_edit_articles and @user_action == ‘edit’
return true
else
return false
end
end
[/ruby]

That will run, but there are a few things wrong with it. First, the method doesn’t do a good enough job of describing itself. Following ruby’s conventions, a method that returns a boolean value usually ends with a question mark. Second, the method name needs to be clearer about who or what is being authorised: maybe current_user_can_edit_article? would be better.

Third, we can slim down this method a lot — and make it much easier for other developers to understand — by removing the if..else code. The method returns true or false, but the logic check used by the if statement will return true or false on its own, so we can just write:

[ruby]
def current_user_can_edit_article?
current_user.can_edit_articles and @user_action == ‘edit’
end
[/ruby]

Much better! That removes 80% of the code, does the same job, is more concise, and is easier to scan.