'Software Development' Archive

Opinionated Software

July 23rd, 2008

In a ruby web framework session at OSCON where the concept of opinionated software was mentioned. The rails framework and all the 37signals apps pride themselves on being opinionated.

What’s your opinion on opinionated software?

  • Make Opinionated Software: “We think that’s bullshit. The best software has a vision. The best software takes sides. When someone uses software, they’re not just looking for features, they’re looking for an approach. They’re looking for a vision.”
  • A Fatal Flaw in Opinionated Software: “The problem with this approach is that punishment is only appropriate for children and criminals. By actively working to make my life as a hacker more difficult, David is treating me like a child or a criminal. ”

Treat Community Problems Not User Symptoms

June 11th, 2008

Steve doesn’t have to listen to users. Mark Hurst and others say you must talk, and listen, to your customers. Do you listen to customers? Do you give them what they ask for?

Of course the answers yes and no. No you should never listen to what users are asking for, then go off and build it for them. Yes you should always listen to, and effectively solve your users problems. What’s the difference?

Almost universally, a user does not know, and therefore cannot express, their root problems and the most effective way to solve them for your community of users. They do, however, know the symptoms they’re dealing with and they may have even dreamed up a potential solution.

Think of it in terms of problems, or symptoms, and solutions. People will rarely talk to you in terms of root problems. They just don’t know their problems. People instead like to talk about symptoms and potential solutions they’ve dreamed up.

Look at doctors. You go to your doctor and say you can’t hear properly and you’re coughing a lot. He crams some hearing aids in your ears to amplify sounds and gives you some cough syrup. You die two weeks later from a nasty chest infection. No, good doctors don’t blindly treat symptoms. They instead use them as clues to find and understand their root causes. Doctors also have patients who diagnose themselves. “Doc, I’ve got the flu, I need some medX” Again, the good ones take that potential solution as a clue, ask more smart questions to learn the real problem and then treat it properly.

Technically the doctor metaphor doesn’t even apply here. In building software products, we’re practicing epidemiology more than plain old medicine. We have to look at the health of our community and solve the problems for that population not an individual. (Wow, apologies Andria for utterly trivializing what you do…)

Yes, listen to users but assume what they’re requesting is one potential solution to a real problem. Your job is to keep working, ask smart questions, practice the 5 whys, talk to more users and ultimately learn what the root problem is and solve that in the best way possible.

Early Adopters

May 29th, 2008

Interesting read by Charles Stross that a friend sent along. In there, he briefly discusses the history of flight and transportation in general. It got me thinking about early adopters in general. Anyone involved with a software startup should be thinking, and worrying, about early adopters.

Think about the very first planes. Think about the pilots that flew them, how they used flight. Now contrast that with modern aviation. Modern airports, 747’s, red eyes, and food courts. Early adopters rarely, if ever, use technology in a way that the eventual masses will. All I’m saying is keep it mind when you’re writing those fancy features for that flock of early adopters.

Don’t Sell Me Features

May 27th, 2008

Leah Culver from pownce was at Mesh08. Her software pownce is obviously compared to twitter in practically every conversation. As she openly admitted, it’s great for pownce. Most articles published about twitter inevitably mention pownce.

She also made a point of saying several times how much more you can do with pownce. Disclosure time, I’ve never used pownce so I’m talkin out my #s$, however, I have used twitter and I think I get the two. Here’s my take, if you’re competing with something like twitter, you will never sell me on a competing product by adding more features. The one reason I think twitter has any value at all is it’s lack of the features pownce is pimping. Not to mention twitter’s about the people using it. If twitter allowed longer posts, files, music, images, etc, I’d run for the hills.

Flip this around. I met the guys behind spreed at mesh08 (I can’t find a link, will post later). Spreed enforces speed reading and effective reading comprehension practices by only presenting a few words to you at a time. You can’t drift by looking ahead or pause and stare at one word for a minute.

What’s my point? Well let’s say spreed’s app was the first online reader ever built. At some point someone would build a competitor named sprounce. They’d listen to what users are asking for and add some features to compete. They’d give their users ‘more control’. “Let’s allow our users to see ALL the words in an article. They can then choose the speed they read and how much or little to comprehend”.

In this light, spreed is actually reducing the control their users have. Like riding a single speed bike, a lack of control can actually be a freeing experience. So while I’m on the fence about twitter as having any real use, please don’t sell me twitterPlusMore because the only thing it’s got going for it is the freedom it’s lack of features brings us all. I need more features in twitter about as much as I need more gears on my bike.

37 Customers

May 16th, 2008

The vibe most people I know picked out from the recent Wired article on 37signals is that of arrogance. Personally I love their approach of not making too much revenue from any one client. It protects you from having to pander to a few rich clients which inevitably happens, especially when you enter the so-called ‘enterprise’ space.

What I think is insane, and what came across in that article, is to be a dick about it. Sure, you have a core set of clients and you take a strong stance in building your products for them. Clients on the fringe who demand features that don’t serve those core clients lose out. Having low license fees allows you to survive when they walk away.

Maybe it’s just spin but instead of saying “we don’t do that, you’re only paying us $150 a month, tough luck, we aren’t adding those features you need”, could you not speak to migration? No we aren’t planning to add those features as they don’t serve our core clients, it sounds like you’re ready to move onto another product such as product x, y or z. You then provide a migration path or tools to make it smooth for those clients to migrate off your product onto the one they choose.

