Why did eBay succeed?

I just finished reading the book The Perfect Store: Inside eBay and it was quite enlightening. From what I understand, eBay succeeded because:

  1. They had a very solid first-mover advantage because they built a strong community of users and thus had a lot of sellers and buyers on their site. This made the switching costs very high.
  2. They were very frugal, they perfected the art of thriftiness in a time were IT companies blew boatloads of cash on furniture, scotch and acquisitions.
  3. The founders stepped aside and allowed experienced managers to run the company, as opposed to trying to reinvent the managerial wheels once the business started making lots of money.

2014 – my (partial) year without a smartphone

Life without a smartphone is slow, awkward and confusing. I didn’t think as much as I thought I would.

How it began

Last christmas my mother said she was curious about smartphones. At the same time I was curious about life without one, so I gave mine to her and bought a cheap flip phone that can’t do shit. Even sending text messages on it is horrible.

Now, 9.5 months later, I’m itching to abandon this experiment. But before I do that, I should summarise my experience.

The good

  • I zone out way less during social gatherings, meetings or while coding. Since I am prone to zoning out, this is a huge benefit.
  • I could identify with the “unplug” movement in the movie Transcendence (which wasn’t that bad, honestly!)

The bad

  • When I’m at a restaurant or a bar with one other person and said person goes to the loo, I’m screwed. It feels like everybody in there are staring at me, wondering why I have no phone to look down at. So I panic and play with the cutlery or my beer glass until the loo visit is over (roughly 30 minutes later according to my brain watch). Nobody expects a person to sit around and look bored any more.
  • When I get lost, I have to ask people for directions. While this talking to strangers is a human connection that I would have missed otherwise, it is rarely more than “excuse me, could you tell me…” followed by a prompt response and a “ok, thank you very much” back from me. Sure, I could follow up with talking about the weather and make new connections, but older cab drivers aren’t exactly prime BFF material to me.
  • I also never know how to take public transport from point A to point B, unless I’ve travelled between aforementioned points often. Even then, I fail a lot since the ol’ noggin doesn’t have the timetables stored.
  • People look at me like I’m crazy when I take out the phone equivalent of Mesopotamia to add them my contact book. I don’t know if I’m not, who does really? But still. Shut up, egg!
  • I don’t think deeply about things as much as I thought I would. I assumed that the time on the tram that I couldn’t use for Twitter would be filled with grand intellectual dissections that would change the world, but they aren’t. Most of the time I’m bored and think about Brazilian Jiu-Jitsu moves, which actually might be a bit beneficial.
  • I get way more Facebook messages than text messages. People tend to assume that you always see their Facebook messages, and key information like “Hey buddy, I’ll be 248 minutes late” will remain unseen by me until I arrive at home, 250 minutes later.
  • I take and share way less photos, which means that my poor mother in Sweden knows less about what life down under is like.

Summary

All in all, a worthwhile experiment. But it didn’t change that much to the better and made my life a lot less convenient. I’m surprised I lasted this long, I thought I’d break down after 1-2 months.

I won’t be as happy with my new smartphone as I think I will be. Then again, the previous sentence indicates that I don’t think I will be happy with it, so I’ll probably be pleasantly surprised. But now the last sentence makes me realise that that mightn’t be quite so simple.

Why I don’t feel like presenting at conferences any more

I’ve delivered a handful of talks over the course of my career and my experience tells me that there are better ways of getting the message out there. Ways that require much less time and can reach bigger audiences.

Here’s how I believe that the different mediums compare to each other with regards to effectiveness, in ascending order:

  1. Books
  2. Face-to-face discussions
  3. Conference talks
  4. Podcasts
  5. Conference talks that are recorded and available online
  6. Conference workshops
  7. Lightning talks at local meet-ups
  8. Blog posts (hi!)

A poor return on investment

I like my presentations to be of a very high quality, so I tend to work hard to make them be visually and structurally good and delivered in an interesting. This process is enormously time-consuming: I reckon I spend 20-30 hours preparing a 60 minute talk.

I can’t point to how I’ve benefitted from this other than that I’ve gotten better at giving presentations and gotten a few pats on the back. I haven’t made a dollar from speaking (barring the free conference ticket). I’ve not made any lasting and deep contacts with interesting people as a direct result from speaking. I’ve never gotten a job offer based on a presentation I’ve made.

I write blog posts every now and then and some of them are read by thousands of people. One hour spent on a piece of text that can reach a potentially large audience makes a lot more sense than working for days on a talk that maybe a few hundred people will see.

