26 08 2015
Why I’m a happy Windows Phone Developer
In my last post I talked about what are the bad parts when you’re developing for the Windows platform, now I’m going to do the opposite and talk about why I’m a happy Windows Phone developer. I’ll also make some comparisons with iOS and Android, so if I say something that it’s not true, or maybe I forget something, please let me know in the comments section, I really enjoy feedback!
I’ll start with my favorite part:
My perfect setup looks like this:
It’s not fair to say it myself because I am a .NET developer, but I know a lot of developers who use various IDEs and they admit that Visual Studio is the best. Of course, I strongly agree with them.
It’s a must have if you do a lot of refactoring, especially if you do TDD(Red -> Green -> Refactor). It also has nice code completion and many helpful shortcuts. I’m using it for years and I can’t see myself coding in Visual Studio without Resharper, it makes a really big difference.
This Visual Studio extension is also available for Eclipse. I use it for tracking my productive time and seeing how much I work on certain projects/files or how much I debug compared with the time I spend writing code.
I don’t think I have to tell you what it is, just that if you need animations or making your UI adapt to certain situations, this is the right tool for the job. I also like that Blend for Visual Studio 2015 has a lot of improvements, if you haven’t done so, you should really try it.
I haven’t really tried developing for other platforms, but if I would be forced to do it, I would use Xamarin. I think there is a big difference between C#, Java and Objective C. I understand why Apple created Swift and they have my admiration for that, but Android should also get rid of Java somehow, it’s one of the worst languages in my opinion and for me it’s the only reason why I don’t learn to create Android apps.
For me, writing Java was like watching a three-legged dog. You know he’s going to get where he’s going, but it’s really sad to watch.
I learned Java for two semesters in college, and I worked as a Java developer for ~8 months. I wish I could say I miss certain stuff from Java development, but I don’t. I have to agree with Scott, Java just makes things harder to do.
Microsoft wants developers to create apps for the Windows platform, and lucky for us, they’re willing to give us free stuff or even money in order to do that. I think the most famous program is DVLUP. You can create a free account and you get points and XP for creating or updating apps. After you get enough points, you can spend them on Xbox subscriptions, Amazon vouchers, Windows Store gift cards, etc. It may not be much, but the real reward is that these challenges help you improve your apps. For example, there are challenges that require you to get feedback or ratings from users, and after completing this challenge I started to get a lot more feedback and ratings, and I also listened to the users and improved my apps(they have really nice ideas if you make it easier for them to send feedback).
If you’re more interested on the financial side, with points from DVLUP I bought some stuff like a new external HDD, bluetooth headset, phone accessories, and I even got a Lumia 735 from AdDuplex because I integrated their ads after finishing a DVLUP challenge. Pretty awesome, right?
One of the most difficult tasks for Android users is to create apps for all types of devices. In Windows apps, there are all kinds of mechanisms that allow you to create UI tailored for different devices and adaptable to different resolutions. The emulators have a lot of features and they run very fast. I installed Genymotion for testing some Android apps and I couldn’t open more than one emulator, which was slowing down my system a lot. With Windows Phone emulators, I can run 3-4 emulators with 8GB of RAM and my system is not slowed down.
I’ve seen the source code of Android or iOS apps, and I know one word that makes the Windows Platform better than them: MVVM(in case you don’t know, it’s an initialism which stands for Model View ViewModel). Without it, testing would be a pain in the ass, because you would have your logic mixed with the UI code, and I don’t think I have to explain how much time it saves with the data binding. Also, XAML vs XML, again, much better. Writing buttons in code is something you did in the ’90s, now everybody should evolve.
But wait, I know two more words that are a big advantage: async/await. I was a Node JS developer for a few months and I know the nightmare that callbacks can give you, and I specifically remember that I was searching libraries that simulated the async/await keywords. That’s when I learned to be very grateful for having them as a native part of C#.
That’s all I can think of right now. I write this article as a Windows platform developer, not as a user, so please don’t write comments like “Android has more apps” or “Apple creates better devices”, this is strictly related to the language and the tools used to create apps.