Wednesday, May 30, 2007

The Joy of Patent Work

I've been trying to get the patent applications in order for the stuff we've been working on at Team46 for the past couple of months. Oh the joy of government legalese!

The US Patent & Trademark Office says:
------------------
“The USPTO will accept color drawings in utility patent applications and statutory invention registrations only after granting a petition explaining why the color drawings are necessary. Any such petition must include the following:

the appropriate fee set forth in 37 CFR §1.17(h)

three sets of color drawings; and

the following language as the first paragraph in that portion of the specification relating to the BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING. If the language is not in the specification, an amendment to insert the language must accompany the petition.”
------------------

Blaarghh!!! Please, kill me now.

Oh yeah… and THIS gem…

------------------
“The number of each sheet should be shown by two Arabic numerals placed on either side of an oblique line, with the first being the sheet number and the second being the total number of sheets of drawings, with no other marking.”
------------------

Oh, is that a fancy way of saying number sheets like 2 of 5 in this way; 2/5 ?

An oblique line!!?!? Grrr….

So if you've been tasked with taking care of IP stuff for your start-up let me give you some handy tips that I've come to so far...

Hire a lawyer
No, really. Time is one of your most precious commodities. Don't waste it on crap like trying to figure out the fancy government talk above.

Really prepare to talk to your lawyer
I like to write down all of my ideas, no matter how wacky or obvious, and get them in one big list. I write a short description (like two sentences) so I have a good idea of what I'm talking about. I also include diagrams or screenshots if I have them. Then I print out the list of ideas (with the numbers) as a table of contents and the ideas with their short descriptions with one idea per page. This way I have plenty of whitespace on my pages to take notes on what the lawyer says.

Types and Costs of Filings
There are two types of patent filings; Provisional (PF) and Utility (UF). Utility filings are what people typically think of when they think “patent”.

Provisional

Utility

Cheaper ($500-$5k) More expensive (see below)
12 mo. then abandon or file utility 20 yrs from filing or 17 yrs from issue
Establish date for “prior art” Establish exclusivity protection
Cannot be “tweaked” much before U.F. Can be tweaked or amended significantly
Not published Published

Figure 1 – Comparison of Provisional and Utility Filings

For Utility filings the costs based upon size and complexity of filing are t-shirt sized like this:

Size & Complexity

Initial Filing

2-3 Years Later

Low $12k +- 2k $12k
Medium $15k +- 2k $15k
High $18k +- 2k $18k



Gov.t Fees $1.5k - $2.5k

Figure 2 – Estimates of Costs for Utility Filings

One advantage to a Utility Filing is that it forces you to go through the whole process and see what needs to be shored up in any Provisional Filings you want to file.

It may also be worth your while to read through a few actual patents. Once you get past the language you can start to see how they are organized and what they are looking for in terms of specificity and organization. The US Patent Office has a pretty usable patent search site that covers both applications and grated patents.

That's about all I can think of right now. My eyeballs are about to fall out. Time to go home and drink myself to sleep. Thanks Patent Office.

Monday, May 07, 2007

To bug or not to bug

That is the question.

I used to be a software tester. In a way that's like saying, "I used to be an alcoholic." Just because you've moved on doesn't mean it stops defining a lot of your behavior. You see a bug and... well... it bugs you. You want it fixed.

So you see some trivial but vaguely troubling thing on a site and because your fingers can type a bug report on their own without your actually having to tell them to, bada-bing; the site owner gets a little nasty bomb in their inbox.

You're trying to help. You "just want to help them make their site better." But what you're actually doing is sucking the gumption right out of them. It isn't helping, it's hurting.

I did this recently.

The nice folks at Construx (who I think are quite good and who I rather like personally as well as professionally) put up a forums and blogs site for their training & consulting firm.

Now in my defense I wasn't trying to do something completely insane. I created a account, logged in, and could not see the forums or the blogs. This struck me as something they'd like to know about.

And here's where I went wrong. I wrote a bug report...


Sent From: brucephenry
Subject: Bug: If not logged in email form blanks after login
__________________________________

Repro:

  1. goto http://blogs.construx.com/members/EarlBCx.aspx
  2. Login
  3. Open another tab in your browser
  4. Click Send Earl an email link on the right
  5. In other window logout
  6. Type your message to Earl and hit [Send Email] button

Result:

Prompt to login followed by a blank email form.

Expected:

Prompt to login followed by "Thanks your email was sent" page (presumably along with sending the email as typed).

Bruce P. Henry





Why does the bug report have nothing at all to do with not being able to see the forums?

Well, I tried to send that one but as you can see above, if you're not logged in, you can't send email.

So why was I logged out?

Because if I was logged in I couldn't see the forums and so I also couldn't get the link in the forums to send mail.

As Earl says, "Arrrgg!"

