Skip to content

Posts from the ‘Uncategorized’ Category

Hurry up and quit

Sometimes it’s hard to know when to quit. I have been participating in crossfit for about 2 years now and one thing I am finding to be a constant is that I’m always tweaking my body here and there. Sometimes it’s just muscle soreness from doing more work than I have ever done before, sometimes it’s a legitimate injury that is could to take a few days to recover from.  Sometimes it’s a legitimate injury that could takes weeks to recover from.  Muscle soreness is all part of the game, and usually just needs to be worked through. Injury requires time off to heal.

The hard part is knowing the difference.

Life outside the gym is very similar. Sometimes we find ourselves “sore” from the daily grind and what we really need is to push through and get the work done. Other times we are suffering from an “injury” of overwork and what we really need is to take time off to rest and heal.

The hard part is knowing the difference.

As in the gym though, usually the best indicator is our results. If we are grinding day in and day out and don’t have anything to show for it, we might need time off to heal, or at least time to think about how we are tackling the problems in front of us. If we are making slow but steady progress, it may be that we simply need to readjust our expectations of what it means to make progress.

the problem with infinity is that there is a lot of it

1024 x 800 = 819200

819200 is a big number.  Especially if you are only allowed to choose one.  Talk about analysis paralysis.  But in fact most computer users are confronted with this problem on a daily basis.  That number represents the number of pixels available on any modern computer.  Any time you initiate a drag and drop operation on your computer, you are faced with that many potential places to “drop”.  For some tasks this flexibility is necessary:  Modifying pictures in Photoshop.  Drawing that award winning webcomic.

Some tasks however don’t require infinitely flexibility.  You can see this when attempting to drag a file to the wrong place.  Try dragging an image from a website into your calculator.  It’s possible, but meaningless.  That’s because most of those 819200 choices are “wrong”.

There is nothing inherently wrong with building in support for drag and drop in your software, but don’t presume that users will encounter them.  We’ve had drag and drop interfaces commonly available for 20 years, and it’s still a novel approach for most users. I can do some cool things by using drag and drop.  I can quickly take a URL from safari and drop it into a blog post. That’s a nice shortcut that saves me some cutting and pasting, but if it was the only way to create links we wouldn’t have nearly so many of them.

If you write software, don’t presume that users will try any of the drag and drop operations available in your software without prompting.

If you are a user, try dragging some things and dropping them onto other things, you might be pleasantly surprised.

Thinking is Hard, Let’s go shopping

Not only is thinking hard, but it’s actually quite risky.  I’ve adopted a practice of working off-site a couple days a month.  These strategy days provide some great opportunities for me to catch up on strategic thinking.  Taking a few steps away from the details at the office lets me process what has taken place over the last few weeks and set a good short term strategy for the next few weeks.

I’ve come to realize though that in taking these days out of the office I’m actually opening myself up to quite a lot of risk.  When you tell your co-workers that you are going off to think they typically have expectations when you return.  There’s nothing wrong with these expectations.  We should expect great things from our co-workers.  But it’s an interesting side effect of the process, and honestly I think it causes me to stay focused.  I make sure to collect enough articles that relate to our present challenges to provide plenty of fodder for the mind.  I make sure that if the space I’m working in is not working I move.  If the coffee shop is too loud I move to the home office.  If the home office is too solitary and not stimulating I move back to the coffee shop.  Sometimes the walk to and fro is enough to spark the mind.  The key is not to get stuck. If you are stuck, get moving. You don’t want to return empty handed, do you?

What if you come up with an idea so brilliant, when people finally hear all you get is “duh”, or worse “that will never work”.

Not all of the risk is associated with other people.

We may also disappoint ourselves.  Building up a big backlog of things to strategize on may yield nothing more than a vague notion, and a paragraph of illegible scribbles in a moleskine.  It can be hard to acknowledge that you failed to come up with anything tangible and useful after 9 undistracted hours.

These are legitimate risks, but they shouldn’t prevent us from doing the hard work of thinking.  A good balance of thinking and doing yields better results that doing only one or the other.  Too much work without thought ends up with wasted or misdirected effort.  Too much thinking without doing leads to Philosophy Degrees… (sorry, couldn’t avoid that one).

But do make time to think.  You join good company.

Tangents of the week: Math is hard, let’s go shopping.

The Definition of Failure

Software fails 75% of the time. I know that sounds like a big exaggeration but bear with me.

I have recently spent several hours trying to make tethering work on my android phone. Tethering would enable me to share the internet connection my phone already has with an iPad or other wireless device. Sounds like a really cool idea doesn’t it? All these devices have a wifi connection, they should be able to connect to each other and share things like an internet connection… Well you can’t. It doesn’t work. To be fair, it works occasionally, unpredictably and with great difficulty, which is to say, it doesn’t work. Not in any of the ways that matter.

