Why is everybody talking about apps?

 

apps

The last few years everyone seems to be talking about “apps”, if you are a runner there is an app to provide all kind of info for your running workouts, if you need to go anywhere there is an app with maps that will guide you via GPS, if you want to video conference there is an app to do it, if you want to do karaoke with your own music, manipulate a photo, read your favorite news, interact in social networks, check your credit card reconciliations, play a game…there are apps for all that…even if you want to simulate farting, unfortunately there are many apps to do it too.

There are several reasons that have contributed to the apps explosion, explosion that hasn’t reached yet its maximum level.

The main reason has been the popularity of Smartphones, mobile phones that offer many more features than simply a phone call or texting. These phones are more and more powerful and they are already similar to PCs and Laptops. Smartphone sales are not yet comparable to the sales of traditional mobile phones, they are only about 40% of total sales, but it is clear we are in the middle of a new trending. While the total mobile sales have declined -1.5% during Q1 2012, smartphone sales have grown +42.5% YoY compared to the same quarter in 2011. The forecasts indicate 686 million smartphones will be shipped during 2012 (source: IDC).

The next reason is that all smartphones come with a marketplace, which facilitates sell and distribute apps. Let’s think for a second how hard was before the distribution of your own software, you had to deal with local distributors in order to sale your product in local retails, another option was to sell via Internet, but then it was harder for users to trust the download as there weren’t easy mechanisms for them to identify a safe software free of malware and spyware.

Nowadays any company or single developer can create their own apps and access to a global market in a short time, on the other side the users can trust better the software they install as they access it via a trustable marketplace as the ones from Microsoft or Apple, which both check every single app uploaded before it is published.

Finally, it is hard to find any other device you own that is always as near to us as a mobile phone, otherwise just try to think how many times you leave your phone more than 2 meters away from you.

Checking the smartphone sales figures, how easy is for the users and developers and how companies can be more close than ever to us, it isn’t surprising that many companies and single developers having started to create their own apps and games to be the next Angry Birds.

As you can imagine having success with your app is not that easy, a recent study conducted by Adeven indicated that about 400.000 apps in the Apple Appstore are zombies, which means 60% of the apps in the AppStore have never been downloaded.

So it seems obvious that just creating an app is the key for success, developers will find fierce competitors and the difficulties to obtain the necessary ROI for their work, since it is very common to find free apps or apps priced under $5. Therefore, it is necessary that as a developer you plan your marketing app appropriately or that you count with partner who can do it. It is also important to select the right business model for your app, the commons are:

  • Single payment. The user pays just when he downloads the app. The main risk in this model is to do not have downloads enough to obtain a ROI. In addition, once you have sold to all your potential market and there aren’t more downloads you will not be able to generate more revenue from your current users.
  • Ads supported. In this case, you still need to have a big amount of downloads and make sure users spent long enough time to display your ads.
  • In-app purchase. This is will probably be one of the biggest revenue streams in the near future as it allows to create revenue on existing users. It consists of invoicing users for new content or features, i.e. in a game you might want to offer new weapons or maps after an additional payment, or just think in how Kindle works, the app is free but you pay for each book you download.
  • Subscription. Following a similar model to the cloud computing, you can invoice your users just for the use of the app, if you stop using the app you don’t have to pay. Think for instance in NetFlix you pay a monthly or yearly fee that gives you access to their content.
  • Combination of the previous ones. For instance, you can create a free version of your app that is supported by ads and paid app without advertising.

As I was saying at the beginning the apps business hasn’t reached yet the saturation point and it is still growing very fast. This is because in addition to rapid growing smartphone sales, we need to include now the tablets and also Desktop PCs + Laptops. The arrival of Windows 8 will potentially convert the Windows Store in the biggest marketplace considering the installed base of Windows PCs

Because all this, the forecast for 2014 shows the app business will reach $35 billion and the app downloads will grow from 10,7 billion in 2010 to 76,9 billion, reaching up to 182,7 billion in 2015 (source: IDC).

