Why Im not excited about multitasking!

Multitasking iOS OSX Windows Android
Multitasking iOS OSX Windows Android




Why Im not excited about multitasking!  On iOS, OS X, Windows or any other platform, multitasking simply is not a good fit for humans.

The reason is that while these operating systems might multitask and quite efficiently at times, humans and human brains more specifically, cannot multitask.

Let’s take the typical working day. Let’s say that you finish eating lunch at home and get back in the car to drive to your office. On the way to work you remember that you have to pick up some groceries on your way back home.

[toDoArray addObject:@”groceries”];

A few minutes later a call comes in and you are asked to email some information to a client.

[toDoArray addObject:@”emailSales”];

Now you realize you do not have that client’s email, but a friend of yours does have it. You decide to call that friend and ask him for the information so you move over your phone application.  You get the client’s email but along with that information comes an invitation to a social gathering later on that night.  Now you must switch over to your calendar app and add that reminder. You probably want to add a reminder to notify your spouse as well.

[toDoArray addObject:@”socialGatheringAtPedros”];

[toDoArray addObject:@”notifyWife”];

After all these distractions you finally open up your email client in order to send the information. If you’re lucky you have managed to reach your office without crashing.  Don’t cry victory yet, you still have to park your car.

You open up your email client just to realize you have five new email messages.  Two of these require urgent attention.  You are lucky enough to have the information needed by one of these two emails, however you must open up What’s App and search through many chats in order to retrieve information for the last email.

[toDoArray addObject:@”findDataForLastUrgentEmail”];

As luck would have it the information was not in your What’s App application but you are sure it’s either in your Twitter client or Facebook.  You search both these applications without any success and as soon as you are about to tap on Google+, a “Running with Friends” game notification pops up on your screen and you accidentally tap on it and you’re taken to the App Store for an in app purchase.  Now you realize you have about three updates pending for applications. You tap on “Update All” and realize you do not have Internet connectivity at the moment.

[toDoArray addObject:@”updateApps”];

So your phone is multitasking quite well, it has Twitter, Facebook, What’s App, Calendar, App Store and  a few other applications running at the same time.

You on the other hand right now are probably parked on top of your boss’ car, are fired, are getting insulting messages from your spouse because you did not notify her on time, your friend is upset because you did not RSVP, the kids are mad because you did not pick up the groceries, and you have lost one of the most important sales of your career.

[self didReceiveMemoryWarningAndABunchOfOtherRuntimeWarningsAsWel];

[toDoArray dealloc];

[self dealloc];


Apple’s iOS7 and the future of development

Sure iOS7 brings a lot of technological advances. But more importantly, it sets a new precedent in the Software Development industry. Here are a reasons:

1). An Elite development team. Many people complain about Apple shutting out developers by not opening up. It’s funny because their code is open, you just have to be willing to pay. Where disgruntled programmers see disappointment, I see a company filtering an elite team of outsourced developers to keep pushing the envelope where only the savviest survive.

2). An evermore demanding market niche. I downloaded ios7 on Monday like most devs. The first thing I noticed was Skype crashing and Testflight failing to install. Only a few days later, Skype’s community forums are flooded with complaints pressing for the company to update their app to iOS7. This may not seem like much, after all it’s just a beta, right? Why did all those devs update ahead of time anyway! Don’t forget this group of devs is growing everyday and at the end of the day their pressure is real! Many people are also paying the $99 dev fee just to have access to the betas. So everyday Apple’s niche market is growing in size and influential pressure. I can’t wait for iOSX! They’ll be releasing pre-pre-alpha candidates!

3). Indies are dying! Apple doesn’t really want indies. The days of making a simple game that scored you millions is over. Apple had a hand in this of course. They deliberately raised AppStore standards. WWDC is an expensive event and all these factors combine so that Apple can have, as mentioned before, an elite team of 24/7 developers that pose no company liability as employees but are at the same time manageable via quality controls they define and who are filtered to result in incorporated LLCs which are, unlike their freelance counterparts, accountable 🙂

iOS Indie Developer/Programmer Evolution

Make a decision
Where to go from here?

These are just random thoughts on what I believe are the pros and cons of coding an app vs a game.  The reason why I am writing this is actually because I find myself in the same predicament.  I’ve been coding crap for the past 3 years and I believe its time to make something “significant”.

At first I thought, I’ll code a bunch of apps and even though they might not be Top Pick apps, they will be enough.  Even if they only make about $5-$10 a month,  I may be reaping $100 a month which sounds cool.  I even got into the whole iAds thing and thought it could improve my revenue to perhaps $200 a month.  So I read some docs, took some online course (which were much better than the docs btw) and I was ready to code.  This is basically how I coded in my personal evolution as an iOS programmer:

iOS Programmer Evolution
Stages of Evolution

