Being a Software Developer in an Economic Downturn

December 29th, 2008

Neil Davidson, always worth reading, has a guest post today at Dharmesh Shah’s OnStartups blog. The topic is six reasons why now is a fine time to start a software company. I agree strongly with his reason #4 - that constraints enforce discipline. Too many companies start up and grow while times are good, and never learn the efficiency and productivity they will need to survive when times are tough. Companies that are born in turbulent times will not only survive those times but thrive when conditions improve again.

One thing that I’ve been wondering about is the difference between being a full-time employee and being an independent consultant in times like these. Different people have put forth contradictory theories on this. Joel Spolsky has said that when the economy takes a beating, the consultants are the first to go. Others have suggested that full-time W-2 employees are at a much greater risk of layoffs in tough times because of the overhead of benefits, vacation, etc. And also just because of the lower level of commitment involved with a consultant. You can hire one for a few months and if it doesn’t work out you just wrap things up with no hard feelings on either side, as opposed to the emotional trauma of firing an employee. So in a downturn, hiring of employees freezes and any additional work is done through temporary consultants.

I have a lot of respect for Joel’s writings, but my experience more closely follows the second theory. When I was looking for work as a developer in the dark days of 2002 and 2003, there seemed to be few full-time positions available. Everyone was hiring short-term contracts; three months here, six months there.

I’d be interested in knowing whether my experiences were an exception to the norm, or if other people have a similar take on it. Feel free to share your thoughts in the comments.

Jury Duty Is a Bit Like Running a Business

December 15th, 2008

I’m spending all this week in a courtroom, on the jury. I’m actually finding jury duty really interesting, although I suspect I’m in the minority on this; most people seem to view it as a burden to be evaded if at all possible.

Obviously I can’t talk about the case, but I wanted to share a thought I had during lunch. Jury duty is a bit like running a business, or maybe it’s the other way around.

During a trial, in theory, the path to a verdict should be fairly simple. There are some laws, there are some facts, there might be some contracts, and so on. Assuming the law is not too ambiguous and the evidence presented can be assumed to be true, it shouldn’t be too hard to come up with an answer. You did this, and the law says you can’t - guilty. Your contract says you have to do this, and you didn’t and bad stuff happened - you’re responsible for the damages.

But during the trial there are a lot of issues raised and discussed that end up being nothing more than distractions from the basic points at hand. I think some of these issues are intentionally raised by the lawyers to act as a smokescreen against the opposing lawyers (and perhaps against the jurors), and some of the issues just arise naturally from the case. Maybe you feel sympathy for a victim. Perhaps you feel the plaintiff already has enough money. Maybe you find one of the lawyers particularly eloquent. But as a juror you have to try hard to not get distracted by these things and remember the basics of the facts and the law under consideration.

And running a business is a lot like this, too. There are a lot of ways to get distracted and waste time and money pursuing things that don’t contribute to the core goals of your business. Some consultants get so tangled up in collecting a $5000 invoice from a deadbeat client that they end up spending more in time and legal fees than the original invoice was worth. Some companies get so obsessed over destroying a rival that they end up doing near-fatal damage to their reputations (the history of the Microsoft vs. Netscape browser wars is a great example of this). Some businesses spend too much time going down dead-ends that sounded like good ideas at the time. Patrick McKenzie has an illuminating write-up of a web marketing promotion that never quite figured out how to turn viewers into customers. (But he shouldn’t feel too bad - he’s in fine company there, and he didn’t even buy a Super Bowl ad.)

So if you’re running a business, make sure you don’t lose sight of your basic goals. For many businesses this is the bottom-line, dollars-and-cents. But you might also have other core values that are just as important to you. Whatever’s important to you, stay focused on it, and don’t be distracted when a blogger gives you a bad review and it’s obvious that they didn’t even use your product, and your face turns red and smoke starts coming out of your ears.

And if you’re on a jury, I don’t care if the defendant failed to fulfill my salad shooter order because his blasting cap technician was at home recovering from a burnt finger. How am I going to make my flappenjacken now?

Wholeweal Website Modifications

December 5th, 2008

