Archive for the ‘tech-and-biz’ Category.

Windows 8 UX Review

While the first reactions to Windows 8 UI demo ranged from “whatever” to “WTF”, most of them were focused on the published technological decisions rather than UX aspects. I want to present my opinion about the UX itself.

The very first word coming to my mind when I see the Metro start screen is “gaudy”. And no, it is not Gaudi, it is gaudy like that

There are too many details on the picture preventing it from having a clearly defined focus. This problem is not so visible on the WP7 devices, because of their small size and different usage pattern (more about it in a minute), but it is also present there.

Comparing Metro with the Start button and the taskbar of the previous Windows versions and with the taskbar of MacOS X, I believe this is a step back to the state even worse than Windows 3.1. Novices and elderly users will be confused, now knowing where it is safe to start.

Comparing Metro with the iPad, the latter has a very ordered matrix of relatively small icons with huge free space in between, while Metro glues all apps in a chaotic unfocused block of something.

In the real life, the start screen will look even worse than this carefully crafted one shown above, because random apps can (and therefore will) have mutually incompatible colors and visual styles. Again, having small icons with large free spaces like in iPad or Windows 7 alleviates this problem; having huge color-filled tiles glued together accentuates it.

Speaking of real life, the cut titles of the panorama control might look cute when the wording is carefully chosen and titles are hardcoded, but can quickly become a distracting factor when using a real-life, random user-generated data. And I don’t even want to start speaking about languages with words much longer or much shorter than English, or about the RTL languages.

But wait, things will get even worse with the announced dynamic updates of the tiles. As far as I understand, each app will be given the freedom to have its own notification UX. Just imagine these all apps glued together, blinking, rotating, jumping and putting on contrast colors to get users attention! Does it feel like a field of nasty banners to you?

For a minute, why would I want an app to display a notification at all? I tell you, even the uniform small decent red circles used in iPad are every time a disaster for my mother. The AppStore app just wants to tell her there are some updates. Actually she uses only two apps and shouldn’t care about updates at all. But because this notification looks so “urgent red”, she feels to be forced to update, just to get rid of this visual distractor. Which is a huge pain on iPad, because neither the AppStore app nor my mother can remember the password.

On Windows 8, such users would feel themselves even on greater pressure to “satisfy” all the apps, just to stop them blinking and jumping. Which is, in my opinion, not the way the user interaction has to be on slates and desktops, as opposed to mobile phones.

The mobile phones user interaction is very specific. A mobile phone IS in fact your personal notification device, with the added service of not only notifying you that somebody wants to talk, but also allowing you to actually talk with him. Half of the reason to always carry mobile phones with you is the ability to be notified, either instantly, or next time you look at the device.

Tablets are different. It you carry them with you at all, it is because you can — they are small and light enought to provide their services even on the go. But the services themselves have nothing to do with the location and mobility. Tablets are entertainment and working devices.

When I turn on the tablet display, I’m not going to quickly check what is going on while I’m trying to walk and hold an umbrella at the same time. No, when I turn on my tablet, it means I have some spare time I want to waste use to consume information: catch up all Twitter and Facebook updates, read some of the web pages linked from these posts, and maybe continue reading those Kindle books. I don’t really care that the apps have something for me to read. I don’t really care I even have apps. All I care for is that I have something to read, hear or watch.

If I was forced to use the Metro UI language even despite of its inherent gaudy nature, I’d shown content items in the tiles of the start page, instead of the apps, and I’d built the UX concept around elimitating tiles from the space by reading them. You turn on the tablet, you read the first tile containing a twitter message, you tap on it, it disappears. You continue consuming content items, possibly skipping some of them, until you have removed all the tiles except of the long-running ones (like Kindle books or movies). This would eliminate the nasty question of “where do I want to go first” and provide a simple and stable information consume workflow. Perhaps I’d allowed users to sort and filter the tiles. Or may be not even that.

On a positive side, I’ve spotted a photo selection interface, where the content items (the photos) are represented as tiles, and by tapping you can put any number of them for further processing in the footer area. This has vividly reminded me an UX idea we have implemented at Axinom back in 2008 for a Silverlight VoD shop :)

I’m looking forward to the next Windows8 videos from the Microsoft UX team.

