In this article I would like to sum up my subjective opinion about windows phone after using it for 4 years. To address as many people as possible (and maybe some Microsoft employees which are in charge of those products) this article is written in english. This review is separated into two view perspectives: A consumer and a developer one.

Consumer

Windows Phone 7.0/7.5/7.8

As a newbie on a smartphone I didn’t know that there are features which Windows Phone does not support yet. Basic and essential features like: Copy + Paste or a mobile hotspot. Only after some updates a „mobile hotspot“ was available while connecting your phone with the USB cable to the PC. But thats not all. You were not able to adjust the call volume and the app volume seperatly. Or to disable the vibration. Or to block incoming calls. On top of that, you couldn’t even use your phone as a flash drive. To upload music to your smartphone, you had to install Zune to get this done. I am one of those users, who doesn’t want to install unnecessary, space and CPU consuming software on his PC. So Zune was always a thorn in my eye. To offer such a software isn’t wrong or bad practice, but shouldn’t be forced. Other features I was missing back then

  • Multitasking
  • VPN
  • Removable SD card
  • Home-Screen Background

The essential features arrived from time to time but always felt like Microsoft is not putting much effort in it. Instead of collecting all essential features and rolling them out in one single update, they tend to roll out very small changes to keep their users calm and satisfied. Microsoft arrived late to the smartphone party and brought, instead of a fully functioning breath taking OS, a piece of unfinished software which could never compete against Android and iOS.

Windows Phone 8.0/8.1

Microsoft announced Windows Phone 8.0, which was not compatible with Windows Phone 7.0 devices. (Why?) I guess there were several Kernel based changes which didn’t support the elder CPUs. (But since I have no deep knowledge in here, I only can make assumptions) They did clearly piss of many users, because you only have two options: Buy a new phone or run out of updates. You still received the 7.8 update, which had the appearance of Windows Phone 8.0 but was, of course, missing all the new features.

So I decided to give Windows Phone another shot and buy a Windows Phone 8.0 Device. I liked how I could put more tiles on the home screen, creating folders and setting a custom background. But all in all I felt betrayed. Was it worth to pay 400$ for such small improvements? Apple and Google continued releasing awesome mobile OS versions with awesome new features. On the other hand Microsoft. They tried to keep their head above the water line to avoid drowning. Missing features in Windows Phone 8.0

  • File Manager
  • Notification Center
  • Disable auto rotation
  • Video calls
  • Quick access to WLAN/Bluetooth/….

Luckily Windows Phone 8.1 started to save my day. Notification center, Quick access, Swipe Keyboard, Cortana, Lockscreen adjustments, File Manager etc. From that point on, Windows Phone became a handy and productive device. If Microsoft would had launched 8.1 right away back in 2013, the user and developer base would be different nowadays.

Windows Phone 10

And again. Another version of Windows Phone which is not supporting all devices which could run Windows Phone 8.x. (Even thought Microsoft did announce that everyone will receive an update to 10) At this point I was struggling thinking about a new Windows Phone. But my inner fan boy won the fight and forced me to buy a Nokia Lumia 930.

Windows Phone 10 was and is still the worst of all Windows Phone versions. Right after the release it was unstable (I experienced many crashes), extremely laggy and the UI froce on daily basis. I am not talking about apps, I am talking about the OS itself. Microsoft tried to create one single OS which looks and feels the same on all their devices. (XBox, Tablets, Phones and PC) Basically a nice idea, but the implementation was poor. The setting’s app does not provide a back button, the search bar only returns results if the search term hits the exact expression, apps have to reinstall after every update, the battery was draining twice as fast,…

One of the most bothersome approaches was the permanent feedback prompt. Out of nowhere feedback popups interrupt your productivity process and asks for your opinion. (There is already a feedback hub. Why forcing all the users for their feedback?) That once happened while I was driving and using the phone as a navigation system. Great, right?

Consumer conclusion

The Windows Phone OS started with many backlogs, but could reestablish itself very nicely after years. But there are still many features missing and the usability still leaves a lot to be desired. Because I am a follower of Gabe Aul, Dona Sarkar and an active Windows Insider user, I always received updates and news right after they found their way into the web. I was reading posts daily, writing feedback in the insider hub and even posted stuff on twitter to help improve Windows Phone as much as possible. Even if my voice wasn’t heard all those years, I felt to write a review why Microsoft could have failed to establish them self into the mobile market section.

Developer

Because I develop iOS, Android and Windows Phone applications, I do own several devices, which allows me to compare all those systems open minded. Till 2017 my personal privat phone was always a Windows Phone. Because of all the reasons mentioned above and also because of several developer side reasons, I switched to Android some weeks ago. In this category I would like to sum up all my Windows Phone development experience and point out possible improvements.

XNA EOS

Everything started with a mobile game for Windows Phone 7.0. Luckily I was already aware of XNA and was very happy to see that XNA was not only supported by Windows Desktop. When it comes to game development, C# maybe won’t be the first choice for many companies. But as an indie developer I want  to start right away with the game development process, without considering low level rendering stuff with OpenGL or DirectX. Unfortunately Microsoft shut down XNA and announced the end of support. How should I develop mobile games for Windows Phones now? Directly with C++ and DirectX? That wasn’t a solution for me, since I personally focus on C# and won’t let all those syntactic sugar go away. MS recommended to use HTML5 or Silverlight, which is, honestly, not suitable for game development at all. So again. Microsoft offered two solutions: Start with C++ and DirectX or …. go and fuck yourself. XNA was Microsoft trump card. Compatible with mobile/desktop/xbox and using their own powerful language C#. I still don’t know why Microsoft quit developing that framework. They forced me to switch to MonoGame.