It is reasonable to say that the next years will be more than ever the developer years, which reminds me the Steve Ballmer’s quote:

“Developers! Developers! Developers!”

Common Reasons Managers Fail

I’ve been working 14 years in the IT industry, before that I’ve worked in all kind of temporary jobs while I was studying, summing up a total of 19 years working with and for managers from diverse industries and countries. The last 7 years of my career I’ve been a people manager myself.

I’ve had horrible, bad, good and excellent managers, but all of them, including myself, had something in common: managers fail and do mistakes.

In this post I want to describe some of the common reasons managers fail. To do it I’ve created a list based on the sources “Why Managers Fail” by Will Phillips and “Becoming a manager: How New Managers Master the Challenges of Leadership” by Linda A. Hill.

The common reasons managers fail are:

  • Unable to make the transformation which involves a profound psychological adjustment.
  • Independent. Likes to accomplish things on their own.
  • Poor interpersonal skills.
  • Failure to adapt.
  • The “Me Only” syndrome.
  • Fear of action.
  • Inability to rebound.

There is an additional point, which is not included in their lists but I think it’s crucial and makes lot of bad managers fail.

  • Fear of building a great team.

 

Let’s analyze these points more in detail.

 

Unable to make the transformation which involves a profound psychological adjustment.

When people becomes manager they suffer a a transformation of identity, most of the skills for which they were bright and lead them to become manager are actually useless to be a manager.

This is very common in sales and technical positions, someone who is great selling doesn’t mean that can organize a full sales department. If we take the example of my industry, I have seen lot of times how the best developer became manager, the one who had the best coding skills, the one who finished his tasks always on time and with less bugs, the one who always solved the most complex tasks … just that one became manager. The problem is that those technical skills are not related to manage people, to deal with providers and vendors, to manage a budget, to be a good communicator and listener…

In addition to losing the sense of mastery and having to begin working on a new set of skills, you involuntarily move to what I call the “dark side”.

The dark side is that zone where you are not anymore part of the employees, you become “one of them”. How many times have you been in the coffee machine having fun, laughing … suddenly the manager enters … silence …. manager: “hi guys” … crowd: “hi” …. silence … everyone comes back to their desks…

You might be thinking: I’m a cool guy that will not happen to me. Assume it, you might be the coolest guy of the world, but there are always conversations where you don’t want your manager in. Therefore as a manager you are not part of the party anymore, you are the one who creates uncomfortable silence, you are on the “dark side”.

You have to be prepared for that change, because you are not an employee anymore. As a manager you are now an ambassador of the company.

 

Independent. Likes to accomplish things on their own.

This one is the classical “delegate” talk. New managers think it is easy to delegate, I mean you just have the delegate the duties and that’s all, isn’t it?

Delegate is probably one of the hardest things to master, you have to know what to delegate, because you can’t delegate all the duties. You will need to keep doing yourself many things and it isn’t easy to identify where is the barrier on what to do and don’t do.

You have to choose the right person to accomplish the work being fair with all the members of your team, you can’t give always the complex tasks to the one who solves them faster or the easy ones to the newbies. If you do it you will have one member of your team always stressed and the rest of the team will not develop their abilities appropriately.

When you delegate a task be clear on what to do and don’t expect the people will accomplish their duties in the same way you will do it, especially when you work with senior teams.

In my opinion one of the keys to know how to delegate and be satisfied with the results obtained is to define properly the “what”, the “why” and “when” needs to be finished, but just let the people decide “how” are they going to accomplish the task and follow up with them on the progress.

You won’t know if you are delegating properly in your daily work, you will know it when you are under high pressure. It is under pressure when we want to resolve the things ourselves.

 

Inability to get along. Poor interpersonal skills prevent the manager from effectively leading people or teams.

Another common reason of failure is the lack of poor interpersonal skills, soft skills or people skills. These are the ability we have to communicate with people.

I don’t want to make it too long, we could talk during hours about inspiring teams, win their loyalty, non-verbal communication, active/passive listening and more…there is lot of literature about this.