UX Design Process

User Experience of a software product is an extremely integral and cross-discripline thing. They are many ways to ruin it — unusable content, wrong emotional tonality of graphics, unrealistic usage scenarios, suboptimal interaction design, technical compromises, you name it… Perhaps, security is the only other quality of software, which ubiquity is on par with UX Design. Hey, hacker scene has quite a lot in common with UX scene — isn’t that a coincidence? But I digress.

A cult UX design needs a single person who is both extremely talented in such different things as artistic and technical implementations; and has the absolute power over the software product.

In all other cases, a UX design process may help to achieve passable results. Now, as you know I’m not exactly fan of processes. A formal process is often just a way to solve personal problems — and I don’t believe personal problems should be solved in this way. So, even though I’m speaking about a process in this article, I’m not going to have others (or even myself for that matter) to follow it, but rather see it as a means to create a common coordinate system and terms.

The ultimate quality of software product is defined by how it sells (for commercial software) or how popular it is (for Web 2.0). For the purpose of this article, we factor marketing activities out of the equation, assuming that they can only put additional focus on product’s qualities, not replace them.

One quality factor are the hard facts. “Rendering a web page with IE9 takes x milliseconds, which is yy% quicker than any other browser”. Another factor influencing product quality is user experience, which is, how the user feels about the product.

For some products and markets, hard facts and UX would make 50/50, for some others 80/20 or 20/80.  In any case, UX remains one of the main factors helping or preventing a software product to achieve its goals.

Watch with me a typical lifespan of software product UX design.

The software product starts with a rough idea, a small but powerful grain. In the conceiving phase, this idea is gradually defined with more and more detail, until it spawns leaves of “modules”, a rough architecture of the product. Let’s make a snapshot of this state and call it a vision document.

While it remains on the business level, the definition process continues, so that separate features starts to appear inside of modules. At this point of time, the most important decisions about who are our users and what are their main scenarios are already taken. The most important features even start to appear quite material. Take a picture again, and call it high level concept document.

But what it is? An unusual process begins to happen with features. They start to move and boil and jump between modules and change themselves quite a lot. Some features would die, just to see other features appear on their place. As a result, from the chaos of the proto-features, a clearly ordered and beautiful structure appears. At the same time, features gradually materialize so much that their wireframes become visible. Now, by looking at how stable the wireframes are attached to the overall structure, you can get an impression that this UX could be implementable. Push the button and save it as detailed concept document.

A stream of pure creative energy hits on the wireframes to remain in form of emotions expressed as graphics, sound, movement… Don’t miss the moment, make tons of pictures and call them comps.

The product is beautiful now, but it is still sleeping. Invisible for the eyes, life is being created inside of it. Sooner or later it will wake up, and gratify the product team with its first cry…

To make this fairy tale happen, several professionals (or better to say, roles) work on UX:

  • Creatives: Artists, graphic designers, animation designers, sound FX designers, typography designers, industrial designers… Their main goal is to pick up users emotionally. The reason Apple fanboys are so forgiving about Apple products is that the products are so emotionally compelling. You don’t complain that the place of the “close” button is unpredictable from app to app, because this button is so crisply and carefully rendered, and because the screen where it is placed is so well balanced visually.
  • Interaction designers, usability experts, information architects — people who care about the mental model users will get when using the software. Who are our users? What are their goals? In what scenarios are they going to use our software to achieve their goals? How can our software be helpful in these scenarios? How to remain flexible and support plenty of user scenarios, but not to overwhelm users with too many choices?  While the Creatives target the right hemisphere of user’s brain, IX designers appeal to and care for his rational side.
  • Developers. Not every UI concept can be implemented within reasonable time and money. Often, UI concepts have to be developed on verge of implementability (I remember the guys from Windows Media Center team were astonished when we’ve showed off our image coverflow implemented in MCML — something you’d need to bent your mind around for a couple of days, given existing technical limitations). Also, if we want product quality to remain high in the mid-term, software architecture must reflect the UX design.
  • Business. Obtain or ensure compelling content. Ensure enough time, money, people, and hardware. Present UX design to stakeholders while controlling their desire to influence it. Otherwise, stay out of the way of the product team. Business as usual.
  • Testers. They can be the first to smoke test the UX design decisions, before they will roll out to private beta. Their goal is to provide an outsider point of view.