After getting fed up with having to make changes on every single page of my website (a pain even with automatic search-and-replace tools), I spent this evening converting the Wholeweal Software and EverybodyInn websites over to ASP.NET. This allows me to use master pages, a template system where I can write recurring text (like header, footers, and navigation sidebars) once, and then have them appear on every page. If I need to make a change, I just change it once in the template.

Most of the pages have changed file extensions from .html to .aspx, except for a few that have links from the EverybodyInn program itself. If the website was more established, I would have been much more nervous about doing this, as I would be breaking existing links on the Internet, hurting my placement in the search engines. But the site is so new that there aren’t a lot of links out there that aren’t to the main pages (which don’t use a file extension), so it made sense to do this switchover as soon as possible. The search engines will have to reindex the interior pages of the site, but I’m not too worried about that.

I’m fairly sure I caught every broken link within the site, but feel free to poke around and let me know if you find anything I missed.

Software Usability Tests Are Not Scientific Experiments

November 28th, 2008

Jason Kealey has been writing about software usability (apparently it’s like eggnog). His entire article is worth reading, but I wanted to comment on one specific point he made.

Creating a proper usability study is hard.

  • There are so many ways you can introduce bias in a test, it isn’t funny. For this particular test, I feel that it was very close to being unbiased and most of my initial concerns were addressed.
  • One concern that does remain is the fact that the test cases were crafted by the researcher and could have been manipulated to generate a specific set of results. However, crafted test cases are required for any kind of comparison between the users. I personally feel the test was unbiased as it presented potential flaws in both the default tool and the proposed tool.
  • This particular test was for a tool used by software developers. As you probably know, some developers demonstrate productivity levels an order of magnitude higher than others.  You can imagine that this makes it hard to analyze productivity results collected during a study.

These are all very reasonable points, and they do act as potentially confounding variables, if we consider a software usability test as a rigorous scientific experiment. The thing is, I don’t believe we should. In my view, the purpose of usability testing is not to “test” whether a given design is “correct”, but simply to collect enough information to make well-informed decisions regarding the design.

A long time ago, I read an article by the web usability theorist Jakob Nielsen that suggested that the optimum number of users for a usability test is five. Beyond that, you don’t get much more information; you’re just seeing the same bugs all over again.

Software developers work in a world of ones and zeros. On or off. Right or wrong. In code, something either works or it doesn’t. This kind of sharp, detailed-oriented thinking is incredibly valuable when programming, but I don’t think it applies so well to thinking about usability issues or making business decisions. In these cases, you’re not looking to prove something true or false. You’re just looking to get enough data to feel comfortable moving forward with a particular plan.

Don’t misunderstand me; I’m not saying that Jason is wasting his time thinking about usability - quite the opposite, in fact. I just wanted to suggest that worrying about whether a usability test is “unbiased”, or whether your test subjects vary too much in skill level, is probably being unnecessarily rigorous.

The most important things to know about software usability tests is that you should do them, and that you can learn a majority of what you need to by doing the test with just a handful of people. Don’t let your admirably scientific mind overcomplicate this!

Cranky Product Management

November 25th, 2008

It must be a cranky day today. Neil Davidson tipped me off to a blog by the Cranky Product Manager. (Although, truth be told, I don’t think I’ve ever met a product manager who wasn’t!) The thing I like about this blog is the same thing I like about “business fiction” - by exaggerating the reality of people and actions, the caricature somehow can be more “true” than the real thing.

I love the “seven types of software engineers” series. I think I’ve worked with most of them…

Everyone Likes a Grouch

November 25th, 2008

I discovered a great new (to me) blog the other day - UX Crank. “UX” is short for “user experience”, which is the new fee-yan-cee way of saying “user interface”. His posts are direct and to-the-point, and usually pretty insightful.

I love reading about user interface (er, “eXperience”) design. It’s one of those things that very few programmers or software companies seem to care much about, and it shows. The thing is, it’s something that programmers really need to understand, because the design of the user interface is really woven throughout the entire program and affects just about every aspect of the program. It’s not something you can outsource to a graphics designer and then slap on at the end like a coat of paint. So in the end, the programmers usually end up becoming user interface designers by default, whether they’ve bothered to study the subject or not.

