So, this is ok if the payout in 4. is sufficient compensation for the existence and effort you put into the company.
If, 4. is a desperation move, and you're hoping bigco is going to help your company reach heights you're unable to reach on your own, then you're rolling the dice.
I've had exactly this experience. The founders expected BigCo to take them to new heights, but eventually bigco dismantled the company piece by piece.
Literally the economic winds changed slightly, success wasn't immediate and so the BigCo CEO got all excited and went off chasing something new and shiny.
Learning moment: developers can't be wedded to a particular technology. Qt is fantastic but it's not the business. We can't invest ourselves in companies that are floundering and Nokia has been floundering for a number of years.
If you find yourself investing your talents in a company that has multiple directional changes you need to consider the likelihood that the company will ever return to good times.
if you develop for Palm WebOS, you're relying on company whose main business is selling printer ink.
Yes, I would not develop for WebOS at this point.
if you develop for Android, you're relying on company whose main business is selling ads
Yes but you are helping them to sell ads.
if you develop for iOS, you're relying on company whose main business is selling audiovisual content and portable players for it
Yes, but you are adding value to their main product.
then Microsoft IS the only company that you can rely on, since it's primary business is selling software?
I don't think so. In markets where Microsoft does not have a monopoly it has been quite willing to change directions irregardless of its impact on developers. For example Silverlight. In markets where they do have a monopoly well they have a monopoly. You can make money serving that monopoly with consulting but you can't do much with independent products.
How about all the .Net developers out there? I'm one. Although I don't have time right now, from now on Windows on Nokia platform will be the native choice for me when I have time to play with it.
It's even better than MS + HTC or something. Being on Nokia has better visibility, especially in the eastern side of the world.
For Nokia, some Qt guys making the change + .Net ppl can't be smaller than than the current developer base.
nokia is virtually non existent in korea, pulled out of japan, and is getting eaten alive in Indonesia by chinese phones, malaysia is building a wimax/android 4g ecosystem. and iphones are _everywhere_.
I cant imagine anyone switching to Silverlight now, its already dying, as MS have admitted, they only cant kill it before they release HTML5 for WP7 later this year.
Silverlight on the web is dead, but MS is pushing it hard as a local app platform, and for business applications. In those segments, it's far from dead.
I can see Silverlight perhaps finding a niche in internal application development - but that's a pretty big come down from the original goals of the technology (i.e. a Flash killer). So wouldn't that make Silverlight, if not dead, severely wounded?
It would mean Microsoft has realized that competing for Flash's position is not worth the fight, effort or money as Flash and its position in general (plugin-based web-solutions) is losing grounds every single day. They are not willing to fight a battle which will eventually be lost anyway.
They are simply refocusing their efforts to get Silverlight (which is a pretty good piece of engineering IMO) put to use elsewhere.
As far as I can see, that is a pretty good strategic decision.
It's another way of running rich functionality in a browser. It might be advantageous in some situations to solve uncommon difficulties with distributing UIs. It won't necessarily be a tool for the common case.
Er,its liking comparing Flash with Amazon EC2, I'm sure you're thinking that Azure is something else
Silverlight and Azure are different things, but they're both marketed towards developers who would like to take functionality, much of it in the form of internal apps, and make it accessible on the web or otherwise over WAN. I know this, because some Microsoft folks were pitching Azure to me just yesterday!
Yes, things don't make sense if you're stuck on "compete = comparable." A little reflection, and you should realize this isn't a very good assumption. (Teleconferencing and airlines, anyone?)
Teleconferencing and airlines solve a common problem, but what common problem do Azure and Silverlight share? They've got basically nothing to do with each other, except for as you say, that they're marketed at developers (?)
On iOS C++ is generally only used when you don't need to make much use of the Cocoa Touch APIs. If you do, you will be using the hybrid 'Objective-C++' language, and you will still need to use some Objective-C.
Because Objective-C is far from being an horror language, but perhaps your impression (and so mine) is conditioned by your past experience with your languages of choice.
I'm probably being unfair, I've never actually done any development in Objective-C (I have in C++), so I'm going on how it "looks" from the code I've seen, I just find it very unreadable. But in fairness I haven't tried to get into it, and I'm probably biased toward the C#/Java style syntax...
Cocoa is an incredible API. Much more pleasant to work with than Qt, hands down.
The runtime method dispatch of Objective-C (protocols!) makes it possible. Basically Objective-C gives you what Qt had to kludge in with qmake/moc. And it's still pretty fast!
When I see how little code I have to write to do something basic in Cocoa/Obj-C, and how well it turns out, any problems I have with syntax go out with the window.
Your initial reaction to Obj-C is not at all uncommon amongst developers used to C++/Java/C#. My impression is that most of them quite like it once they get past the novelty.
As a counterpoint I've written ObjC code for over 5 years for Mac OS X and iOS, and I'm not a fan. Sure it's better than C++, but that should be in the dictionary under "damning with faint praise". Header files, primitive types, and reliance on raw pointers should have gone out 10 years ago. The kicker was when I switched to Android development last year; when a language makes Java look comparatively elegant and concise, that's not a good sign.
I neglected to give more than a cursory glance at Obj-C back when the iPhone 3G and app store first came out. I hugely regret it now, but I was doing C++ at the time and thought it was the cat's pajamas.
If you can think abstractly and use/like languages like Ruby and Lisp (and their reflection/metaprogramming features), I think you'll be surprised by the amount of stuff you can do at runtime in native code. I started doing Obj-C a week ago and am about to submit my first free, 90% custom-drawn control app to Apple for approval.
Yes, the syntax is initially unappealing, but you get over it after about a day. On top of that, Xcode + Interface Builder is the best GUI dev environment I've used yet.
Back when Java was my favorite language, I was once challenged to spend an hour looking at Objective-C and see if I didn't grok it in that time period, and then a week working with Cocoa-- and was promised that I'd love it if I did.
They were right.
I still believe Objective-C, paired with Cocoa is far and away the best programming language and environment out there. I've worked on the internals of windows, lots of C++, lots of Java (used to be my favorite), done .net, done a bunch of scripting languages, python, perl, lingo and actionscript, and lisp and erlang.
On the server it should be erlang (for serious code, for less serious use your favorite script)... and on desktop and mobile, Objective-C and Cocoa are really quite spectacular.
This is my experience too. I resisted learning Objective-C very much, and tried to avoid learning it via MacRuby. But once I actually resigned myself to really learning Objective-C, I really enjoyed it.
Like Ruby/Python it has a specific style that gives you a different perspective than other languages. I now find myself using ObjC style-isms in other languages.
I think people find a language they like- maybe their first language, or one of the first couple- and then it is really hard to be interested in everything else. If you can't read it right off the bat, it "sucks".
This is how I felt about erlang. But the importance of concurrency was so high to me that I forced myself to learn the language, and now I love it.
A couple times learning a new language after being annoyed that it isn't like the language you already know, and I think people might recognize that every language has a reason for being....
They have very different programming models, think Simula versus Smalltalk. You can use the two-headed beast that is Objective-C++, but there's varying levels of compatibility between the languages (in the 64 bit ABI, they share exceptions, in the 32 bit, they don't) and other various oddities they essentially mean they still remain two separate languages that have been kludged together.
I think Nokia even relicensed it under LGPL (http://qt.nokia.com/products/licensing). And Qt is made by a Norwegian company, and as far as I know at least the Norwegian patent office doesn't grant software patents. They might have patented it in other countries, though.
Makes me happy. Would be sad if a nice (commercial with GPL option) product had ended up as unusable for everything but GPL-ed applications.
I don't hope so either. Although GTK is starting to look pretty nice with version 3, I've always preferred QT from both a a programming and UI perspective.
Nokia seems truely cluesless.. every day, another strategy
SE, Samsung, Motorola, HTC are all heavily invested in Android and are miles ahead of Nokia. They can chose to run an outside lane in that race, or they can lead up Windows Phone 7. All people with WP7 devices are just token efforts, Dell, LG aren't major players like the aforementioned companies are, HTC owe everything they have to Android. Nokia can take WP7 and become the market leader, with Microsoft investing heavily and Nokia providing world class hardware they can provide a point of differentiation as opposed to becoming one of the crowd.
I wouldn't say Samsung, Moto, and HTC are "miles ahead of Nokia". They're running essentially stock Android with crappy tack-ons that nobody cares for (when's the last time any OEM's take on Android has received praise instead of complaint?), being glacially slow with updates...
With stock Android as a starting point and, well, a clue, Nokia can easily overtake Samsung, Moto, and HTC. Just by keeping good time with Google's own updates, and developing a customized Android UI that doesn't suck, Nokia can pull ahead.
That being said, I think the WP7 choice isn't a bad one. At MS Nokia would be customer #1. At Google Nokia would be just another OEM.
Android is growing, but it's hard for carriers to differentiate themselves on top of it. The carrier UIs (other than Sense, perhaps) tend to be dislike versus stock Android, so that makes the only way to stand out on Android seem less attractive.
Assuming you mean "manufacturer" when you write "carrier", I think they can very well differentiate themselves by building the best devices (better screens, better battery life, better reception - well that would be the carriers, lower price, etc, etc).
No native code on WP7 is for me a major downturn. To port my apps to WP7 I'd have to do a complete rewrite - and that's work I won't do for an unproven market/platform.