How exactly these roles are mapped to real people, and where roles start and end, is often matter of discussions. Besides, the process doesn’t account for agility and iterations, as well as for parallel development that has sometimes to be done to hit a deadline, and, and, and…

But this is a topic for another story.

iBad experience

As Apple has presented iPad 2 recently, it is time for me to sum up my iPad user experience. Because Apple focuses on the overall user experience, right? And the competition focuses on specs and features, and this is wrong?

At least this is how Techcrunch has understood the Jobs’ message. Unfortunately, I cannot confirm it with an original video from Apple.com, because this site requires me to install Quicktime browser plugin to watch videos, without giving any other possibility. And I’m not going to install it, because unlike Flash and Silverlight I know that a) Quicktime is only needed for this one single site in the Internet — the Apple.com, and b) I had a nightmare experience with some previous version of the Quicktime player for Windows before — this bloatware had installed ton of services eating up my memory and CPU cycles and had constantly tried to upsell me into the Pro version. So: no, thanks.

But I digress. So, the iPad 1, and its overall user experience. I didn’t buy it for myself, it was a gift for my mother. Everybody needs a computer nowadays, but she in her 60’ies is not very computer affine, even though she is a computer technician by her education. So I thought, an iPad doesn’t have a file system, nor device drivers, nor firewall & antivirus software, and iPad is from Apple that is being rumored to be a company that cares for user experience. So I thought, iPad is the best fit for my mother.

She is a normal retired person that wants to follow her children on Facebook and Flickr, get connected with her former classmates and friends, read books, occasionally write a couple of invoices, and otherwise read mail and try to surf in the Internet.

So I have bought the 16Gb iPad without 3G, from a local German shop.

The first very positive experience was that it came with the fully charged battery so that I could start using it right away. This is really cool and this is how all gadgets should be delivered.

And the first very negative experience happened soon thereafter. I’ve switched the UI language to Russian, because well, my mother is a Russian living in Germany.

Have you ever seen the German iPad switched to Russian language? Apple, have YOU ever seen it?

Let me read for you the application names the iPad has displayed: Safari, Mail, iPod, Youtube, App Store, Настройки. Yes, these names appear exactly like that in the UI, with only the last app (which is Settings) being translated. Now, don’t get me wrong: my mother is a great well educated women, but she speaks only Russian and German, and have learned French in the school. That is, no English. How is she supposed to understand what “Mail” is? How is she supposed to understand that Safari has something to do with the Web, and not with hunting in Africa? She has never used an iPod and so also has no idea what THAT could be. And Youtube she cannot even read properly.

And I remind you, it is the iPad bought in the German shop, switched into Russian UI language. What the hell all these English names think they are doing on its screen?

Let me spare detailed description of how exactly bad the localization of Apple software into Russian is. I will only provide you with one, the final example. The Pages app, also by Apple. Do you know how they translated the “Undo” button into Russian? “Не применять”, which means, “Must not use”. I’ve avoided to tap on this button, because I (me! a software developer!) was unsure about what exactly will happen if I would use it. Luckly, by chance I have seen a screenshot of the English version of Pages…

So, the first shock of the localization disaster calmed down, and I started to pre-configure the iPad with some useful stuff before I will present it to my mother. For example, I wanted to buy some content for her.

The first try: iTunes. I’ve searched for some movies in Russian (produced in Russia). Zero. Then I’ve searched for some movies produced in Russia, but translated into German. Zero. Then I’ve searched for popular German movies. I’ve found one or two, which wouldn’t interest my mother. The rest were Hollywood movies translated into German, with quite expensive prices for the German VoD market (think maxdome.de, download.mediamarkt.de, videoload.de). Not very appealing.

Then I’ve switched to music. I’ve searched for some Russian performers. Nothing. Then for some well-known German ones. Nothing. Then for some Chinese performers (I happen to like Chinese music). Nothing. What they have is basically the USA music charts. Not very appealing.

So I went to Safari and navigated to some Russian VoD shops, where you can buy a Russian movie and watch it online. What have I forgot? Yes, you’ve guessed it right. No Flash support in iPad! And those shops are all using Flash.

