A notch above a monkey

Salary and geography

I recently read a couple of articles about employee compensation at Balsamiq. It is obvious that they really thought through this problem and came to what is an undoubtedly a generous package. It would be great to hear more about how they use OECD Consumer Price to calculate relative cost of living (since I fail to see how), but what really bothered me was a stated fairness of:

You are paid a little better than someone with your same job in your geographical area.

I am amazed at how often this view comes up in discussions I have about geographically distributed teams  and I still don’t find it fair. The only argument for it is the free market one. You are paid as little as company can get away with which in general is around average salary. Obviously this approach works only for those who can’t or won’t telecommute to somewhere with a higher salary or can’t find a more appealing environment with about same compensation. At least in our industry this certainly loses you a good chunk of top talent.

A fair compensation should reflect value added by the employee. Two people doing same work and providing same value deserve to be paid equally no matter where they happen to live. It is somewhat hypocritical to price your service based on value provided and fail to do so with service provided to you by your employees.

In essence it is also a judgement on what kind of living standard an employee deserves – about the same as peers around him. Probably alright if you happen to live somewhere like Stockholm and far less impressive in less developed parts of our planet, but fundamentally it is a judgement that shouldn’t be made by employers.

For those paid enough to meet existential needs compensation isn’t the most important part of a job or at least it shouldn’t be. It certainly isn’t for me and I doubt Balsamiq employees are unhappy with theirs. I also don’t have a problem working for an organization with such a policy, but I still think it is wrong.

A side note: have you noticed how every author describing their company practices says they are paying slightly above average? Either only people from above average companies write these kind of articles or some of them have to be delusional.

My prototypes on YouTube

I am not much of a YouTube user, but I have recently started to upload some of my work there. You might find them interesting if you are into interactions prototypes for products that may never be (especially if you are a Zemanta user).

I want to stress that while we use prototypes to learn what to implement and how, there is no guarantee that any particular feature shown will be actually included in our products. We do make an effort of listening to our users so please tell us what you think.

This is also a good time to mention that I don’t lead front-end team at Zemanta anymore. My new title is Chief Product Officer which is a fancy way of saying that it is my task to care about our products and our users more deeply than anybody else.

Reblog this post [with Zemanta]

Appeal for a better support of authors widgets

Goal of Zemanta widget has always been to present contextually relevant information to text being written and to enable writers to add that information easily in places of their choice. We want to do this in as unobtrusive manner as possible, which means that act of writing should not be impeded by us and that published text should only have as little markup added as it is necessary to add items picked by user (images, links…).

Zemanta widget in various incarnations today works in all major browsers (Firefox, Internet Explorer, Chrome, Safari and Opera) and on all major blogging platforms. This wide support is presenting ever bigger challenge to us and to anyone who wants to follow our path.

Most blogging platforms today support enhancement of blogs with widgets. I think it is time for them to add support for widgets on content creation side and go beyond current one-interface-fits-all state of affairs.

Open platform would enable tool makers like us to build specialized tools that might cater to specific niches and empower writers to customize their workflow to their needs .

Such platforms should at minimum have a common shared feature set, but I hope for at least partially shared API.

Current state

Some platforms like WordPress already have a plug-ins API which can be used to customize parts of creation process. However it is usually very low level, highly platform specific and available only to self-hosted users.

Creators of rich text editors have also recognized a need to let outside developers extend writing experience. Most major editors have an API that admittedly we might not be using enough. But this is not true of all editors so we end up with common development problems like not enough feature overlap and missing, undocumented or poorly documented interfaces.

There is a lot of activity, but the end result is still a very fragmented landscape that in my opinion limits developers creativity. You either add wanted functionality to your favorite platform or if you are more ambitious, you end up seeking the right balance between ironing out platform peculiarities and building features users actually care about.

And since blogging environment that most people use lets them little control over it, we develop browser extensions that are really just a patch for this problem. The only reason why we bloat browsers (a little bit) with an extension that most of the time does nothing is because we have to. Extensions are great, but they also present a risk and in this case one that should not be necessary.

My vision of future

What I would like to do as a developer can best be explained with examples translated from code to English (well, approximation of it anyhow).

I would like to write: ?Take image at this address, upload it to writer?s image repository and return me its new address.?

I would like to write: ?When DOM node is added to text (or removed from it), run this function.?

I would like to write: ?Before text is published, run it through this filter function and save its result.?

I would like to write: ?Store this information and let me retrieve when I need it.?

I would like our users to add our widget with only a few clicks. Maybe a click on our side to trigger installation and a confirmation on blogging platform with a list of permissions sought (like OAuth).

When user interface needs to be shown, I would want it to be well integrated. So if elements of interface can be rearranged, hidden or otherwise handled, then our widget would behave as expected.

In conclusion

Creating and supporting a tool like Zemanta is difficult. Front end development is challenging enough when you are against few browsers on your platform, but it is far worse when you try to deliver the same high level of experience on multiple platforms none of which you actually control.

You keep hitting at browser quirks and unexpected platform changes and ironically it keeps getting worse as other people?s code gets better. For example, wrapping your Javascript code in anonymous namespace is good practice, but it often removes hooks on which you relied and you need to come up with a new solution.

My work often feels like war of attrition, which is odd because there is no enemy. We work to complement blogging platforms, not replace them.

Surely it is time we do better.

Reblog this post [with Zemanta]