I’ll stick to writing, thank you very much

I’d have to have a very good reason to ever sign up for speaking at a conference again. I’ll write my blog posts and use the time that I don’t spend on rehearsing a talk to help the poor or whatever.

Ps. Please note that I’ve only presented at a very small number of conferences, and most of the times I’ve delivered lightning talks. As far as speakers go, I have very little experience and therefore your mileage may vary. Ds.

jQuery Mobile experience report

I am currently working on a mobile-optimised web app and have been doing so for the last month and a half. In order to get widgets like sliding panels, searchable drop-downs etc for free, we started looking for a JavaScript framework that would make our development go faster.

I evaluated, rather hastily might I add, jQM (jQuery Mobile), YUI and Sencha Touch and found that jQM seemed to hit the sweet spot of giving us a lot of functionality for free but without being very invasive. Other people reported that for e.g. Sencha you need to accept a different way of writing your markup, whereas working with jQM should feel more like your are just enriching your HTML.

Enriching your DOM

What I didn’t understand until later was just how must extra stuff jQM added, it dynamically inserts a lot of classes and divs in your HTML (n.b. I intuitively FEEL like this is what happens after using it for a few weeks, but when I inspected my HTML to find good examples of this I didn’t find anything horrendous).

There are advantages to this approach; sites work without JavaScript and you write standard HTML. But the major disadvantage is that it takes a lot of mental effort to reconcile what HTML you had written and what HTML you see in the browser inspector when trying to understand why the heck something looks the way it does. And you need to fix it, which brings be on to my next point.

So much cascading

We have constantly felt the need to write ugly CSS hacks, like very chatty/aggressive selectors to get around the jQM selectors on the elements that it adds to the DOM. I didn’t want us to start modifying the jQM stylesheets themselves, since that would make upgrading to a newer version much harder. But after spending too much time on writing said hacks, we gave up and are now making changes directly in jquery.mobile.css.

To conclude

I would absolutely use jQM on a project where the mobile website’s design deviate very little from the examples you can see on demos.jquerymobile.com. When speaking to our designer, he mentioned that other teams he had worked with echoed this statement.

If I was to work on a project with a more customised look and feel, I’d probably settle on using small plugins and/or write my own instead. I believe that this would have made us move faster on this particular project, which used a bunch of fancy solutions for how to fill out forms etc.

Local and global

The opposite of “local” is “global”. Many lean and kanban enthusiasts, myself included, look down on individuals and teams trying to improve their efficiency, calling it “local optima”. The answer is to instead look at optimising the whole, but that whole tends to be at a company or organisation level. Even if the organisation is a huge multinational one, it’s not global. Just because you’re taking a few steps back doesn’t mean you’re seeing the whole picture.

As far as I understand (and I don’t understand much) systems thinking seems to be confined within the system of producing and manufacturing. It doesn’t take into account the environment, the poverty and suffering of millions of people, or what the world will look like three generations from now. To me it seems like it’s not “systems thinking” as much as it is “a system thinking”.

These are things we rarely discuss in the tech community, but I think we should. We live in the golden age of IT. We can create enormous value out of ideas, a bit of electricity and a few thousand keyboard strokes.

Problem solving can never be morally neutral. What did you disregard to solve problems today?

Philosophy for the software engineer

The weekend is here. You now have the time to sit back and think about what you are doing with your life. How much of your time is spent pondering this important question?

“The man who has no tincture of philosophy goes through life imprisoned in the prejudices derived from common sense, from the habitual beliefs of his age or his nation, and from convictions which have grown up in his mind without the co-operation or consent of his deliberate reason. To such a man the world tends to become definite, finite, obvious; common objects rouse no questions, and unfamiliar possibilities are contemptuously rejected.”

– Bertrand Russell, The Value of Philosophy

The reason why I’m asking is because you have this remarkable skill that nearly everyone wants to put to use in their organisations. But so much of our potential is wasted on work that, in my mind, doesn’t make the world a better place.

“The best minds of my generation are thinking about how to make people click ads”

Jeff Hammerbacher

“To be true to yourself, in this problem-resolving business, you must consider moral questions before you get close to a solution, or even a definition, and thereby begin to lose your sensibility”

– Gerald M Weinberg and Donald C. Gause, Are Your Lights On?

As a software engineer, you have a unique possibility of creating something out of pure thought. Of going almost anywhere and doing almost anything you want. Are you?