In this point, I just want to stand up that it is extremely important to be a great listener, but also to be self-conscious of what you communicate and the words you select to communicate. Let me explain you one of my biggest mistakes around that. Once I read (sorry I don’t remember where) that the higher you are in the hierarchy the more your suggestions become commands. I was having a conversation with one of my project managers about the issues we were having with a vendor, we talked long and deep about how to face and solve the issues. After three hours meeting when the project manager was leaving my office I said something like “these guys are driving us crazy, if they annoy you we should just cancel the contract”. I swear I was joking, I was smiling when I said that … and do you know what? My project manager cancelled the contract, one week later I had on top of my desk an attorney letter requesting to pay the reparations fee for cancelling the contract without respecting the terms. I won’t explain how much money that stupid joke did cost us.

Key learning: Be very cautious on what and how you say things.

I have also good examples of really nasty results because of not listening properly, by listening I don’t mean hear words and understand them. I mean also receive and process all the messages people transmits with their behavior. 

 

Failure to adapt. Flexibility is crucial.

Lot of managers have success at the beginning of their careers, in a specific company or using a concrete method and they insist ad nauseam applying the same formula over and over again, when what you have to do is adapt to the environment, to the team, to the market conditions…inability to adapt and lack of flexibility are great ingredients in the recipe for failure.

The entire world has been based on natural selection, discarding those members of a population who where not able to adapt on time. I link you here an article related to the failure to adapt quickly and effectively to a changing business environment. “Three change management lessons from the dodo bird!”

 

The “Me Only” syndrome.

This point makes reference to the people who just considers a management career for their own recognition, something that will have obvious negative consequences.

These kind of managers are more worried about the kind of recognition or visibility they will get, how many money they will earn or how fast they will climb the hierarchy…they are damned to death from a career point of view.

A manager position is not all about yourself, you must be a team player and work towards the recognition of the team, not only your own recognition.

If you take all the credit for what you achieve together with your team, your team will leave you alone.

I honestly haven’t seen this behavior too often in the companies I’ve worked, the only time I had to work with a ladder climber he was catch pretty soon and his career was interrupt quite fast.

 

Fear of action.

Managers can fall into the “analysis paralysis” and want to examine all the details before taking any decision.

I have seen this problem and variants of it quite often, they are normally motivated by different things:

  • Many people has so much fear to fail that they invest excessive time analyzing every single point of failure, studying the possibilities from every angle…
  • Forget perfection. I had a manager who always said “perfection is the enemy of good”. We all want to be great, to be perfect, but unfortunately it is just not possible to have all we want at the first shoot. At a certain point you need to set a limit you should not overpass.
  • Not having a deadline. Deadlines are not defined to stress us, but to achieve something at the right time. If you don’t have a deadline, you will not feel the pressure to finish anything.
  • Not taking hard decisions. This is something I really dislike about certain managers, there are situations were hard decisions need to be taken. Remember that, whether you like or not the manager position doesn’t come only with higher salary, it comes also with higher responsibility.

Fear of action and any of their variants have always the same consequence, not being able to accomplish your goals and tasks at the right time.

 

Inability to rebound. 

As a manager you have to take decisions, taking decisions means take certain risks and with any risks you have an amount of success and failure.

As I said at the beginning of the post, all managers have something in common: We all fail or do mistakes.

Now you are lucky because you already know you will do mistakes, so be prepared to rebound appropriately. Managers who don’t rebound tend to blame everything and everyone before trying to understand what they did wrong.

On each mistake or failure, don’t think the entire universe is against you. Reflect on what steps drove you to failure, be self-critic, do retrospectives with your team, accept criticism and feedback.

Good managers take ownership of their mistakes and learn from them, big part of your experience and seniority will depend on what you learn from failure.

 

Fear of Building a great Team.

The last point I wanted to talk about is the fear of building a great team.

I have seen a couple managers during my career that were not hiring the best talent for their teams, this insane behavior is normally given in managers with low self-esteem and highly insecure.

This kind of manager thinks he has to know everything and better than their direct reports to be always over them.

