Android Fragmentation for Developers

localytics.pngThere’s a recent article at Localytics that tries to prove that Android isn’t as fragmented as many think. Unfortunately, the article only considers OS builds and screen sizes and this isn’t the whole story.

My personal experience is that different screen sizes are actually less of an issue when solely developing for just smartphone or just tablet. If the app is designed and written well, screen controls can automatically re-size to fit the available space. Graphics neatly fit (get automatically fetched from) the hdpi, ldpi, mdpi and xhdpi categories. However, here are just a few fragmentation issues that have impacted projects I have worked on…

  • Differing hardware – with/without keyboards and different hardware keys
  • Non Google Experience devices with different APIs
  • Differing APIs within an Android version, particularly with Contacts and Multimedia/codecs
  • Differing external storage with some having none and others even having more than one
  • Newer features (C2DM) not available on older phones or when Android Market isn’t installed
  • Features (Licensing service, in-app billing) only available via Android Market

More recently, complications also have come about due to the need to support smartphones AND tablet, adherence to the new Android design guidelines and supporting Android ICS. Although Honeycomb and ICS seem similar, I have come across some differences in the call order of commonly overridden functions that took some effort to resolve.

Also remember, as previously mentioned, Google’s platform version web page is only a snapshot of people who have happened to use the Android Market over a 14 day period (probably those with new phones) and isn’t necessary representative of devices currently being used.

Solid State Drives (SSDs) for Developers

ssd.jpgI generally change my hard drive (or more likely my PC) every 3 years partly to avoid sudden hard drive death in the middle of a project and partly to keep up with increasing demands of newer phone emulators. Used machines get recycled as servers or are used in my home. This time I replaced the HDD in my new PC with a SSD.

SSDs are hard drives made up of memory rather than magnetic platters. Until very recently they were too expensive for general use. However, lower memory prices now make them affordable. I replaced my development machine with one with a SSD over the weekend and instead of booting in 5 minutes (and being usable in about 7 minutes), boot time is now about 7 secs. However, most people rarely boot and, to be honest, SSDs are a luxury for most people. If you just web browse, read email and perhaps run say Word or Excel then you might as well use a conventional hard drive. Yes, these apps load slower but most of your thinking time is actually within the app. Even gamers won’t gain that much as performance is more about (3D) graphics than being able to read/write files quickly.

However, for mobile developers there are huge gains in being able to build complex projects quickly. There are even larger gains when repeatedly debugging and re-starting phone emulators. Many emulators are slow and in some cases without an SSD you need to go and do something else for a while while you wait for the emulator to start.

I spent a while researching SDDs. Here are a few pointers. Vertex are the fastest but the top end models need native SATA 3 that most motherboard chipsets don’t yet support. It turns out that going from a hard drive to any SSD gives such great gains that the additional difference between an average SSD and the best (Vertex 3) isn’t as significant. Also, it not just speed that matters. Viewing the forums, a large number of Vertex users had reported reliability problems. I wasn’t sure if this was just because more had been sold. As it’s for business rather than for fun, I didn’t want down time otherwise I’d have more productivity sticking with my hard drive. This led me to Intel who had fewer people with problems in the various forums. Additionally, Intel have also recently increased their SSD warranty from 3 to 5 years and there are some published low failure rates.

Another issue is wear. Each memory cell in SSDs can only be written to so many times (of the order of 5000 times for the latest technologies). The controllers in the SSDs average out wear across the unused portion of the drive and also maintain an extra memory area to swap out defective or worn cells. The controller also provides a wear indicator (value) so you can view wear over time. In practice, wear isn’t an issue as by the time your drive is worn you will have replaced it or the PC. There are also calculations that show that, with average use, an SSD is going to last a very long time anyway.

If you are mobile developer writing code, I think replacing your hard drive with a Solid State Drive (SSD) will be the largest performance step change you will probably ever make. 

Inexpensive, Keen, Mobile Developers

whatsonstage.gifIf you are looking for inexpensive, keen, developers you might like to use the technique being used by WhatsOnStage. They have reached out to their users to try to find someone passionate about Theatre/WhatsOnStage to help them take their web site mobile. If you are interested, you can benefit from…

"Given our limited resources, if you have major price-tag proposals, I wouldn’t advise spending too much time on them. That said, we don’t want to take advantage and we can – and will – reward success, particularly with the likes of sponsorship introductions and membership initiatives." 

"On top of all that, amongst the immediate non-financial benefits we can offer those who get involved are: tea at the Palace (theatre, not Buckingham), theatre tickets, complementary Club membership (for life!), an invitation to our 15th birthday celebrations, and unlimited bucket loads of passion and enthusiasm."

It’s a refreshing approach that’s different to the profit share schemes I often receive. Incidentally, if you are a developer who has been approached with a mobile app/web profit sharing model I’d decline if I were you. It’s obviously different if it’s partly your idea and you know the other party’s capabililities. However, if someone you don’t know comes along with such schemes then stay away to avoid disappointment. If they have an idea and no funding, they are invariably unable to successfully market or promote the finished product.

Back to the idea of involving your community, think about how you might use your existing audience (if you have one) to get someone to write your app/site. They will be much more keen and you might even get the job done free of charge.

What Now for Developers?

canalys.gifThere has been lots of media interest in the latest Canalys research that shows that Android has become the World’s leading smartphone platform (in Q4 2010). There has also been lots of speculation as to what Nokia CEO Stephen Elop meant when he said that "We must build, catalyse or join a competitive eco-system" and what will be in Nokia’s new strategy to be unveiled on February 11.

Speaking to my Symbian-specific clients I know all this has created lots of fear, uncertainty and doubt. What does all this mean? Where are the new opportunities for developers?

First of all, the Canalys figures show that Nokia did reasonably well last year and smartphone sales grew by 30%. The reason they didn’t maintain their no 1 position was due to the smartphone whole market increasing by 88%. This has all been due to Android’s scalable model of shipping via many phone OEMs. Apple, RIM and Nokia only ship their own phones and I believe they will find it difficult if not impossible to catch up.

There has been too much speculation on what will be unveiled by Nokia on the 11th February. What we do know is that Nokia has invested extremely heavily in Symbian, MeeGo and Qt and I personally can’t see them giving this up (yet).

So what now for developers? I think there are opportunities in Android to create middleware or services that help phone OEMs differentiate their phones. The more phones that are out there, the stronger need to differentiate.  

There are still opportunities to work on (and with) Nokia, even on Symbian. The shipping numbers are still large. Symbian will probably remain the underlying OS for Nokia’s smartphones for some time and they need clever technologies and services to differentiate their devices (Symbian and MeeGo).

I think the key thing is, like me, not to bet on one platform. Things change fast. Spread your bets.

Dearth of Mobile Software Developers

bloomberybusinessweek_2.gifThere’s an interesting article at Bloombery Businessweek on how Tech Companies are seeing a Dearth of Mobile-Software Developers

"More than half the respondents described the supply of quality mobile-software designers and engineers as ‘scarce.’"

From my side, as a developer, I think there are currently enough developers. If you factor in offshoring there are probably too many developers. At the extreme end there are few people who come to me with such exacting skills requirements (for example some deep technical niche on a particular platform) that they will never find anyone.

More generally, one of the comments within the article explains…

"Of course recruiters are not paid to retrain workers so they are only looking for the candidate that already has the required skills."

With…

"Almost 57 percent of employers and outside recruiters that hired for mobile-related jobs this year plan to boost such hires in the next 12 months"

… companies are going to have to become a lot more flexible and consider retaining their existing staff.