With EverybodyInn, I design the user interface screens and dialogs first, as part of the initial planning of a new feature. I put a great deal of time and thought into working out the best way to present each feature to the user, to minimize confusion, extra mouse clicks and window changes, or unnecessary choices. My belief is that by being simple and so easy to use, EverybodyInn is an obvious and compelling choice for anyone frustrated by the difficult and complicated interfaces found in other inn management systems.

SEO Advice From the Horse’s Mouth

November 14th, 2008

Google has released an SEO Starter Guide full of advice on how to design your web pages so as to rank as well as possible in Google’s search results. It’s a nice resource, especially for novices. None of what’s in here is particularly new or surprising for anyone who’s read up on search engine optimization, but it’s definitely good to get the official word on what Google is currently looking for on a web page.

Happy Halloween

October 31st, 2008

PumpkinsHappy Halloween! If you are driving tonight, please be extra cautious and keep a lookout for trick-or-treaters.

Respectful Interviewing

October 20th, 2008

Andrew Duffy is working on creating a software company in Dublin that respects its employees. I agree with almost everything in his article describing his ideal company, and today he posted another interesting article about respectful interviewing.

It doesn’t seem like Andrew should even have to write about this stuff, but it’s true. I’ve personally been in job interviews that felt more like interrogations, and I’ve heard anecdotes of even worse treatment. I try to give interviewers some slack; a lot of times the interviewers have never had any formal training or education on conducting interviews. I’ve been on the hiring side of the interviewing table enough to understand how difficult it is. But some interviewers are downright adversarial!

In any case, it’s nice to see another software developer trying to build a great place to work. My feeling is that unless the founder focuses on this as an explicit goal, the default tendency is for companies to get lazy and lapse into mediocrity (this is true about almost anything that isn’t given conscious attention). Even the companies that say they want to provide a good working environment generally get caught up in day-to-day chaos, or flinch at the expense (trivial, in the long term) of creating such a workplace, and everything slips into the doldrums. So I’m glad to hear that Andrew is giving a lot of thought to this!

Optimism and Realism

October 6th, 2008

Yesterday I went on a tour of an abandoned railway station in my city. It’s now secured from trespassers and the elements by a volunteer group working towards restoring it, but during the years it was left unprotected it suffered badly at the hands of former owners, vandals, and the weather.

The tour guide (one of the group’s volunteers) was far more optimistic than I am about the future prospects of the station. The estimated costs of just physically repairing and restoring the station are staggering - on the order of $50 million. And honestly, that’s probably the easier part: the neighborhood surrounding the station has seen much better days and is a couple of miles out from the downtown core, so it’s a difficult sell to developers for conversion to apartments or condos, or even for restoring train service.

But these volunteers just keep chipping away at it, cleaning out debris, patching the holes in the roof, sprucing up the main concourse so that events and conventions can be held there, and they’ve done an amazing job so far. I don’t know if I can believe in the tour guide’s hope that in 10 years the station and the neighborhood will be thriving again, but his optimism was inspiring, and I went home feeling hopeful.

Then today I was talking to a colleague about this, and he was far more negative than I expected. It will cost far too much to restore the station. This country doesn’t invest in passenger rail. No one will ever want to live in that neighborhood - it’s too far from everything and you’ll get mugged when you’re walking your dog. The only hope for the station is to bulldoze the surrounding neighborhood flat and start from scratch.

What a cold shower, but there’s a grain of truth in all of that.

So today I was thinking about the relationship between optimism and realism.

There’s a new restaurant opening downtown soon. It’s going to be mostly vegetarian and vegan cuisine, and will also feature music and art and community classes and events. The owners look young and idealistic. I wish them the absolute best. I just hope that in addition to being idealistic, they have a solid foundation of realism, with the business savvy to figure out how to make their dream work.

Sometimes people perceive optimism and realism as mutually exclusive worldviews. “Jack is an optimist.” “Jill is a realist.” I disagree. I think it’s important to possess both traits. Optimism without realism leads to pie-in-the-sky plans that never had a chance, and businesses that fail because the numbers could never work out. But realism without optimism leads to nothing ever changing, because it makes you unable to see beyond what something currently is to what it could be.

Somewhere in the middle is where truly great things get done.