So.…

Then I’ve tried the iBook app. Should I describe what happened? Yep, you’ve guessed it. No Russian content at all, not even Russian classics translated into German. Not even any interesting German book! Only English content. But wait. I can download a book as PDF and then read it with iBook, can’t I?

Yes, I can. I just need to connect the iPad to iTunes on my PC or Mac and use it to place the book into iBook app. I cannot “just” download the book in Safari on the iPad itself and read it in the iBook. Hm. But wasn’t the whole idea of the iPad in my case to be a replacement for a full PC or Mac? So why do I need an additional computer in my household? OK, I have by chance a “real” computer at home, but I don’t have iTunes, nor I need this bloatware on my Windows PC. Is that what Apple understands when they speak about overal user experience?..

But I digress again. Failed to provide tons of useful content, I’ve turned over to installing useful apps. I wanted to provide a cool option for her to follow me on Twitter, Facebook and Flickr. The only free Facebook app I’ve found is designed for iPhone. There were too many Flickr apps, but most of them were paid apps… And twitter client I’ve found some, but it wasn’t integrated with Facebook. I’ve spent perhaps an hour trying out several apps, and the best fit I could find was the Flipboard. Unfortunately, this app has also an English UI only, so that my mother isn’t using it often (or at all?). And, unfortunately, this app has only English language news sources (just like the Pulse app has), and doesn’t allow to add a custom RSS (for example this blog’s RSS). Well, again, here may be I’ve just missed a cool and useful app — if you can advice me with an app showing RSS, twitter, Facebook and Flickr and also allowing to post to your own Twitter and use all the features of Facebook, and that with UI translated to Russian or German, please let me know. But, actually, shouldn’t Apple have had prepackaged such an app with the iPad? After all, they have pre-packaged the web browser and the mail, something that Microsoft was not allowed to do in Europe…

So Ok, after some time and having prepaired the iPad as good as I could, I’ve presented it to my mother. She was clearly excited about its look and feel, and she could start sweeping and tapping on it almost instantly. I’ve ensured her that she cannot break its software, and that allowed her to overcome her usual fear for PCs. She has found Youtube and we could watch a couple of free (or should I say pirated?) and short Russian clips on Youtube. So the first day went quite OK, besides of the last thing my mother wanted to do with the iPad. She wanted to “say bye”. Let me explain that. Her first computer was a mainframe in the office she worked at. This mainframe had an IBM operating system with a command line interface. To begin to use it, you were supposed to type in “hello” and then your user name. To log out, you had to type in “bye”. The mainframe operators were intructed very stricktly that they HAVE to “bye” to finish the work session with the computer. So what my mother was missing is the similar way for the iPad.

I must say that this is the feeling I’ve also had sometimes, for example with the Pages app. When you’ve finished writing a document, your “natural” wish is to “save” or “freeze” it somehow. But there is no button with “Save” on it that would give you that warm safety feeling.

Speaking of the Pages app, the thing I missed was a documentation (a user guide). I’ve spent may be 5 or 10 minutes trying to understand how to insert a new row above an existing row in a table, but no combination of tapping, sweeping, dragging and pinching could do the trick. After all these tries I’ve felt myself being an ape trying to open a coke can but now knowing how. So I was very impressed to see that my mother was able to use this app to type a whole one-page invoice, with all the formatting and details she needed. Apparently, she was not disturbed by absence of any clues of how to use the formatting features. Perhaps because she didn’t use any.

A similar experience I’ve had with some other apps, for example the iBook or Mail. When you compare iBook, Mail, Pages and Numbers, you will see that these apps sometimes don’t keep similar interactions in the similar ways. For example, the close button might be in the top left, top right, or bottom right corner. Or a button with a box and an arrow going out of this box could mean quite different things, like answering a mail, forwarding a post, or sending a document to printing. Again, my mother seemed to be not disturbed by such inconsistencies.

One of the use-cases for iPad that additionally appeared was using of Skype. So I went to a local shop with the idea of buying a web cam and a headset that can be attached to the iPad port, or an adapter for that. Nothing found. Do I understand correctly, that video conferencing is not supported? And why it isn’t? Does the iPad have a slow CPU and / or no GPU? Do we want to speak about features and specs, and the price I had to pay for the device now?