This doesn't make me right. It just makes me a dork.

Earl is right (and he calls me on it). It really is a selfish thing to send this kind of crap.

He didn't ask me to test his site. He asked me to use it. To read it. To come play in it. He was my host and I threw rocks through his windows.

I was a poor guest. But it didn't have to be like this.

I just as easily could have sent a conversational, friendly email that said things like, "Hi! How's it going? It's really great that you guys have these blogs and forums and I'm looking forward to reading them." All of which is absolutely true.

"Hey I've noticed that I'm having trouble reading the forums and blogs when I'm signed in. This makes it hard for me to write comments on your blogs or post to the forums. The site looks great though and I'm really happy to see you folks building more of a community around your best practices stuff!"

That's all it would have taken. Just a little conversational civility.

I'm such a dork.

Thursday, March 29, 2007

Essential Interface Complexity

After reading a very interesting and insightful post on the Subtraction Blog I got to thinking about what it means for an interface to be "as simple as possible".

The kernel of the post is that for most software if you are going to offend/annoy anyone, you want it to be the experts. This is because for most software the experience level of users is distributed along a bell curve. And that mean that the vast preponderance of users live smack dab in the middle (or at least in the suburbs of the middle).

Now, while true for some software, I think it is far from true for all software.

It is obviously true for the majority of consumer software (and products in general). I want my tools/products to do one thing and to do it clearly and well. Less really is more in this kind of simple "I want my music to play" or "I want that text to be red" kind of tool.

However, there is another kind of tool. That's a tool for dealing with very complex problems. There is an entire class of problems sometimes called "wicked" problems (ref. http://en.wikipedia.org/wiki/Wicked_problems) that don't really have a simple solution. In this case it may be best to think of the problem (and the UI) as having no beginner/intermediate users.

There are numerous tools that take this approach when the problem is hard (or there is a negligible number of non-expert users).

  • Mathematica
  • Call Center Tools
  • Development Tools
  • etc

It is perfectly fine to want an interface as simple as possible. But it still needs to be complex enough to capture the essential complexity of the problem you're trying to solve. And the problem(s) that these tools are trying to solve are either extremely complex or the novices get "learned up" real fast.


The Eclipse IDE is a good example of a product geared directly to an expert end user. There is little done to hide the complexity of the tool from the user. In fact, the tool allows an enormous amount of complexity (compare it to an iPod) in order to perform all of the tasks that are essential to the product.

But in a sense it is also about as simple as you could possibly make it without losing the essence of the problem that they are trying to solve with the IDE. On the other side of this is booking some travel on a site like Expedia. Here the actual moving parts behind making a booking are incredibly complex (I used to work for them and let me tell you, airlines and hotels do not make it easy on them). But what the user wants to do has little essential complexity.

"I want to go to Hawaii for 5 days next month and stay at the Hyatt on Maui" is pretty friggen simple.

That's why a "give me my crap and here's some money wizard works so well for sites like Expedia and Amazon. The user really wants something conceptually simple. It is also why a "write Office 2011" wizard would not work so well.

Easy? Yes.

Simple? Yes.

But it lacks something essential.

Saturday, January 06, 2007

Organizational Breathing


So, I find myself sitting in my office watching the sun set over Seattle and thinking about organizations and how they change over time. It's interesting because I've now been around the proverbial block enough that I can start to see some patterns emerging.

Orgs need to go through a consolidate/diversify cycle to open up gaps that allow the high performing individuals to move up in the organization.

Static organizations tend towards hierarchical, seniority based promotion. This drives out some of your best performers.

It is natural from time to time to need to centralize or decentralize the functions in an organization. There are certain things that are easier to do when you have centralized a function (e.g. standardize process, share best practices, exchange tribal knowledge) and other things that are easier to do when you have decentralized a function (e.g. experiment with new methods, adopt new processes, eliminate old processes). Each of these is valuable in its own time. There's never a "perfect" organization just as there's never a perfect organism. Both organizations and organisms need to change, adapt, grow. At best they are dynamic, living things that need the freedom to change, but also the evolutionary pressure to cull the weak from the herd. That's where organizational breathing comes in.

I thought about this for quite a while when I worked at Expedia. I would often have people in my organization ask me what we were doing with the overall structure of the software development team and what would be next. They wanted to know if we would be reducing the number of independent project teams (centralizing functions like testing for example) or if we would be allowing specific business functions to "spin-off internally" (like making our corporate travel team a separate organization). Which one is right? Where are we going? Didn't we just finish centralizing (or decentralizing) that function? Can't management make up their damn minds?

Didn't you just finish inhaling (or exhaling)? Can't you make up your damn mind and just stick with one?

If we make the organization completely static then let's see what happens.

At first everything seems sane. Just business as usual. Good people get promoted. Bad people get fired (ideally). But occasionally someone makes a mistake. And then the proverbial wild rumpus starts.

