Archive for December, 2011

What Should the Software Industry be Known For?

Monday, December 19th, 2011

I was talking with my friend Marc today. He’s a mechanical engineer (and a damn good one) and we were talking about work. He said something that kind of surprised me:

“Sometimes I wish mechanical engineering companies were more like software companies.”

All through school, and even in the workplace, I’ve heard software engineering compared to traditional engineering.

“You don’t build half a bridge, then change your mind about how it’s going to look.”

“It’s a green-field project.”

“Well, the way they estimate construction projects is like this…”

I’ve always thought other engineering disciplines had all these lessons we could learn in software, given that building software wasn’t recognized as engineering until about 1960*. It’s never once occurred to me that what we do in software could help the guys building cars, or skyscrapers, or in Marc’s case, bomb suits.

This begs the question:

What do we want other industries to say about software engineering?

If you could teach one lesson you’ve learned in software to another discipline, what would it be? What would be the top, absolutely most-important anecdote you could recite? Or inscribe on a statue of a programming icon?

Marc said it was how people are managed. The offices, the lax environment, the 20% time.

I think it’s how we integrate teams. I love working closely with designers, and I bet other engineering fields could really benefit from the software designer/developer relationship, and how it has evolved over the past decade.

Your turn.

What should the software industry be known for?

Elsewhere: How to Handle Browser Differences on iPhone and iPad

Wednesday, December 14th, 2011

I wrote a post for the company blog this week.

It’s about how we’ve reached a point with mobile Safari where different versions have different functionality. Is this a problem? What can we do about it?

Find out on the Macadamian blog!

Interviewed by Chris Brogan

Friday, December 9th, 2011

In case you didn’t hear about it on Twitter or Google+ or from me jumping up and down and yelling out loud, I was interviewed the other day by Chris Brogan:

We talked about mobile websites, and went over the basics for businesses looking to get into the mobile web space.

I tried my best to not look and sound completely starstruck. I’ve been reading Chris’s blog since 2008, and for those of you that aren’t (a little too) obsessed with blogging, he’s kind of a big deal.

It was a lot of fun, and surprisingly easy to set up. I think I might do a bit more video-stuff in 2012. What do you think?

Have a good weekend!

How Do You Fight Starvation?

Monday, December 5th, 2011

Do you know how a computer decides what to do when you’re listening to music while browsing Facebook with a half-written blog post tucked way down your alt-tab order?

It uses a scheduling algorithm, of course. Some little process inside your operating system looks at all the applications you’re running, and decides when to spend some time processing each one.

There are all kinds of different algorithms, optimized for qualities like overhead (how much time the scheduler spends making decisions) and response time (how long an application waits before getting its “turn” on the CPU). Whatever device you’re using right now probably has a very fancy algorithm that has been perfected for over a decade.

Let’s compare this to how we as people manage our time.

It’s very similar, right? We generally have multiple tasks on the go, and we often need to prioritize them and decide where to spend our time.

I clocked some overhead thinking about this the other day, and I realized that if my brain is even using a scheduling algorithm at all, it’s due for a firmware update. I have a serious problem with starvation.

In the digital world, a process is starved when it is given a low priority and there are too many other, high-priority processes stealing all the CPU-cycles. So many important things are happening that this poor, less-critical process is constantly ignored.

Most scheduling algorithms account for this by gradually boosting the priority of tasks that have been waiting for a long time. Eventually our forgotten process gets its chance to shine.

My brain struggles with the boosting.

I’m going to cut myself some slack and rationalize that I’ve been especially busy lately. I was in Europe, then speaking at a conference in Texas, then refinishing a basement, and somewhere in there work got kind of crazy. During that time, I let a lot of things slip through.

“I’ll get to that soon. I just have to wrap up [some feu-du-jour].”

The trouble is, there have been a lot of fires, and the tasks that are still really important and I really want to do them but they’re just not quite urgent enough to ever grab enough of my attention at once have been stagnant for far too long.

They’re famished.

So here’s what I’m going to do: Once a week (for the next little while) I’m going to spend an hour or two feeding some poor, starving task(s) in my to-do list. I can work on anything I want as long as it’s:

  • Not due anytime soon (if at all).
  • Something productive that I legitimately want to do.

Now instead of trying to prioritize some hapless, someday-task, I’m prioritizing the FIGHT STARVATION task. This level of abstraction will (hopefully) stop me from writing off those non-urgent-but-way-awesome tasks as things I can do when I’m less busy — a sun that never seems to rise.

I’m very curious to know how you deal with this. Do you find yourself with starving tasks every now and then? Do you have some clever (or super-obvious) way of feeding them?