After all, I’ve spent $640 on it. That’s right, the device that costs $499 in the USA will cost 499€ in Europe. If I was buying a desktop PC for that price, I would be able to use Skype, read books without any additional software, use Microsoft Office (and have a usable physical keyboard for that matter), etc. Unfortunately, I would also have files, drivers, firewalls and other unneeded stuff…

So, my resume of this long post: all in all, it wasn’t a mispurchase. My mother has fun and manages to use the device, at least those apps that are adequately translated or don’t need any translation. But, it was quite an expensive fun, and it was a user experience quality level that I absolutely cannot match with all that hype Apple fanboys and fangirls are producing in the press.

As soon as anybody would produce a reasonable OS for a normal PC hardware, without all this file, driver, firewall stuff etc, I mean an OS suitable for seniors, there are chances I will immediately try it, and, who knows, the next computer my mother will get will not be an iSomething.

Daily time budget

I work 8 hours per day. If I’m in a normal mood and health and averagely motivated, I spend only 2 to 6 hours per day developing software, with average of 4 hours per day. The rest time I spend on other activities.

This is an absolutely deliberate decision of mine.

I can only be productive so many hours a day. If I would try to force me and develop software in my unproductive state, I would create more bugs than software. This effect is widely known among software developers and many cool names are assigned to that, for example the Flow that can happen in the Zone, in The Cave.

No matter how you call it, the lenght of the Flow can be trained: the best software developers I’ve even seen could develop software productively 6 - 7 hours a day on average, in a course of several weeks. The worst programmers I’ve ever met could only bring a half an hour once during the whole week.

Experience and training not only raise Flow duration, but also deepens understanding of the process: novice programmers don’t even feel when they are in the Flow and when not. Somewhat experienced developers can tell Flow zone apart of unproductive time, but would force themselves to work outside of the Flow time, sometimes because of a wrong understood discipline or loyalty, and sometimes in a hope to engage the next Flow period. And the most experienced developers would just switch and do something else.

There are plenty things to do. Communicating, documenting, specifying, installing, testing, participating in UI design and in business concept creation, trying out new things or just catching up with the news. Not that those things don’t require to be creative, but they require different brain parts than software development. And most of those things are either expected to be done anyway, or can be done by software developer and would bring additional profit to the company (as opposed to spending unproductive time with surfing on the Facebook or coffee klatching).

By being consequently self-disciplined and replacing software development outside of the Flow zone with these other activities, experienced software developers raise their efficiency (in terms of ROI on their salary).

So that is undoubtfully a Good Thing.

Having agreed on that, two logical consequences of mis-management can be considered.

The first one is that you cannot speed up software development by increasing working time. One can cleary see that increasing working time can only increase the time outside of the Flow, so that less experienced developers would produce additional bugs (but not additional software), and more experienced developers would produce more documentation or tests, but not software. The burn out after a couple of weeks will complete the desaster. The very best outcome of overtime are bugs that look like a usable software in the short-term perspective (so called clickdummies or throw-away code), which might have sense sometimes. Fortunately, most of people know about this effect and generally consider overtime as a “no go”. Many software developer contracts here in Germany prohibit overtime explicitely (you may not regularly work more than 40 hours a week), and that’s good thing too.

Another consequence is not that much known: you cannot speed up software development by freeing up the software developer from some of his non-development activities. Speaking of me as an example, I need 2 to 6 hours per day of a non-development tasks to fill up the time outside of my Flow. If you free me from some of those tasks, it doesn’t mean my Flow time will increase and I would produce software more quickly. No, it would only mean I will have to find out and do some other, may be less important, non-development tasks.

The only really working way to speed up software development is to increase the average Flow time. Speak with your software developer to find out more about how to do that.

On Personalization

Personalization is a concept from the world of web, meaning the ability of the web application to recognize and tell apart different users and act differently on per-user base.

To enable personalization, users almost always have to invest time, and sometimes money, to sign on. In exchange, they can obtain direct services, for example, remembering their filtering and sorting choices and other preferences, their payment and delivery data, or providing them with a unique identity by allowing to use specific nicknames and avatar images. Such services are the reason the user would sign on in the first time.