Because now you have a manager or a director (or worse yet a VP) that's in over their head. They aren't doing a good job and it is affecting everyone below them. Additionally as that person's manager it may be hard to admit or see that they are in trouble. Heck, they may in fact be very gifted at "managing up" and effectively protected by that skill.

Now because the organization is static, there's no real way to move them "laterally" into a less sensitive position unless you just happen to have one open. In fact you've likely got no other option than to give them the boot because they just are not a good fit for the current position. And this is important, even if they are an otherwise excellent asset for the company overall.

"You have failed me for the final time director. Hssss. Whooosh. Hssss. Whooosh..."

That hissing and whooshing may be the breathing of an upper management despot, or it may be the talent escaping from your company.

And what of the otherwise excellent people who get stuck under great managers?

"Now wait a minute." you say. "What's so bad about being under an excellent manager?"

"Nothing at all." I say. "Provided you don't want to move up in the organization."

Ideally excellent managers tend to bring up excellent employees. So you get a bunch of excellent people reporting to your excellent manager. But in a static organization the excellent people below excellent managers end up fighting among themselves for the one spot (since we're certainly not going to reshuffle the whole org once a year or so) that your excellent manager is occupying. And then in the end you get a bunch of excellent folks leaving because of "politics" when it was really just that the game was rigged for exactly this outcome from the start.

Your excellent manager may end up leaving too since she may get sick of being undermined by the otherwise excellent people she's been training.

Sigh...

So breathe damn it!

Move people around.

Breathe in. Centralize functions (like DBAs or Testing or Program Management) when you want to spread best practices and when you want to do just a couple of LARGE projects. Or when those functions are just getting started in your company (like formal project management).

Breathe out. Scatter people into little pods of developers, testers, PMs, project managers, etc when you want to focus on a specific area of your product (like hotel search results, or better UI for selling cruises).

And each time you do it, just like breathing, go "out with the bad and in with the good." You'll be okay as long as you don't stop doing it.

Friday, March 31, 2006

Reorganization Addiction

Is your organization addicted to reorganization?

Do you re-org about once a year?

Do you do it with the intention that it will solve all kinds of problems?

Do you find yourself thinking of the next re-org as inevitable?

So do I.

Hi. My name is Bruce and I’m a re-org addict.

Re-orgs suck.

  • Reorganizing is disruptive to work in progress
  • Reorganizing lowers employee morale
  • Reorganizing lowers productivity
  • Reorganizing incurs a bunch of direct costs (e.g. office moves)
  • Reorganizing always seems like a good idea at the time


I think that most reorganization can be avoided with diligent long-term planning and discipline.

Having been through several major re-orgs, I have noticed that it is true, “The seeds of the next re-org are planted in the current one.” There is an attitude that extends all the way into upper management that if you “just wait a year, another re-org will happen”. As if re-orgs were a fact of life; like the weather. I think that this is primarily the result of a lack of forward planning and looking beyond the next 6-12 months to see how each of the organization decisions made today (often for expedient, short-term reasons) play out in the long run. Of course it is hard to do that when you know that the next re-org is only a year away… and around we go.

I think that the majority of re-orgs are the direct result of the failure of leadership to make long-term plans and stick to them. By failing to do this planning, by failing to look beyond the immediate problems and short-term solutions to those problems, they lay the foundation of the next crisis. They get locked in an endless cycle of organizational firefighting. You can tell that these re-orgs don’t really solve any fundamental underlying problems since you just have another one falling on the heels of the first (or the fifteenth depending on how long you’ve been at the company).

In principle I think you can avoid this.

I think that the way out of this is the same way the founding fathers got America out of the revolution game. You need to make small predictable revolutions a way of life. Bake them into your planning. Just don’t try to do the whole thing at one big shot. The founding fathers chose every four years (two if you’re a member of the House of Representatives, six if you're a senator) as the time scale for mini-revolutions. You can do something similar.

Maybe you need to set the leaders of your current teams down in a room and ask them, “What do we want our organization to look like and act like in 2-3 years time?” Once you can get them past the “it doesn’t matter what I think since they’ll only reorganize us” phase you can start doing some real mid-term strategic planning for your organization. Write the plan down! At the same time that you generate the plan, schedule a 3-6 month checkpoint and (here’s the hard part) hold yourself to it. Then at the checkpoint, review the plan. Make any tweaks you need to and schedule another 3-6 month checkpoint.

This is really a question of discipline. Organizations need to change and grow as the business changes and the staff changes. But they tend to handle it in the way that earthquake faults handle the movement of the tectonic plates, they store up the stress until there’s a seismic event and all hell breaks loose. But by making small, predictable adjustments as there is change I think you can avoid this kind of grief.

Yes, I have a re-org problem. But at least I admit it.