At first you will code anything!  My “Code Anything” stage consisted of an app I wanted to make for my wife.  As a guy, Im very absent minded when it comes to remembering birthdays and important things in a relationship.  One of them is simply being spontaneous and surprising your loved one with an occasional flirt or memoir of your time together.  So I made an app (iLuvMe) which would take  15 memoirs and present them to the user as he/she tapped on the screen.  At first the app made the user jump through hoops.  Currently it is development to make it easier to use and I added the email functionality for users who have trouble using it.  As I learned later, this should have been the first feature added to any app…Contact Customer Support.

My “Borrow Code” stage was basically taking an existing online tutorial code and modifying it to make an app for tracking imports in the company I work for (Shipment iTrack).  I did it because it actually fulfilled a need in my job but I didn’t learn how to design an app, I just learned how to understand or interpret code.  This is very dangerous because it makes you believe you understand concepts that you actually don’t, such as Delegates & Protocols.   It was around this time that I also made my next app (SalesToGo) which basically borrowed the sample app from CorePlot and modified it to my needs.

Then my “Lo Quality Original” stage consisted in creating an original app with a web service to back it up.  The app worked, works, but its uglier than sin and I took no consideration as for UX.  The app (iGlobe) is an app intended to be a playable online world wide game where you rack up points based on the places you visit and people you meet.  It basically rewards you for being social.  But building an app from the ground up teaches you to think about how to design code, it teaches you to really understand design patterns and code structure.  This is where I learned most of my current knowledge on programming; both coding and planning.

I then decided to go back and upgrade my old apps during my “Improve Existing Apps” stage.  This is when I added Customer Support buttons and some UX features on my old apps.  However, I ended up with some spaghetti.  This is why I began to see where I could reuse code and extract it into a class for making web connections and fetching JSON for example.  This helped me understand how to structure code.  I incidentally also learned how to read reference documentation by using 3rd party SDKs like Facebook, Bump, AppiRater, CorePlot and TestFlight.

At this point I was kinda bored of apps and ran into Cocos2d.  I guess that having bought a book made me more aware of my investment so I decided to really stick with it.  I read the book and learned quite a bit about Cocos2d and decided to start with a game.  I started with an “Opportunity Game”.  You can make original games or remakes of traditional games as an ongoing plan, but you can also take advantage of a worldwide situation and make a game out of it.  This has the added advantage that the world is aware of that global situation and it serves as a nice piggyback ride for marketing the game.  So I was 2 months into my game when I realized I had to outsource my graphic design.  It dawned on me that you have to see this as a business or it will fail somewhere in the code design, graphical appeal or marketing plan.

Finally, I reached a fork in the road.  Should I work on a game or an app.  So I came up with something like this:

Decision Time
Game Large Market Must be Good
App Quicker to Market Must be Original

A game has a larger potential market.  Why?  Because anybody can be interested in a game.  Angry Birds is fun for young and old.  But if you create an app, its harder to come up with something for everyone.  It will most probably end up being for a niche market.  I also believe a game is easier to market.  It is more subjective to like or dislike a game, whereas an app has to be VERY appealing to be liked by a user.  However, the game must indeed be good!  This means, it must really be good and it is expected to have certain things such as GameCenter, many levels, powerups etc.

On the other hand, an app can be made quicker and still be good.  What I mean is, you can have very little functionality in the app and have it be very effective at what it does.  However, to be successful, it has to be original because not only are there tons of apps that can already do many things but again, apps are very subjective.  Thus the app must really do something original or it will be overlooked for another.

So it was Decision Time.  I realized I needed a partner.  It just so happened I met someone at the Apple Dev Talk in Austin on January 2012 and I began working with him on a game.  This was going to be a full fledged game.  We designed it on paper first; Intro, levels, scoring, power-ups, social media integration etc.  We started working on it since February and it has been falling apart since.  He didn’t have enough time as he is a new Dad (which I totally respect because my son is 3 years old).  I did manage to outsource the graphic design and keep my work plan.  The timeline has been stretched as the art proved to take longer than expected.

So here I am, with a game that is 2 months before its projected launch and Im 50% through the game.  Everyday getting new ideas in my head.  Some ideas tell me to go back to real-need apps from situations I encounter day to day.  Others tell me to focus on 1 or 2 of the old apps and push through to make them the cornerstone of my iOS development.  And yet others say, finish the game you started or make more “Opportunity Games”.

So why am I posting this?  Because 140 characters is too limited! 🙂  Do you find yourself in the same situation?  This is not a programming specific problem.  This is a decision like any other.  You know you have to do something, anything!  Just don’t stand still or you’ll sink!

Anyway, I thought my experience could help anybody at least to recognize where they are in their iOS indie dev evolution.  iOS dev world is great, but as with anything, you gotta put your back into it and prioritize.