Besides, some indirect services or improvements can be provided, for example, using user’s first and last name in the communication, or taking the user’s gender into account when rendering the user interface. Such services often include psychological tools with the purpose of influencing user’s emotional state, and are therefore trickier to get right. You have to take the internal logic of the user’s interaction into account to decide how or whether to implement such personalization.

A simple example can be given speaking about personalized greeting. In the beginning of the web, when a cookie has been invented and made login possible, it was a custom to start each and any start page of a personalized web site with a “Greetings, Firstname Lastname, and welcome to this page”. This practice has been abandoned completely with the beginning of Web 2.0, when people started to think more carefully and thoroughly about emotional value of their UI and its influence on the user interactions. The user’s name is still present on home, but not in the greeting form. The single known exception of this rule is Amazon. Interestingly enough, personalized greeting remained intact in newsletters and generally in e-mails, and made it to a true standard — a non-personalized newsletter looks nowadays as an epic fail.

So what’s the difference?

The user mental state for newsletters can be described as “in the middle of something”. If it is an e-mail, the user will be distracted from whatever he was doing by an outlook notification. So when he begins interaction with the newsletter, his attitude is the classifying one. He doesn’t care that much about the contents yet. He wants first to classify. Is this stuff important or not? From the person I like, I hate or I don’t know? Short or long? Does the sender wants something from me, or gives something to me? Depending on the classification, the interaction can end in the very first second with deleting the newsletter and optional adding the sender to the junk mail rule.

Even if it is a paper mail, the similar attitude will apply, because people typically fetch their post on the way home or out of home, so they would want to sort the mails quickly before actual coming home or sitting in the car. In these circumstances, a personalized greeting could help avoiding the unfavorable category of SPAM, because it indicates that the sender at least knows something about the recepient, so that the mail would probably not be completely unrelated.

Later on, during the reading the newsletter, the personalized greeting may even lead the user to believe the e-mail has actually been written by a human, unless the trick effect is destroyed by other wording (like wrong gender in spite of unambiguosly identifiable name).

The user mental model for visiting web sites is different. Here, the interaction is initiated by the user, and he is a returning visitor (otherwise how would we know his name?), so that, most probably he already knows of the value of the web site and classifying the site will not be his highest priority. Often, users visit web sites to get some service, information or products. So their attitude is very similar to one when entering a shop, cinema etc: the most interesting thing people normally focused to are the products, service or information themselves, not the web site providing them. A greeting, especially personalized only with user name without any further advantages for the user, is only distracting customers from their main focus. It might be as counter-productive as “can I help you?” of a seller immediately after customer is entering into the shop, forcing her to move her eyes away from that beautiful shoes in the window that motivated her to enter in the first place. Never stop customers staring at your goods — just be right there when they finally reach for their purse…

If you look at Amazon’s personalized greeting, you’ll see that their layout focuses you into the search bar and the recommended products in the main content area — the products you actually interested in. Me personally, I haven’t even know about existance of the personalized greeting on Amazon before writing this article. It is well hidden in the outer top space. I believe, if they would put it in the middle of the screen, and have you to access products by additional clicking on some link or navigation, their sales would measurably drop.

The moral of this unexpectedly long article is that indirect personalization services require at least the same, or even higher level of user interaction design efforts than direct personalization services. Take that into account and resist placing a personalized greeting to the home page, with the only reason that it is easier to develop than a shopping cart.

Geekonomics

 

 The personal nanoeconomics of a geek begins typically in his childhood, when he gets his hand on his first computer and his parents detect that he is spending more time with computer than other children do.

Other children have several hobbies, the geek has only one. So that while others can typically dance, play guitar or sing, play some kind of sport, and can talk about various far countries they have visited, the geek can only support flame wars about static type-checking.

Other children socialize. So that they later have friends, business network, partners and beloved ones. Geeks are often lonely and eventually learn how to get used with being alone and living without support of friends.

Other children learn how to cook, fix things at home, drive a car, punch into faces of various assholes, etc. Geeks don’t learn these things that much.

Geeks spin and twist their brains during education. Others spend the absolute required minimum of time and efforts in the school and college, so that they have time for making money, more socializing, or just hanging out.

