Keeping your code new – a dilemma

I’ve written a post on this idea from the perspective of your users, should you upgrade your app to the latest level of an operating system. I’ve even talked about how you learn by keeping up with the latest releases of API’s and interfaces. But what about the down side?

Traditionally large IT companies have forced operating systems companies to be backward compatible, so as not to lose the large revenue that they get from companies. Over the last few years, businesses have be even more cautious about upgrading hardware and software. This means that they are slowly losing influence on developer who want to create the next cool thing. Is this a start of the innovators dilemma for software developers? Do you still need to cater to the large support revenue you get from traditional enterprises? Or do you bite the bullet and develop new and radical solutions that move your user base to a new code base?

Sunday is coding time

As I’ve mentioned in recent posts, my day job is a bit overloaded lately. The good news is, after spending significant time working on Saturday, I discovered that I will not have my first thing Monday morning meeting. What that means is, today I get to code!

I’ve been struggling with inserting sprites between layers of a TileMap in my game. To that end, I’ve decided to go back and retake some of the classes I took early on when I first started coding for iOS. I realize that like many things, you need to spend time coding to keep some concepts in your mind correctly.

I’ve also picked up a few new tools to help in the game design, the main one being LevelHelper. This allows for integration of cocos2d and box2d for creating level based games. There’s a great tutorial by Ray Wenderlich on how to make a JetPack Joyride like game using levelhelper. I am hoping to play with this design to get my game designs jumpstarted.

What is your biggest challenge

I don’t have a lot of time to do my blogging, coding, and gaming… I have my day job which has been consuming more and more of my free time, including my time on weekends, and evenings. I bet many of you can relate to that, especially if you are doing mobile development in your spare time. I picked up mobile development a few years ago, as a way of getting back to the code. I’d been a developer many years ago, but as my career advanced, I started doing architecture, management, etc. The more I advanced the less I got to code.

Getting back to the code two years ago, was load of fun. It provided me with hands on experiences that many of my day job’s customers were dealing with. The ability to get back to this level of understanding has been invaluable. Having said that, I am also dealing with many of the challenges that customers and other developers are dealing with. A few of the ones I’ve been dealing with are:

  • Keeping up with multiple device characteristics. Even though most of my development is on iOS, I am still dealing with iPhone vs. iPad, normal vs. Retina. I can only think that adding android or Windows phone will compound that challenge.
  • Testing, and I don’t just mean the device problem. As a one person development team, I find that testing mobile apps to be difficult. I use the emulator to test as much as I can, but I also have to test on my devices. Of course, I don’t have all generations of the iPhone. To that end, I tend to force people to upgrade to “current” versions of iOS. This is probably not practical for most developers.
  • UX/UI design. I am not a graphic artist. So even though I have ideas, I can’t always visualize them. So things don’t look as good as I want them.
  • New toolkits. I am working on a game… Of course I am not an expert on all of the classes and methods within iOS, so adding a game platform library into the mix means I am even less of an expert. When should I use the toolkit vs. native? How to best optimize my apps performance

What are your biggest challenges?

How Fresh is your Code?

I was driving back from the gym this morning, I like to swim on Sunday mornings – I find it very relaxing to do a hour long swim and reflect on what’s the past week has been like. As I left the parking lot, I saw a major grocery store chain’s truck with the phrase “We do Fresh – the Best”. The problem with the giant graphic on their truck was that it was a sub sandwich (or a hoagie if you prefer). It consisted of bread, tomato, pickle, lettuce, ham, olives, and cheese. While the bread, tomato and lettuce could be considered fresh, nothing else on the side of the truck was. Pickles were at one time a fresh cucumber. The olives had been cured. The cheese, was at one time fresh milk. And the ham was also cured. So I guess fresh is a bit of a misnomer.

You may ask why I am writing about this (and yes, I gave away the story in the blog post’s title)? In this age of app stores with hundreds of thousands of apps, getting your app to stand out is more than just having a good / great app. It’s about getting and keeping customers. Let’s face it, your idea may be good, but it’s not hard for people to create very similar apps. (Think about Temple Run and the many knock offs that have come out based on it).

You can choose to expand your app via in-app purchases, and that makes a lot of sense for Freemium apps or those apps which have a defined functional domain that can be enhanced with specific features. But what if you created a utility app? It does one thing, and it does it well. How do you keep people updating it, and new users downloading?

Apple and Android are both coming out with newer versions of their operating systems multiple times per year. Try refactoring your code so that it takes advantages of newer functions. I did this personally with Wasted Time, when I replaced the Twitter code with the native iOS twitter features. Yes, this may cost you some users that are on older devices (or require you to have more complex code), but given the cycle time of people replacing their devices every two years this shouldn’t be too big of a worry.

Also, try reworking your user interface. Are you taking advantage of newer screen resolutions? Are you correctly handling all device orientations? Are you bored with the cool widget you designed two years ago? Change them!

While the sandwich had a bunch of well cured products – olives, pickles, ham – it was the fresh bread and juicy tomatoes that really stood out in the picture on the side of the truck. And let’s face it, it got my attention…