It’s obvious that you can’t know everything, so try to find the most talented people you can, don’t be afraid of hiring people who is better than you and work always to have someone in your succession plan to facilitate your own development and progression.

I want to finish this point with a great quote of one the best managers I’ve ever had. “You are as good or bad as it is your team”. Therefore, get the best people you can to work with you.

 

There are much more reasons to fail, so at least do your best to avoid the common ones.

Innovation is all around Microsoft

Microsoft is an innovative company, that’s something we all know.

It invests+$9 billion yearly on research and development and it would be impossible to list all the products, projects and activities related to it. Probably some of the most well known are:

But there is much more than this, in fact I don’t joke when I say innovation is all around Microsoft. Being an innovative company starts from the mindset of its employees and we have multitude of activities in Microsoft that motivate employees and fosters innovation like the famous Bill Gates Thinkweek or other activities that might not be that famous, but are extremely inspiring.

gadgeteer_example

One example of it is the Science Fair, an internal event done at the Microsoft Campus where microsofties can show off their latest science projects every six months…more or less. Most of the projects demoed will never become public, some of them will be a new product or a new feature of current products, but nobody cares where it ends up because the real goal is just coding for the sake of having lot of fun. An example of a project presented in a Science Fair is the .NET Gadgeteer, a prototyping platform for small electronic gadgets and embedded hardware devices built on .NET Micro Framework.

Similar to the Microsoft Science Fair, the guys at Microsoft Research have their own annual3D Talking Head party: TechFest. The TechFest showcases some of the coolest projects from any of the Microsoft Research’s locations around the world. Researchers have the opportunity to share the technologies and projects emerging from their work. TechFest is open also to guests, so you can take a look at some of the Microsoft Research projects presented during 2011.

We have also an internal portal called ToolBox where all employees can build and submit the tools they develop, there are so many of them of all kind and flavors'. One you might know that made his first appearance in ToolBox is Mouse without Borders, a cool tool that allows you to handle up to four computers with a single mouse and keyboard.

Some of these things are done thanks to THE GARAGE, a community of employees who like building things in their free time and have a clear mantra: Do-ers. Not Talkers”. They are the group who organize the Ads Science Fair, the Office Science Fair, the Hyderabad Science Fair, the Enginering Science Fair, the Hardware Science Fair, the Everything Science Fair...

Again, this is not all. I wrote this post because now we are in the period of the Microsoft Next a year video contest, open to all the Microsoft employees, which pursues to identify the most innovative talents around the world with a very prestigious panel of judges. If you want to have an idea on what kind of videos are submitted, just take a look to some of videos that were submitted during the Microsoft Next 2011.

As you can see, innovation is not just funding research and development projects, innovation is a mindset that you have or not have. In Microsoft, innovation is all around.

How to use the Geolocation API

Geolocation is a new standard that allow us to identify where a user is located by the use of scripts within the browser.

Geolocation-example

This is particularly useful when we want to offer in our web app local information to the users. Some examples of it could be a web app that tells you where is the nearest bus station, a restaurant or just to know where you are when you get lost in the city. Something that by the way, happens to me a lot.

The first thing you need to know is that the Geolocation API just defines a high-level interface to access the geolocation information, but it is completely agnostic on the system used to obtain that geolocation information.

 

 

There are several ways to get the information like:

  • GPS
  • GSM/CDMA cell IDs
  • IP address

As you can already imagine the accuracy of the results will depend a lot on how the geolocation information is retrieved.

Now that we have a little bit of background, let’s see more in detail what the Geolocation API offer us. The API defines a new interface that is called, not surprisingly, Geolocation. This interface defines three methods:

//Used to retrieve the current geolocation, just one time.
void getCurrentPosition(
     //Callback to receive geolocation info
     in PositionCallback successCallback,
     //Callback to receive errors produced during the call
     in optional PositionErrorCallback errorCallback,
     //Options about the geolocation information to retrieve
     in optional PositionOptions options);