As a result, geeks are good in software development, and others aren’t.

Being a geek is a huge investition. It is hard to valuate absence of private life, but I think we’re talking about millions here. The geek itself might even not realize his investition, thinking that spending life like he does is just a huge fun and right way to do, but it is an investition never the less, and at least when he’ll stop getting fun from software development, he starts to realize it.

This investition pays off, when the geek finds his first job. He doesn’t necesserely earns more money than others, but at least he gets a huge moral reward of being a micro-copy of god in his virtual universe.

So far, the skills and abilities of a newbie geek were continuously increasing.

But rather sooner than later the geek will hit a job not allowing him to develop himself. No matter why. That can be a programming technology rapidly going out of fashion, a need to support a legacy system all the time without the ability to use any of essential software development skills, or just repeatedly unrealistic deadlines not allowing to finish anything.

And then, the geek will realize in what kind of situation he is. While his already huge, and constantly increasing investition still allows him to work as software developer, he cannot stop and make a pause, because the software industry will rapidly devaluate his investition. Geeks have to constantly develop themselves, otherwise they could land in a nightmare and become an idiot both robbed of a private life, jobless, and too old to start making contacts and partnerships.

Geeks are always striving to produce a good, or when possible, the best software, and they are always trying to apply whatever new cool technology that would improve their CV and their standing on the job market. Other people often think that it is because geeks are irresponsible children who only want to play with bytes and ignore the business. Some of them are even going further and believing that geeks either cannot or don’t want to care about the business at all. Well, they might be right. I suppose, 5% of geeks are really childish. And the rest of us can clearly feel the merciless rules of economics on our own skin.

Success is harmful

Little can be more harmful for a software development team than team members immediately after a successful previous project.

Continue reading ‘Success is harmful’ »

New Features of Silverlight 5

Two days ago, @ScottGu has announced new features scheduled for Silverlight 5 on the Silverlight Firestarter event. He has said that there were over 21000 votes about the new feature set collected from the Internet, and around 70% of them have been scheduled for SL5.

Now, this is truly amazing.

Just think about it. Which other vendor of a commercial technology with installation base of at least 60% worldwide would allow you to vote for features and then just implement them — for free and within a year? Can you vote for a feature in HTML6? And when you’ll get them, in 2030?

I can’t wait to start using SL5 beta. Here is a list of features I will value most:

Hardware-accelerated video decoding! First, this will HUGELY expand the range of devices able to play video with Silverlight downwards. Netbooks barely capable playing Youtube-quality without glitches will be able to play 720p or even 1080p in their full glory. Second, it can improve playback of some scenes that are challenging for SL4, but not a problem for native players like Windows Media Player or VLC, which will allow HD-Video-philes to enjoy the Silverlight movie experience in premium segment. Third, this can radically prolong battery life of all portable devices playing video.

Typography improvements — Text clarity, Multicolumn layout. The current text rendering is just plain awful. You have to spend substantial time to work out your design inside tight limits, if you need to provide a compelling typography with Silverlight. I hope this will be radically improved in SL5, so that apps will have crisp AND quick text rendering by default, without any tweaking. As far as I understand, there will be also a possibility to convert text into vector graphic (something which has always been available in WPF and has been stripped for unknown reasons from Silverlight). Depending on how it will be implemented, this might also enable many important and interestring scenarios, including placing text along a curve, using perspective, or just surround each letter with a border.

P/Invoke. No details about it, but if it will allow to load and work with WinAPI and .NET Framework libraries, this will be another huge improvement. One of the Silverlight issues is that it is a stripped-down version of .NET. Quite often you need some functionality and it isn’t there. I’ve never understood, why did they develop a parallel .NET instead of re-structuring existing .NET Framework, extend its security model to incorporate strict Silverlight security, port a couple of most important modules to Mac OS X, and implement on-demand framework installation (as soon as first SL app needs some library, it can be downloaded from Azure). So, back to real world. P/Invoke in SL OOB apps will be rather a workaround for this, in my opinion, unbalanced architecture decision, but nevertheless, a very important one opening a huge number of business opportunities.

