Platform Peril
In the real world, I’m a software developer at an almost-small (300-person) business in Wisconsin. I’ve been working with C# for about a year now. Before taking this job I had been mostly toying with various languages, not really knowing what I was doing because I wanted to try everything. A little bit of VB to start with, then PHP, then Ruby, Java in a college class, and just as I was looking at Objective-C I got the job where I’m at now.
Since then, the job has taken priority, and at home I’ve had a much harder time staying interested in my own projects. Transponder is probably the best Windows Twitter client out there already, but I’ve had no motivation to try and fix the bugs, given the utter misery that is the Windows application market and Twitter’s developer-dismissive stance1. I have another application that is basically ready to go on Windows - I’ve been using it for months with no stability issues - but I’m afraid to release it.
The thing that scares me the most is support. If there’s bugs, I need to address them, and I may have other things to do. I had a Tumblr theme I made featured a year ago, and when I wasn’t able to come up with adequate fixes for the issues other people were having, it got taken down and I felt miserable. It feels terrible when something you do just doesn’t live up to its potential and you missed your shot at making it great. Now, granted, this is a free Tumblr theme, so there’s no sense in being over-dramatic about something that nobody really cares about. Still, however, it’s not an experience I intend to go through again, and so that factors into what I’m doing.
Another thing that I’m worried about, however, is that the platform I know the best is the platform I’m least certain of. Classic Windows applications, like Transponder up there, are going to be obsolete if Microsoft has anything to say about it. Yet, I fear modern Metro applications are going to be tossed aside for those obsolete apps if the users (especially corporate users) have anything to say about it. Furthermore, both platforms are terrible choices because Windows 8 isn’t out yet and nobody buys Windows 7 apps.
Despite all that, though, I think C# is pretty fun to work with. I’m well aware, however, that I’m biased because that’s all I know how to work with right now. I’ve dabbled in other languages, but I can get things done with C# and that’s what’s so great about it for me. However, Windows is a platform filled with holes just big enough that all of the little developers fall through and drown. What platform do I want to be using, writing for and supporting in the next few years?
Do I program with what I know, and stay on a platform that I know, or do I try as hard as I can to get on the most successful track and make an iOS app with Objective-C? Or do I take the hazardous approach of doing a web app, and thus getting to learn all about server administration? That’s not so fun. Or, do I cheat and use MonoTouch and make an iOS app with C#?
I like what Microsoft did with Windows 7, but I still like OS X a lot better, and I don’t have much faith in Metro working out for Microsoft. After all, where are all the Windows Phone 7… phones? They’re nothing but Metro and haven’t gone far. I also know very well that I actually have a shot at making some cash on iOS, and I could use some supplemental income. Of course, it’s not guaranteed, but I think it’s something people would be willing to pay for - I know I use it all the time and I can’t be alone in being a potential customer.
The idea of going with MonoTouch is as appealing to me as it is revolting. You’re not only putting your app on the line with Apple and its review process, but with a third-party framework provider and a third-party development platform. On the face of it, the idea sounds terrible. And yet… I could make an application with a backend that I can actually understand! An application that I could theoretically build more quickly and get paid for more quickly! An application that, when building it, I can call for help on because I know other C# developers to ask. Also, there are lots of compelling reasons provided by this Stack Overflow commenter that also make me very tempted to try it.
So… I’m torn. It’s not the right way to do things given a clean slate. But MonoTouch might be the right way for my situation. Also, might it help ease me into a true Objective-C workflow one day… hopefully the day before MonoTouch is rendered useless by (insert bad business decision, polarizing Apple policy or insurmountable technical hurdle here).
On the other hand, the app is, in theory, really simple to do. I should know, I’ve already written it for Windows. It should in theory be something that I can pick up on pretty quickly after getting my feet on the ground in the Obj-C world.
Perhaps the only smart decision is to release my Windows app as a full release and hope it sells. I mean, how hard can it be?
-
Dismissive isn’t the same as hostile. They aren’t discouraging development but they made it clear that it’s Twitter’s way or the highway. This article explains it way better than I can. ↩