Every time a user attempts to make a piece of software work they have the potential to encounter a failure. A button that doesn’t work as advertised. An operating system that locks up and prevents the software from working, or slows down so badly it prevents you from getting any work done.

I think we have been overly forgiving in categorizing software failures. In the software world we often believe that software is working correctly if it’s behavior matches the documentation. If the software does what the creator intended it to do, then it is successful. I would argue for a more stringent definition of failure. Any time the software fails to perform what the user expects, it has failed.

Where all them profits going?

I don’t plan to devote many words to current events, but this one struck me as being somewhat interesting and has been a trend for the last 7 quarters, so perhaps there is something deeper and more interesting going on here.

The nation’s workers may be struggling, but American companies just had their best quarter ever.

http://www.nytimes.com/2010/11/24/business/economy/24econ.html?_r=1

Corporate profits have been climbing steadily and setting records recently, while unemployment has remained stagnant. This is sometimes used as an example of how strange the market is behaving these days.

I would contend that this behavior on the part of major corporations makes perfect sense given the economics shifts we have endured, and it points to a healthy, reasoned functioning of the free markets.

When the credit markets froze during the beginning of the recession, companies that relied on the free flow of credit found significant areas of their business in jeopardy.  Without being able to freely borrow money and repay with quick turn around time (commercial paper) they found themselves unable to function efficiently.  Companies that used to be able to borrow money to make payroll if their collections were low one month realized how close to the wire they were really running their company.

The response to this tightening of credit and the realization that those companies were so dependent on the credit market is cash hoarding.  Companies are turning out record profits by keeping a tight control on expenses and continuing to do more with less in large part to shore up their balance sheets.  They want enough cash in the bank to be able to survive the market swings we are experiencing.

You may have noticed the same thing in your own household.  Keeping a little extra in the bank since you know it may not be quite so easy to go out and borrow more money.  Or even if you could borrow that money, you don’t like the idea of the bank having so much influence over your financial future.

We are the next depression era generation.  I darned 3 pairs of socks last sunday night.  I’ve never considered myself a crafty person, but the idea of saving 20 dollars by darning a pair of wool socks was pretty appealing.  I’m paying down my debt as quickly as possible, while at the same time trying to put some money in the bank.

Large corporations are doing the same thing.  The US economy was very highly leveraged 3 years ago, and now that leverage is unwinding.  Where are those profits going if they are not going to increased hiring or wages? They are going to pay down debt, and to put some cash in the bank.  The companies left are the ones that adjusted, that learned to survive in this new economy you need to be thrifty.  You can’t depend on freely flowing money anymore.

I expect to see the markets shift over the next 12 months.  Already there is more talk of startups being funded.  All this cash is good when hedging bets, but that cash in the bank doesn’t grow until you start putting it to work.

So what can we learn from this? I think the first take-away is that corporations are not behaving much different than individuals in this regard.  After all, companies are run by individuals.  Their behavior typically doesn’t stray far from our own patterns.

Secondly, this is a good opportunity to focus on the core 20%.  Without a lot of extra money, companies and individuals should be seeking to return to their core principals.  Cut out products and customers that aren’t profitable. Drop expensive hobbies you rarely have time to practice.  Darn a few socks, and make sure that next sweater you buy is going to last a few seasons.

The promises we make

What promises does Microsoft word make you? Some are overt, “create visually compelling documents more easily than ever

Some are less so “if you create a document with these bizarre placeholders and hook me up to excel I will do a database driven mail merge for you”.

All software makes promises. The best software delivers on it’s promises. The worst software doesn’t even understand the promises it’s making.

If you are buying or using a piece of software, don’t automatically assume that any struggles you encounter are due to your inability to understand “these damn things”. It’s probably not your fault.

If you are a software designer, take the time to explore your creation looking for broken promises. The more broken promises your users encounter, the more frustrated they are going to be with the experience, and frustrated users don’t often translate into loyal users.

Finding hidden promises is difficult, but the easiest way to find them is through some kind of user testing. Sitting a novice user down in front of your software and asking them to perform common tasks will quickly reveal some promises you didn’t know you were making.

Take it personally

You made something great, you broke through the roadblocks and finished what was thought impossible.  You showed it at the staff meeting and it flopped.  Turns out you were solving the wrong problem, and not only that, you solved it the wrong way.  Full on blew it.  What should we do in this situation? Take it personally. Sulk a little bit. They just told you your baby is ugly, not only ugly but smelly and probably is never going to grow into those ears.  Jerks, all of them.

Taking criticism personally is the curse of the craftsman.  You put a piece of yourself into everything you create.  Those emotional twinges are not inappropriate.