LOB support improvement. WS-Trust is now supported. It is funny. Two years ago, I was consulting a big international company. They were deciding whether to use WPF or Silverlight OOB in their frontends deployed in many businesses around the world. They wanted to use WS-Trust and were asking me how to do that in Silverlight 3. The answer was “it can be done, but we have to implement the WS-Trust stack ourselves”, which was a Silverlight killer.

I want to mention a couple of other announced things, which I’ve found quite interesting, but I’m not sure how are they related to the real-world Silverlight-based ISV business: Pivot and Crescent. I suppose, they showcase Silverlight features that can be used for innovative LOB apps. If you haven’t seen them, take a look.

One last comment on the Firestarter event: you’ve got to watch the presentation of Dave Ossip (start time: 00:56:11). This is one of the most concise and rational product presentations I’ve ever seen. It is still marketing speak, but more marketing effect is being achieved with less marketing bullshit bingo. Not a big deal, but my geeky soul could consume it without to agonize (I’m looking at you, SAP presentation video).

My Android anchors

Now, when WP7-based devices are available, I was thinking about buying one. After all, I can easily develop software like a custom twitter client on WP7 without having to learn anything I don’t already know.

The “only” issue with WP7 is that I have a couple of apps on my HTC Hero, which I absolutely need or at least would like to use  in my daily life and which I don’t want to miss on WP7. Here is the whole list (as of today):

  • SCUT gPen — an IME allowing to enter chinese symbols by “painting” them with a finger
  • Swype keyboard IME. It is not that really quicker, but the fun using it works like a drug. You don’t want to switch to normal keyboard once you’ve started to swype. It is like eating without salt and pepper.
  • A tethering app. I’m using EasyTether but would use just any other possibility to avoid paying crazy sums for hotel WiFi.
  • Hanping Chinese Dictionary or an equivalent. At best, the whole info from Yellowbridge should be integrated in the app.
  • MapDroid — a map app, which caches parts of the map locally so that you don’t need to pay crazy sums for GPRS roaming on your weekend trip in the neighbour land.
  • Barcode scanner with Google and Google Shopping interfaces
  • WiFi Analyzer to show surronding WiFi networks graphically, and Antennas, to show surrounding cell base stations graphically
  • A simplest MP3 live streaming client of any kind. I enter an Icecast Url, it plays it. Well, I guess I could write this one myself if it isn’t available yet.
  • Kayak and Ustream clients, just for fun

So, these are all anchors so far, which don’t allow me to switch to WP7. My feature request for the WP7 Marketplace: I would like to be notified per E-Mail, when the WP7 apps with the same or better feature set  will appear there.

PDC10 Controversy

In response to the Mary Jo Foley article about apparent Silverlight strategy shift (I’ve mentioned it), Bob Muglia has now clarified a couple of things. To spare you a visit of his blog, here is my short version*:

a) Microsoft has failed to put Silverlight on to iOS (and, for some unknown reason, on Android).
b) Microsoft has failed to provide a viable OS for an iPad-killer
c) Given the fact how quick Apple and Google develop their market shares in this connected devices area, Microsoft’s knee-jerk reaction was to support at least something to be able to be present on these markets.

This something is happened to be a new version of the Hyper Text Markup Language. Which is very unfortunate due to two reasons.

First, it is still the HTML we all know. Think about “design by commitee”, browser incompatibilities, the need of backward compatibility, and complete lack of understanding the real-life needs and use-cases of software industry clearly shown by its academic creators, first and foremost by Tim Berners-Lee.

Second, it is seen by some (crazy) developers as a serious competitor of Silverlight.

The results of this move are suboptimal. If Microsoft will follow the loud requests of some panicing folks and will feel itself under pressure to release some next Silverlight version, no matter how half-baked it is, it would damage the quality and stability of the Silverlight platform. If they won’t, these folks might crack up and jump off the train.

IMO, the best reaction for all Silverlight developers is to calm down,  write off this year’s PDC and look forward to the next year’s MIX. After all, Microsoft has announced support of HTML5 in IE9 months ago, so these are old news.

Windows Azure is a more interesting PDC10 topic, but I will write about it in the next post.

(*) Okay, not exactly the short version, but my own speculations on the topic. You may want to read the original post.