We should all just decide on JavaScript and solve the interesting problems instead

Our endless bickering over the merits of different languages and paradigms isn’t all that productive, nor is it very interesting. You’re not a Ruby/C#/Java/Elixir developer, you’re a goddamn problem solver. Remove the programming language from your LinkedIn/Twitter bio, that’s not who you are.

All the things that make other languages and platforms more or less sexy are 90 % community and culture. All the loudmouths in the developer community hype things that aren’t “enterprise”. So only 10 % of the sexiness is the actual language*. And the goods news are that we humans can change culture, that’s what we do best when we really want to.

* except for Ruby of course, it is so beautiful. But I digress…

The time is right

We’re now at the stage when JavaScript is hugely popular and a lot of innovation is taking place in that community. Also, it’s a pretty open language, i.e. it’s not owned by Oracle, Microsoft or IBM. We have the chance of running the same language on the front-end and the back-end. Heck, you can even use it as an officially supported language to write FirefoxOS, Ubuntu Touch and Windows 8 desktop/phone apps.

Easier to find developers, easier to find a job

When the language barrier is removed, you can choose look for the things that matter in potential recruits and employers. Like cultural fits/misfits and interesting problem domains. You know, the hard stuff. It’s not automatically good just because it mentions “Scala”, “F#” or “Objective C” (or “agile”, “XP” or “kanban” for that matter).

It’s a pretty good language

Yeah, I don’t love JavaScript. It’s decent. To me, as a Swede, JavaScript feels like English. I don’t love it, but it’s the de facto business language in many parts of the world. Even though I could probably express myself much more poetically and succinctly in Swedish, the benefits of talking the same language as millions and millions of other people far outweighs that.

“The downsides?” you ask

Sure, there are no silver bullets, just a bunch of trade-offs. Here are a few:

You can’t easily talk about every problem in one language

Whenever I try to explain the small cultural differences between Australia and Sweden, like the concepts of “lagom”, “fika” and “allemansrätten”, I struggle with coming up with English words that do them justice. But most of us don’t need to understand those tiny concepts, they only affect 9 million out of the 7 billion people of this world.

Much in the same way, most developers I meet to aren’t solving very exotic technical problems. They’re solving business problems, like:

  • understanding what is the most important next step for you
  • figuring what your customers might need
  • deciding on what you need to say no to in order to survive as a business

I think that for the most of us, JavaScript is good enough to solve these problems.

JavaScript is becoming fragmented

Now that CoffeeScript is a real language (and ClojureScript is trying to become one), that adds a few weird jazzy chords and beats my “one language to rule them all” tune. But maybe having JavaScript as a common platform is almost as good as having it as the only language.

What about multi-core? Parallelism? Concurrency?

I don’t know yet, we’re still not sure how to approach this problem. Some people use Clojure, Java or Erlang to run all cores at full utilisation. Some just throw a bunch of cloud servers at it. Some find that all the latency comes from the database calls anyway.

A bit of non-blocking here and callbacks there doesn’t make this problem go away. But it is certainly not beyond the realms of possibility that we could solve this problem with JavaScript.

As always, the pendulum keeps swinging

Like so many other things, fads in IT go in 10-20-30 year cycles. In the 90’s we all hoped for Java, then the polyglot/NoSQL movement came along. We might be ready for another round of badmouthing the language and platform fragmentation. I just hope that we get together and solve the hard problems instead of declaring our geeky love for things that don’t really matter.

 

Editor wars. Ugh.

Yesterday I noticed that the “Sublime Text 3 Public Beta” link was on the front page of Hacker News. And now, 21 hours later, it is still there, 226 comments and all. I know we love our tools, but sometimes all the energy and time put into editor discussions dishearten me.

Arguing that an editor makes a big difference to productivity feels a bit like choosing your commuter car based on how well that model performed in the World Rally Championships. Sure, it might be fast, but was that the right kind of fast? Would you have gotten to the office faster buy having a standard car but with a GPS, so that you didn’t take any wrong turns? Or is speed not the matter, should you perhaps carpool to save money instead? Or can you take the train and do some work from there, while traveling? Or should you work from home instead, freeing more time to be with your family and/or friends?

You can type faster with an editor that you like and know more. But does it make you think better? Be more creative? Collaborate better with your teammates? Understand the user requirements better?

That being said, I do love using Sublime. Mainly because it looks good, and tools that look good make me happy.