Be careful though. There are real opportunities for failure here. By identifying too deeply with our creation, we rob ourselves of the opportunity to grow from the experience.  An amateur will never get out of the emotional funk brought on by solid spot on criticism. Their next attempt will be at 90% then 80% then eventually they will simply coast along, having lost their willingness to emotionally connect with their creation. It is a defense mechanism. It spares them the pain of seeing their baby stumble.

Conversely, stellar craftmen are able to propose designs with passion, argue deeply for their position, and in the next breath, tear their ideas to shreds.  They fully acknowledge every deficiency, knowing that a singular idea does not define them, that their worth is manifest in the process of creation, in the quality of the end product, and not in how many of their proposals were deemed brilliant during the brainstorming meeting.

Hidden Features

We used to have a saying during a recent major project I worked on.

“If a typical user can’t figure out how use the feature, we shouldn’t bother writing it.”

The Microsoft Office team went through a similar realization during the design phase of office 2007, when they introduced “the ribbon”.  They noticed that a lot of the features they had spent man years creating weren’t being used.

“Contrary to the conventional wisdom of the naysayers, we weren’t (and aren’t) “out of ideas” for Office. Customers weren’t telling us that they didn’t need new features–to the contrary, the list of requests is a mile long. Every version we were putting our heart and soul into developing these new features, undergoing a rigorous process to determine which of the many areas we would invest in during a release, and then working hard to design, test, and ship those features. The only problem was that people weren’t finding the very features they asked us to add.”

http://blogs.msdn.com/b/jensenh/archive/2008/03/12/the-story-of-the-ribbon.aspx

Their work was not being realized by many users.  You can argue whether the ribbon achieved it’s stated goal, but the goal itself was sound. If a user can’t find the feature, all the time and energy we spent creating it is wasted for that user.

Creating features that are discoverable can take significant design work and unfortunately, this design effort doesn’t contribute directly to the “bullet list” of features we are trying to create when building software products. It is often difficult to justify the ROI of this design effort to the higher-ups. Walking them through the frustration users encounter (I’m sure they have all gone through similar experiences) can help build the case that spending the few extra days it takes to put a feature in the right place will pay dividends in user satisfaction and loyalty.

If this ethos can make it’s way into your group’s culture, you have taken one major step forward in the experience you give your users.

Dave Winer on Complexity

“All of the problems we’re dealing with stem from the complexity that computers have enabled, and the scale of our civilization, the enormous number of people living on the planet, and the lack of education, intelligence, competence of the people who are running it. They may dress nicer than us, but it turns out the people running the banks and government don’t actually understand the systems any better than you or I. They’ve just figured out how to get paid millions of dollars for looking and sounding like they understand.”

http://scripting.com/stories/2010/10/15/reaganWasASalesmanIfYouBel.html

Dave Winer has interesting things to say.  I think his commentary on Complexity is an important one.  Computers have allowed us to created infinitely complicated systems.  Sometimes this flexibility allows us to create marvels of modern technology (e.g. Netflix Watch Instantly, Google, etc…).  Sometimes they allow us to create the downfall of civilzation (e.g. Credit Default Swaps, Identity TheftWindows Vista)

Welcome

Continuing the tradition common to all blogs, here is a first post.  In it I’m supposed to articulate my goals and desires, all that can be and will be through the molding of bits and bytes, letters, and words…

First posts are tough, you need a goal, a direction, a manifest.  Some projects are launched with clear goals, others are launched with somewhat fuzzy goals.  Some are launched with a direction and the goal becomes obvious over time.  This will be the latter.

I have always operated under the following principal when embarking on new projects or when solving new problems.  The solution will present itself in time. First we wade into the problem, explore it, play with it, learn about it, and given enough time and energy the solution will eventually become apparent.  I’ve spent a few months considering what the goal of this blog should be, and I can only come to the following conclusion.  The goal will present itself when it’s ready.

So, we have no goal, but we need a direction.  Otherwise we will have no way to know whether we are getting closer to or further away from our destination.  Luckily the direction seems much more obvious to me.  My goal in starting this blog is to explore how to make technology better.  As I type this, my phone is spinning off into lala land, burning up my thigh and it’s battery in the process.  I have no idea how to fix it.  The email I just tried to send on my iPad crashed the app, twice.  I have no idea how to fix it.  I can’t connect to the wireless internet service I purchased on the Washington State Ferry.  I have no idea why.

I’ve grown up with technology, wrote my first program when I was 8.  Son of a programmer.  I have no idea how to fix these problems with my technology, and I think most people are in the same boat as me.  We have technology that works… kind of… enough to make it worth the money, but rarely is that technology delightful.  So here we are, at the intersection between people and technology, trying to understand how to make them work together.

This is the problem that consumes me.  I’d like to solve it… one app at a time.