Silverlight

When it comes to none game app development, Silverlight was the first instance to start with. At the beginning many default controls like Date or TimePicker were not part of the framework. Many people came up with their custom implementation. And this is one point I can’t really understand. Microsoft already used those controls in their own system applications, but didn’t offer them to external developers. (Why?) Developer friendly? Surely not. The best of all was the missing System.Net namespace. There was no support for Sockets. If your application wanted to fetch data from a server or other users, you had to create an HttpRequest.

WinRT

Times goes by and Windows Phone 8.0 was released. When you start building an application for WP8 you could choose between a Silverlight and a WinRT application. First of I was confused, since I didn’t see much difference in the development process. So I continued using Silverlight, because I was already familiar with all the controls, animations (Blender) and the application flow. While searching on StackOverflow for some occurring problems, I recognized that some namespaces were missing in my application. After some additional search effort I realized, that those namespaces were only provided in WinRT. So I started to port my app from Silverlight directly to WinRT, realizing, that all my .xaml didn’t built anymore. Many dependency properties changed and class names were different. (Why?) Wouldn’t it be better to offer exactly the same classes for Silverlight and WinRT and additionally offer more functionality? In that case porting would be much easier and tutorials wouldn’t be bound to just Silverlight or to just WinRT.

UWP

With WP10 Microsoft came up again with another new technology. The Universal Windows Platform. Again a new technology, again new namespaces, again new controls,… Again no backwards compatibility. The „.net for Windows Store apps“ Framework itself is, in my opinion, a huge cutback. As a developer I wish to access the whole .net Framework on all platforms. (Looking forward to .net core) But the Framework is very limited, lacking a lot of classes. Want to alter the default Windows Size? You can’t. Want to change the Window Color? You can’t. Want to implement your application based on precompiler statements for phones and tables? You can’t. (Officially) The list goes on and on…

.net native tool chain

To submit an UWP application to the Windows Store, the application must be compiled with the .net native tool chain. So far so good. The only problem I had and sometime still have is, that compiling with .net native tool chain takes far longer than normal. Plus, debugging gets really hard, because the written code gets translated to C++ and possible occurring exceptions only contain some magic memory addresses. Instead of the promised performance improvements, the cross compiled application starts to lag. Even some Microsoft employees were not able to solve that problem. Their answer to my performance issue with the .net native tool chain was: „Simply use fewer animations“. Sooo I switch from WinRT to UWP using the .net native tool chain with the expectation and promise for a better performance to actually end up with fewer animations? I ended up to publish the app with WinRT for WP8.x and 10.x.

Sandboxing

One reason which always grinds my gear is the economy of the mobile system. As a developer you have zero access to the system itself, which already shortens the application store to a total minimum. Many productivity apps you can find on iOS or Android store can’t be published on the windows phone store for that simple reason. You just can’t implement them.

  • No Access to emails/SMS/MMS
  • No Access to alarms
  • No Access to settings (WLAN/Bluetooth/NFC)
  • No Access to the lock screen
  • No Access to the home screen
  • No real background threading
  • No tile customization

And the list goes on. You basically have zero access to everything. All you can do is, operating in your app domain. That may be more secure, but that also means less possibilities for the app development and therefore, less apps on the app store. Long time ago I wanted to create an app which measures, based on the accelerometer and gyroscope on my Microsoft Band, the amount of water I consume the whole day. Because no app is allowed to execute code in background all the time (maximum 1 call every 15 minutes), I was not able to implement this app for Windows Phone. On StackOverflow a Microsoft Member answered:

So even Microsoft  points me to Android, instead of offering more access to their system. Only special privileged apps, like Spotify, are allowed to stream data in the background.

Compatibility

With such a small user base it is essential to support backwards compatibility. Whenever Google is releasing a new API they guarantee backwards compatibility to a specific API level. You could theoretically publish an app compiled for Android 7.0 also for Android 2.x devices. That is just insane and brilliant. How about Microsoft? UWP apps are not supported by 8.x or lower. WinRT is not supported by 7.8 or lower. Silverlight apps are not supported by 10.x or higher. XNA is not supported by 10.x or higher. So Microsoft forces the developer to create several projects for the own platform to support backwards compatibility. Which is, now negatively speaking, insane.

One day I received form Microsoft an Email, helping to port an WinRT to an UWP app. So, instead of supporting backwards compatibility by default, they offer a tool to convert the current project? And of course it did not work like a charm. After „porting“ the project with the given tool, I had to face hundreds of errors in my code. Simply because many dependencies were not compatible with UWP.

Developer conclusion

Microsoft releases one new technology after the other, without perfecting one of them. You could write a library for Silverlight, WinRT, Portable, Standart Library, Mono, Xamarin, and so on. All those things are confusing and get out of hand really quick. Just offer one Framework, which supports all the platforms and uses the whole power of the .net Framework. This is one of the reasons why no one wants to develop for Windows Phone. After every new OS release, the application has to be recompiled and altered to fit the new system requirements.

So, to the Nokia CEO and his statement

“we didn’t do anything wrong, but somehow, we lost”.

I would like to refer to some of my points above, which should clearly point out several reasons what they did wrong.