//Used to track the geolocation of the user.
long watchPosition(
     //Callback to receive geolocation info
     in PositionCallback successCallback,
     //Callback to receive errors produced during the call
     in optional PositionErrorCallback errorCallback,
     //Options about the geolocation information to retrieve
     in optional PositionOptions options);

//Used to stop tracking the geolocation of the user.
void clearWatch(
     //id of the watch retrieved with watchPosition
     in long watchId);

At this point you will have already noticed that the method getCurrentPosition does not return any value, this is because the API is asynchronous, so in order to obtain the results we need to implement a callback function (PositionCallback) that will be called once the method has the results.

The other two parameters are optional, they let us to define another callback function to receive any error produced while calling the method and the different options to configure the geolocation information that will be retrieved.

Before we proceed to implement a real example let’s examine the rest of classes used in the API:

// used to receive successful notifications about position requests
interface PositionCallback {
    void handleEvent(in Position position);
}

// used to receive error notifications about position requests
interface PositionErrorCallback {
    void handleEvent(in PositionError error);
} 

// used to specify the options about the geolocation information to retrieve
interface PositionOptions {
    // by default false. Indicates you want to obtain the information with
    // the best accuracy available, even if that consumes more battery or
    // means slower response time.
    attribute boolean enableHighAccuracy;
    
    // expressed in milliseconds
    long timeout;

    // expressed in milliseconds. Indicates you accept a cached value
    // no greater than the specified time. If 0, acquires a new position
    long maximumAge
} 

// used to obtain geolocation position information
interface Position {
    readonly Coordinates coords;
    readonly DOMTimeStamp timestamp;
} 

// used to obtain errors while requesting geolocation information
interface PositionError {
    const unsigned short PERMISSION_DENIED = 1;
    const unsigned short POSITION_UNAVAILABLE = 2;
    const unsigned short TIMEOUT = 3;
    readonly attribute unsigned short code;
    readonly attribute DOMString message;
}

// used to obtain the geolocation position details
interface Coordinates {
    //specified in decimal degrees
    readonly attribute double latitude;
    //specified in decimal degrees
    readonly attribute double longitude;
    // specified in meters
    readonly attribute double? altitude;
    // specified in meters and corresponding to 95% confidence level
    readonly attribute double accuracy;
    // specified in meters and corresponding to 95% confidence level
    readonly attribute double? altitudeAccuracy;
    // specified in degrees, denotes the direction of travel counting
    // clockwise relative to the true north (0º to 360º)
    readonly attribute double? heading;
    // specified in meters per second
    readonly attribute double? speed;
}

Now that we have all info we can start creating a real example, to test them you will need any of the modern browsers that supports this feature like Internet Explorer 9.

<!DOCTYPE html>
<html>
    <head>
        <title>Geolocation example</title>
        <script 
            type="text/javascript" 
            src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0">
        </script>
        <script type="text/javascript">
            var map = null;

            function successCallback(position) {
                // we create the location for the Bing Map
                var userLocation = new Microsoft.Maps.Location(
                    position.coords.latitude,
                    position.coords.longitude);

                // we add the pushpin to the map
                var pin = new Microsoft.Maps.Pushpin(userLocation);
                map.entities.push(pin);

                // refresh the map centering the view on current location
                map.setView({ center: userLocation });

                showMessage("Your location is: " + userLocation.toString());
            }

            function errorCallback(error) {
                var code = error.code;
                var message = "unknown error";
                switch (code) {
                    case 1:
                        message = "permission to geolocate you has been denied";
                        break;
                    case 2:
                        message = "position is not available";
                        break;
                    case 3:
                        message = "geolocation request timed out";
                        break;
                }
                showMessage(message);
            }

            function showMessage(message) {
                var div = document.getElementById("message");
                div.innerHTML = message;
            }

            function getMap() {
                // replace with your own Bing credentials
                var mapOptions = {
                    credentials: "YOUR BING CREDENTIALS",
                    center: new Microsoft.Maps.Location(40.42, -3.8),
                    mapTypeId: Microsoft.Maps.MapTypeId.road,
                    zoom: 16
                }

                // we create the Bing map with a default position
                map = new Microsoft.Maps.Map(document.getElementById("map"), mapOptions);

                // if the browser supports Geolocation we do the request
                if (navigator.geolocation) {
                    var options = {
                        enableHighAccuracy: true,
                        timeout: 2000,
                        maximumAge: 0
                    };

                    navigator.geolocation.getCurrentPosition(
                        successCallback,
                        errorCallback,
                        options);
                }
                else {
                    showError("Your browser does not support geolocation");
                }
            }
        </script>
    </head>
    <body onload="getMap();">
        <div id="map" style="position:relative; width:400px; height:400px;">
        </div>
        <div id="message"></div>
    </body>