If you did that, and clearly showed me this isn’t about lock-in, then I’d feel comfortable using your products. I won’t, however, put my data into a product who’s owners proudly claim that they ignore their clients.

Open Source Languages

May 9th, 2008

I love working in an open source programming language. That’s a serious perq python has. You just see cooler stuff in open source software, it has more character. It’s the kind of software you’d talk to at a party.

robot.pngIt also sucks, crashes, includes applications with hideous design and usability but so what? So does every other piece of software. With a language, it’s direction is governed by volunteer nerds who use it everyday. That results in an experience far different that what’s produced in a corporate piece of software.

I have no idea how FOSS will fair long term and it’s certainly not for everyone but when it comes to programming languages it seems to make some sense. What other industry designs and builds their own tools? I’m not talking about having a say, like a mechanic informing wrench design, I mean software developers developing software they use to develop software. Wow, too much dr seuss with the kids.

Car designers design cars to design cars?…no
Home builders build homes to build homes?…no
Robot builders build robots to build robots?…hmmm…maybe..

Joel tears MS another new one

May 1st, 2008

Wow, I can’t say I disagree with much here but for a former employee Joel really goes after MS. Who cares if you agree, the writing is enough to make it worth the read. He takes a bit of a glancing pass at google as well. Make sure you stick around for the last paragraph. I will add that I agree for the most part, however, the problem they’re solving’s already been solved, the astronauts just want to compete for the over complicated version of the solution.

When I read David’s post on livemesh, I really did try to stay interested but it quickly sounded like, well exactly what Joel’s describing, something built by architecture astronauts that I would never contemplate using.

Bottom line, I know nothing about livemesh beyond what David’s written about but in any case ‘controversial Joel’ is good reading.

“Windows Live Mesh is not just a way to synchronize files. That’s just the sample app. It’s a whole goddamned architecture, with an API and developer tools and in insane diagram showing all the nifty layers of acronyms, and it seems like the chief astronauts at Microsoft literally expect this to be their gigantic platform in the sky which will take over when Windows becomes irrelevant on the desktop.”

“It’s Groove, rewritten from scratch, one more time. Ray Ozzie just can’t stop rewriting this damn app, again and again and again, and taking 5-7 years each time.

And the fact that customers never asked for this feature and none of the earlier versions really took off as huge platforms doesn’t stop him.”

“It sort of bothers me, intellectually, that there are these people running around acting like they’re building the next great thing who keep serving us the same exact TV dinner that I didn’t want on Sunday night, and I didn’t want it when you tried to serve it again Monday night, and you crunched it up and mixed in some cheese and I didn’t eat that Tuesday night, and here it is Wednesday and you’ve rebuilt the whole goddamn TV dinner industry from the ground up and you’re giving me 1955 salisbury steak that I just DON’T WANT.”

Building Smart Software

April 22nd, 2008

The trick to building smart software can be counter-intuitive. It requires that you have the utmost respect for human intelligence NOT software intelligence. Look at wikipedia as an example. Smart software right? Well not quite.

smart.jpgWikipedia is a great example of a small group of smart humans piloting a massive group of humans using software. “All these people, thousands of people, there must be no rules! But there is a very ornate and well-defined structure of participation.”, link. It doesn’t work because of machine intelligence, it works because of human intelligence. The same applies to highly successful foss projects such as bsd, ubuntu, etc:

“The FreeBSD Core Team is the nine-member elected management body of the FreeBSD Project”, link.

As a designer/developer, you can’t get lost in technological hubris. You must respect and leverage human intelligence. Failing to do so will lead you into the dark sad corner. Actually it’s a busy corner so you’ll meet a lot of similar minded folks, which could be nice?

Conferences

March 26th, 2008

I average less than one conference a year so I’m no expert. Basically I can’t stand most of them. I did, however, attend Neil’s Business of Software conference in San Jose last year and decided half way through it that I wouldn’t miss the next one, if there was another. Well there is, and this year Joel Spolsky is helping Neil organize it and it’s being held in Boston. The lineup is already impressive including Joel, Seth Godin, Eric Sink, Richard Stallman, and Jason Fried.

I’ve already purchased my ticket as last year’s attendees got early dibs. The rumour is that the remaining tickets will be publicly available soon so get on the mailing list and seriously consider making the trip.

The other conference is an easy commute to Mesh in Toronto. I missed last year’s due to client meeting conflicts but I was at the first. I found it to be less technical and more marketing focused but regardless it’s a chance to meet and hang out with people in our own backyard.

Licensing and frameworks

March 26th, 2008

Writing javascript is right up there on my list of things I enjoy with smashing my face on large bits on concrete and listening to Ben‘s mom sing. Based on the lovely demo’s I recently saw at DemoCampGuelph (shameless plug, April 9th, why won’t you be there…) I tried out extjs and yui for brainpark.

There was no real differentiator for what we needed on brainpark. They would both accomplish what we need to do today. I started with extjs and had that up and running in no time. Upon further inspection I gave yui a cursory test drive and was equally impressed. For the time being, yui has won out. The difference maker? Licensing. All things equal, I’ll run for a bsd license over some dodgy commercial one I don’t even understand.

Does that mean I won’t pay for software or will only use open source? No way. If, at any point, it becomes clear that extjs will save us developer time over yui then we’ll assess the license and go from there. Absolute minimum, yui comes with a community filled with yahoo’s developers and a license that effectively says “Take it down to the copy center and make as many copies as you want.” That’s an active community I have faith in and I’ll take that anyday over a commercial community staffed primarily, or entirely, with developers paid for by licensing revenue.