Thursday, October 26, 2006

Visual definitions of marketing

John Moore at Brand Autopsy has some images (originally from Marty Neumeier's ZAG) that demonstrate the differences between terms like Marketing and Public Relations.

What if there was no such thing as best practices?

Well then you'd have to get off your ass and think.

Via Frank Patrick.

Wednesday, October 18, 2006

Toy gun?

Via Penny Arcade,

I find this Nerf sniper rifle quite disturbing. And this coming from a regular FPS player.

Tuesday, October 17, 2006

Lean, XP, Scrum in game development

The Lost Garden has an entry about persistent myths about game development. It's essentially a summary of Lean, XP, and Scrum concepts applied to the game development ecosystem. Quite interesting for me as a non-game developer but (as my blog title suggests) a regular game player.

How to pick up girls with an iPod

Via Charles Miller,

Steve Jobs talks about why the Zune wireless transfer is not useful:

I’ve seen the demonstrations on the Internet about how you can find another person using a Zune and give them a song they can play three times. It takes forever. By the time you’ve gone through all that, the girl’s got up and left! You’re much better off to take one of your earbuds out and put it in her ear. Then you’re connected with about two feet of headphone cable.

Sunday, October 15, 2006

ThoughtWorks Oz is hiring graduates for January 2007

We have graduate job openings for January 2007. Specifically, "developers" and "business analysts" (though I'm all for generalising specialists so I'd especially encourage any Renaissance types to apply)

If accepted, you get to go to ThoughtWorks University in India which I'm told is quite fun by all the young'uns.

If you read this blog, I think you know the kind of people we're looking for.

This specific opportunity is for recent graduates (or "people who graduated in 2004 provided you have no more than 1-2 years commercial post-graduate experience in technology") but we also have openings for more experienced candidates.

Rentometer

Via Brady Forrest on the O'Reilly Radar,

Rentometer is just cool. I need to write a version for Sydney.

Happy employees = happy customers

John Moore at Brand Autopsy on aligning the employee experience with the customer experience:

The best companies, namely those listed as one of Fortune Magazine’s "100 Best Companies to Work for in America," spend just as much time marketing to its employees as it does to its customers. In other words, these companies realize that happy, knowledgeable employees will usually translate into happy, knowledgeable customers.
Pretty obvious, huh? And yet...

The point of Design Patterns is to teach you to think

I originally noticed this from Stefan Tilkov. Well, I would have read it anyway since Ralph Johnson is on my blogroll but Stefan's entry happened to show up first. I didn't get around to blogging about it but now that Dave Astels has, I thought I should add my support.

Ralph Johnson on misconceptions about Patterns:

He says that " Everyone already knows that Design Patterns means a library of C++ code templates". Yes, some people think that. They are wrong. A design patttern is not a library of code templates in any language. If you use Design Patterns by copying code from the book then you are stupid and missing the point. The point of the book is to teach you to think. If you learn how to think about code then you will program better.
+1

Sell what the buyers want to buy

As opposed to selling what you want to sell.

Seth Godin uses how animal shelters typically attempt to sell adopting a dog to demonstrate this very simple sales concept.

The authenticity of synthetic happiness

Dan Gilbert on synthetic happiness at TED:

Saturday, October 14, 2006

Make no little plans

Via Designing for People,

Make no little plans; they have no magic to stir men's blood and probably in themselves will not be realized. Make big plans; aim high in hopes and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone will be a living thing, asserting itself with ever-growing intensity. Remember that our sons and grandsons are going to do things that would stagger us. Let your watchword be Order and your beacon Beauty.

-- Daniel Burnham

Customer collaboration over contract negotiation

Our philosophy of contracts is based on mutual respect and faith. The only purpose of the agreement is to clarify certain factors that experience has taught us might otherwise cause misunderstandings.

-- Henry Dreyfuss, Designing for People, written in 1955
He also talks about never working on speculation (aka fixed price, fixed scope) for "firms of any standing".

The Dreyfuss five point formula

In Designing for People, Henry Dreyfuss describes a five point formula for industrial design which is easily convertible to software construction.

1. Utility and Safety
Currently known as usability, though these days not much time is typically spent on the safety aspect since most of us tend to play in the less critical part of the methodology space. Although not typical, a better word to use would be humane.

2. Maintenance
How habitable is the system for programmers who will need to enhance it? How easy it is for users to administer the system (e.g., user details, custom preferences, etc.)?

3. Cost
Design in the Dreyfuss model includes consideration of manufacturing and distribution. That some cool feature is difficult to build is not just something for programmers to worry about. Dealing with these trade-offs is also a part of design.

4. Sales Appeal

Many persons think sales appeal and appearance are synonymous, but they are not. Sales appeal is an elusive, psychological value.
Sales appeal is all about the story that the customers tell themselves and each other about the system/product.

5. Appearance
According to Dreyfuss, after achieving the first 4 points, 90% of the appearance will be taken care of. The last 10% is refinement of form, proportion, line, and color.

A well-set dinner table

My apartment, never mind, my desk tends to be quite cluttered so it's odd for me to like this quote by Henry Dreyfuss in Designing for People:

But I am convinced that a well-set dinner table will aid the flow of gastric juices; that a well-lighted and planned classroom is conducive to study; that carefully selected colors chosen with an eye to psychological influence will develop better and more lucrative work habits for the man at the machine; that a quietly designed conference room at the United Nations headquarters might well help the representatives to make a calm and just decision.
Following a similar sentiment, Kathy Sierra has recently got a restored Silver Streak trailer to use for her work environment.

As for me, perhaps I should clean-up my apartment... either that or get a maid service...

No legal obligation

From Bill Waddell at the LEAN Executive Blog,

Your customers are under no legal obligation to buy from you. Your employees are under no legal obligation to suggest improvements. The government is under no legal obligation to provide you with any further funding for your factories. In fact no one has any legal obligation at all to keep you in business for one more day. When your business principles are built around attaining the minimum level of management necessary to fulill your legal obligations, you are doomed. If your HR folks spend much time at all worrying about legal obligations you have a gross failing of management on your hands.

Friday, October 13, 2006

Design should be obvious

If a door or a panel is supposed to open, we try through design to show how it opens. If something is to be lifted or operated by a handle, we try to integrate the lifting device into the design, but never to conceal it.

-- Henry Dreyfuss, Designing for People
At the client building I'm working in now, some of the floors have restrooms where the doors are flush up against the wall, using the same sheet metal veneer. The only indication that the room exists is a single word, either "Men" or "Women", painted in black. The same font, size and colour as other text along the wall identifying the electrical room, access panels, etc.

All this contributes to an inevitable, initial confusion about where the restroom is.

In web design, there seems to be a common temptation to hide links, buttons, drop-downs, etc. with more aesthetically pleasing styles. Perhaps these changes do make the page look better at a glance. But they sure make things harder to recognise, harder to find, and therefore harder to use.

This concept also applies to code design. Encapsulation and information hiding is not supposed to confuse users about your API. If something bad might happen, it would be nice to know about it. Perhaps a declared thrown exception, documentation, or some overarching well-known convention.

The battleground of the department store

True, we are straying from the path of utter purity when we consider anything but pure form, proportion, line, and color, but we have larger horizons than the purist need consider. Ours is the everchanging battleground of the department store rather than the Elysian fields of the museum.

-- Henry Dreyfuss, Designing for People
The kind of software I write doesn't actually even end up in department stores but I share the general sentiment. We're not writing things for museums. Our awareness can't just be on the form of the software code but also the context in which the whole software package will be sold and used.

Wednesday, October 11, 2006

Lessons about happiness learned from tomato sauce

Malcolm Gladwell's talk from the TED Blog:

Tuesday, October 10, 2006

Project filibustering

When you tack on unnecessary technical work to a project, it's just like filibustering a political bill by using amendments. Unlike the political tactic, I doubt that project filibustering is ever deliberate. It seems more often to a lack of faith that the work would ever be scheduled otherwise. In other words, you don't believe you can sell the work on it's own merits.

Don't do this.

If you can't convince stakeholders to schedule valuable work, either you need to learn how to present your case better OR realise that perhaps the work you think is valuable, actually isn't.

Filibustering can defeat political bills. Project filibustering can defeat projects.

How much is 30 seconds worth to you?

It's just the first time, they'll eventually get past it, but it's guaranteed that most people will be confused for 30 seconds before they figure out what they need to do.

As an engineer, as someone who creates things, how much is that 30 seconds worth to you? How much thought would you have on those 30 seconds? How much effort would you spend?

How would you feel if you know that someone could care less that you will waste 30 seconds of your life feeling confused and useless? How would you feel if you know that someone will spend the effort just to give you an extra 30 seconds of feeling a sense of competence?

Sunday, October 08, 2006

DeMarco's estimating dilemma

Tim Ottinger lists estimation antipatterns from Tom DeMarco's, Controlling Software Projects:

  1. refusal to reestimate ("estimate as goal")
  2. estimating by adding acceptable slippage ("what you can get away with")
  3. adding past slip as future negative slip ("it will even out")
  4. estimate "right answer" (estimation by guessing "the right answer")
  5. estimate by padding the "right answer" (guessing how much you can push the right answer)
I've encountered the first antipattern a lot.

Our goal is not to have accurate estimates. Our goal is to profitably deliver solutions in the form of software that satisfy (or better yet, delight) all users of the software.

How do you communicate a performance hack?

Charles blogged about a performance hack that was only commented on in the CVS log but not in the code.

I agree with him that these sort of things should have comments in-line with the code. It's a simple matter of understanding what happens when someone new (including a forgetful future me) encounters the hack. My instinct is to remove anything that looks strange, trusting that if I've broken behaviour, a test will fail. Inline comments are the quickest way to stop that.

Charles also suggests that a failing test (i.e., testWeDoFooBeforeBar()) will not communicate why the hack was done. I'd agree that if the test is of that form, it's not very communicative. There really should be a test that will fail if the behaviour changes. In this case, the behaviour is performance. If I remove the hack and that performance test still passes due to other changes in the overall system, it's still okay.

As for Charles' example of one of his comments for an obscure bug fix... all I can say is that the desire to write a comment like that is a clear indication that you need to take a break.

Thursday, October 05, 2006

The last refuge of the Soviet Union

Mark Edmondsen at the Lean Executive about the Union of Soviet American Executives:

The Soviet Union’s Politburo learned the hard way 15 years ago that centralized control doesn’t work. Unfortunately, most American companies still don’t get it.
Also from the comments, Mark Graban points to one of his posts on "Soviet" businesses.

Tuesday, October 03, 2006

Top 11 myths for a new business

Via SlashDot,

Ron Garrett posts about 10 + 1 myths geeks have when trying to raise money for a new business. I would say that these myths apply to anyone with a "great new idea".

Myths:

  1. A brilliant idea will make you rich.
  2. If you build it they will come.
  3. Someone will steal your idea if you don't protect it.
  4. What you think matters.
  5. Financial models are bogus.
  6. What you know matters more than who you know.
  7. A PhD means something.
  8. I need $5 million to start my business.
  9. The idea is the most important part of my business plan.
  10. Having no competition is a good thing.
  11. After the IPO I'll be happy.

Sunday, October 01, 2006

Every once in a while...

"You know, I don't know if it's one of those guy things, but every once in a while I give serious consideration to training with monks up in some Chinese mountains to become a kung fu master."

-- Torg in Sluggy Freelance: Bikini Suicide Frisbee Days by Clay Yount

Calling an interface usable is like calling food edible

I found Get Humanized from Ajaxian and I like this entry about Why "humane" is a better word than "usable":

An interface is humane if it is responsive to human needs and considerate of human frailties.

It's really that simple: if you ever use an interface and can honestly say that it's responsive to your needs and considerate of your frailties, then it's a good interface. An interface that just works.

What could you do tomorrow to be more useful to others?

Ramit Sethi on how to be incredibly useful:

The most successful people I've met started off removing barriers for themselves--and then for people they wanted to impress. In other words, to become useful, think of how you can be useful to someone else.
...
Anticipate what people will need and make it happen before they ask. If you run a web site or web app, figure out what your users are going to complain about and address it before they do—or even just acknowledge it. They’ll love you for it. If you go out to a business dinner, have the check taken care of in advance. And if your roommate is going to run out of milk, pick up another carton before he does.

I'll write more about this in an upcoming series on supercharging your career. But for now, what could you do tomorrow to be more useful to others?

He places this in the context of improving your career. I'd rather place it in the context of creating a meaningful purpose for your life with the side effect that it will likely improve your career.

Test breakage isn't a problem if...

From a post by Brian Marick on the Agile Testing mailing list brittleness in unit tests:

  • A certain amount of brittleness is inevitable at the beginning.
  • Test breakage isn't a problem IF you use it as an opportunity to better understand either the program or the testing of the program (probably both).
  • Breakage /is/ a problem if what you do is just make the test work again, rather than improve it in some more fundamental way. The former will perpetuate brittleness; the latter will eventually fix it.
  • The malleability of the tests ought to somehow keep pace with the malleability of the code.
Brian also references the foreward he wrote for Fit for Developing Software:
Tests are special things. Spoken conversation is free to be abstract, and it often is, but tests are relentlessly concrete. It's a struggle to so precisely express what you want. And it's in such struggle that creative surprise happens. You push against the world. The world pushes back. You shift your position – maybe you're not using the right words, maybe you could break the problem down differently – and push again. Repeat, maybe until it seems you'll never get it right. And then, suddenly, you push and the resistance is gone. Eureka! You've figured out how to say something that the business people, the programmers, and the computer can all work with.