</html>

In the above example we have seen:

  • how to request the position of the visitor who is accessing our web page
  • how to load a Bing map using the Bing Maps API and set a pushpin in the map indicating our current location
  • how to handle the errors in the case the geolocation information could not be retrieved.

Nokia Lumia 800

A week ago I bought the new Nokia Lumia 800 and I can already say I love this device.

nokia-lumia-800

 

Once you open the box you will see the phone comes with a soft cover in the same color of the device, people who knows me know I hate covers but this one fits perfectly and I’ve decided to use it myself. You can see the phone with and without the cover in the figures below.

Nokia Lumia 800 with soft cover

Nokia Lumia 800 with soft cover.

Nokia Lumia 800 without soft cover 

Nokia Lumia 800 without soft cover

Another nice surprise is the fast USB charger, instead of having the traditional AC/DC adapter you will find as a charger a small circular piece with a diameter just a little bit bigger than a coin. You can compare it below against 2€, a quarter of dollar and fifty pence.

Nokia Lumia USB charger

The design of the phone is simply gorgeous and solid, the case is built in a single piece of polycarbonate that gets emptied and filled with all the electronic in a later phase. The screen, a very stylish Gorilla glass, is a curved 3.7” capacitive AMOLED with ClearBlack that redefines the concept of the black color.

The Nokia Lumia 800 comes equipped with a 8 megapixel camera with Carl Zeiss optics that provides you with a resolution of 3264 x 2448 pixels, a 2x LED flash, F aperture of 2.2, minimum focus range of 10 cm and focal length of 28.0 mm. The camera also allows you to record 720 HD video.

The phone has other goodness like:

  • GPS
  • WIFI
  • Bluetooth
  • 2 microphones
  • 3D accelerometer
  • Magnetometer Sensor (compass)
  • Proximity sensor
  • Ambient light sensor

You will see some haters say the phone doesn’t come with a dual core and they use it as their argument to dismiss the phone, a dual core is completely useless today in Windows Phone 7.5 devices as the OS is extremely fast and fluid. The single core Qualcomm MSM8255 with a clock rate of 1400 MHz makes the phone and apps perform much better than several dual core devices.

As I said above, the Nokia Lumia 800 comes with the Microsoft OS Windows Phone 7.5 aka “Mango” installed. The OS offers you out of the box among many other things:

  • Microsoft Office Mobile: It allows you to work with your Excel, Word, PowerPoint and OneNote files. Thanks to SharePoint Workspace you can also access to your corporate SharePoint repository.
  • Xbox Live: You can play games with the advantages of the Xbox Live network like achievements, manage your friends and messages, etc.
  • SkyDrive: To have your files synched/backed up in the cloud (25 GB of free space)
  • Zune: To have your music and videos downloaded, streamed or simply synched on the phone
  • Social Networks: Have your LinkedIn, Facebook, Twitter and Live contacts as any regular contact, see their updates, etc..

In addition to this, Nokia has included some exclusive apps like Nokia Music, Nokia Maps and the impressing Nokia Drive that allows you to reach your destinations by car using cartography that can be downloaded, free of charge, for virtually the entire world.

Just to finish you will like to hear that the battery lasts for:

  • 9.5 hours for 3G talk time
  • 335 hours for 3G standby time
  • 55 hours for music playback time
  • 6.5 hours for video playback time

Did I say I love the phone?