Thursday, July 31, 2014

5 best practices in writing code for mobile applications (Android and iPhone)

1. Write server side javascript code rather than mobile front ends / mobile apps

A couple of years ago I participated into a seminar where software developers from Twitter held presentations. They recommended using as much server side javascript code as possible rather than designing the actual apps. Reason being that, when you create apps, they get deployed on many different mobile platforms with a multitude of configurations and services turned on and off. The other thing you cannot control when you write apps is the behavior of other apps the user may have running on his/her mobile phone.

Writing server side gives you control over the code. When you do that you basically design a mobile ready website rather than designing an app that talks to web services or APIs. And the data collections and processing can be done on the server- which gives you not only reliability but also more computing horse power.

2. On Android test on multiple physical platforms

There are many different Android manufacturers these days. From the Galaxies to the HTCs, from the LGs to the Huaweii and from Google Phone to Motorola, every single company has now its own product line with multiple platforms: that means multiple levels of processing power, different kinds of memory, different kinds of local-on-the-phone storage space and different screen resolutions.

And of course there are all kinds of emulators as well such as the one included in Android's SDK. iPhone is more standard in resources but you still have a number of different hardware configurations and that will increase this fall with the release of iPhone 6.

But there is nothing like the real thing. When you write code for mobile devices you have no choice but to test it on multiple platforms. So beef up on your collection of mobile devices to test on!

3. On location based services check the accuracy of your data

Mobile location based services rely a lot on pre-existing data stored in things like Google Maps or Bing Maps. Their databases are impressive & huge and most of the data is clean. Most of the times what you have to do is to hookup to their web services and pull the data and present it nicely on your on the mobile front ends.

For example we designed an Android app that goes out and queries Google Maps and pulls down data on the closest pizza stores of certain brands. Then in one touch of a button it calls the closest favorite brand pizza store for you to order pizza.

What we learned during designing this app was that, of course, Google Maps is not perfect :) There are Florida based locations where the web services do not return the closest existing store. Or maybe some stores did not registered the right way- when they registered with Google Maps. So we had to write our own code to filter through that.

No matter what you do, you will always have to deal with some noisy data. You just have to test and sort through inconsistencies.

4. Deploy & test twice a day

When it comes to developing mobile apps, it's always a good ides to deploy and test often. Working in small, rapid iterations will allow you to catch defects early and to adjust on-the-fly. Do not wait until de whole product is designed to start testing. Start with a minimum set of features, write and deploy. Twice a day is better than once :)

5. Do everything with the user's experience in mind

Don't forget: the most successful mobile apps are the ones that address a niche market segment (i.e. male population between 18 and 25 years old located in California), are attractive graphically and easy to use and never crash or produce unexpected results.

A recent example of a successful app like that is Tinder- very important app who is currently taking off in the social media space exactly because of these reasons: it's beautiful, it's easy to use and it addresses a specific market need. In this app the visual effect created when browsing through pictures is extremely powerful.

Even business users are interested in clean/crisp/easy-to-use front ends because they have been bombarded with clogged, underrated content for a long time.

So while you may focus on your back-end and data for most of the time, do not forget the front end quality and the users experience.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com

Wednesday, July 30, 2014

Working agile in software development

These days there is a lot of buzz in the industry on agility and running your projects in an agile way. The concept is not new, in fact it's been around for two decades. It's actually coming from manufacturing and it was first implemented by the Japanese car makers.

Agility had been historically slowly adopted in the software development arena who kept writing code in a traditional waterfall way. It's still been under adoption as we speak in a number of larger organizations.

Agility is basically a way to rapidly start producing tangible software assets to benefit the customer even with vaguely defined requirements and even if the first iterations of the process do not produce perfect results.

I quote from the Agile Manifesto, the document that sets the foundation of agile practices in the software development industry:

- agility "encourages the interaction between individuals over the processes and tools"
- agility "has the main goal of delivering working software"
- agility emphasizes on "customer collaboration over contracts negotiation"
- agility welcomes "change" (no matter how late it comes in the development cycle) "over following a plan"

Here is a link of the Agile Manifesto http://agilemanifesto.org/principles.html. It is a document every single organization should read.

Here at Witty Mobile Apps we are big believers in agile, lean processes:

- we run all our technical projects agile (and had been doing it for years)
- we involve all the stakeholders early in the process and keep them engaged all the time
- we successfully run agile projects with geographically dispersed teams (yes, you can do that if you have good people and if you heavily use online collaboration technologies)
- we even apply agile concepts in our day-to-day life

What we see in our day-to-day routing is that when we use agile techniques in running our projects we tremendously reduce the length of the life cycle with direct impact on the customer's budget.

Projects with vague requirements and late changes tend to become expensive to implement for the customer. And product quality suffers. The same kinds of projects ran in agile way bring up early requirements inconsistencies and defects giving the developers the opportunity to rewrite the code fast and produce the necessary results.

Not only that but agility also requires involving the business owners and their customers early in the development cycle: that is a tremendous opportunity to get quick market feed-back on the developed product, adjust, pivot and eliminate potential defects fast.

I'd say implementing agility creates a winning situation for every single stakeholder of a project: business owners optimize their development budget, the customers get to see and try new better product quicker, the developers get less frustrated because they don't have to re-write large portions of code based on miss understandings on requirements and the qa personnel is happier as well as the defects are less significant and faster knocked down.

Project's budget wise historically we have seen agility related costs saving all the way down to 65%-70%(!) on similar size and complexity projects.

If you are not agile yet, get there as soon as you can!

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com

Tuesday, July 29, 2014

5 myths about software development contractors

Contracting in software development is an interesting business. You get to work with some of the best people in the industry: people who know what they do and they are confident to go on their own. You get to develop new products every week as opposed to just maintaining or supporting legacy platforms. You fuel business concepts. You have fun!

But there are many miss conceptions people have when it comes to working with independent contractors. Here are 5 of the ones we hear most often:

(1) Contractors don't work for us, they work for themselves

This is actually not true. Contractors are the first ones who are interested in their customers business to work well as they are looking for repeat business for themselves from the same customer. Read more projects. Contractors and consultants are generally very competent veteran developers who not only care about the customer business but can also help with solid advice to make them grow.

A good contractor delivers tremendous ROI and it's worth every single penny you invest in his/her work.

(2) Contractors are very expensive

Not necessarily. It depends on your project and certain niche skills / industries / markets charge more than others but a contractor does not have to be expensive or hard to afford.

Another aspect with contractors is that they write fast and accurate: by definition their business is a business of efficiency since all they sell is pretty much time and intellectual brain power. A good contractor can cut you tremendous man hours spent on your project and in reality when you draw the bottom line you will see that generally a contractor costs less than a staff member per project.

(3) Contractors do not know what they are doing / they don't deliver :)

This is actually pretty entertaining. How could somebody who was in the business for more than a decade be considered a rookie? And how could somebody with strong references and portfolio be suspected he/she will not deliver.

A reputable contractor will not take your project if he/she is not 120% sure he/she can deliver. It hurts his reputation and reputation is everything in this business.

(4) Contractors won't take two (or three) projects to get paid for only one

Well, here we have a matter of economics. It is true that contractors work per project (though there are usually many packages available such as lump sum, hourly based, weekly based, monthly based or yearly based contracts per head- and they are designed to be in the best benefit of the customer) and you cannot really "double-up" with them.

But think about it: do you really want to do that even with your employees? When I worked in Corporate I've seen many employees burned out and miserable, working on multiple projects on the same time, not doing a good job on any of them and ultimately delivering product with defects/patches. It is in my opinion not a good practice as it affects your company's reputation.

Another aspect of this: contractors and consultants are very efficient. We've seen and we currently have contractors who can deliver in 60%-70% of your projected time for a particular work item. Which means you can use them for the balance of the time left on another task / work item.

(5) We prefer in-house employees vs. contractors because we invest in them

Investing in a contractor is actually not that different than investing in an employee. If you are a great company and have long term projects your ROI in contractors will be higher than your ROI in staff employees. Like I said contractors are not there to jump from one company to another: they are actually interested in providing dedicated resources for multiple long term projects with the same company.

And don't forget that many consulting companies (like ours) do have packages where you can hire a good contractor as an in-house full time employee. That usually happens after a 12 month period of time- time necessary for both you (as a client) and the contractor (as a resource) to get accustomed to each other.

So bottom line is that as a business you should have no fear to work with contractors and consultants: they are competent, hard hitting, reliable resources who can fuel your business growth.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com

Monday, July 28, 2014

At the intersection of mobile technologies and vehicles

These days we live interesting times. After a prolonged recession and a few years without major technological break through (and here I am thinking of epic changes like the invention of Internet or the PC) we got to a point of resurrection.
Let's strictly take the last decade in the industry. Let aside cloud computing (which is really not that new) and social media (which is more of a concept/business model achievement rather than a pure technological break through) we are left with mobile computing and the mobile devices, smart phones and tablets.
I will take the opportunity to discuss mobile technologies as I believe they were a significant step forward the tech and users communities made lately.
The ability to have access to your data on a small easy to use mobile device you can carry in your pocket, the location aware features such as maps and GPS-es, the video and music on demand, web browsing and mobile queries, the versatility of some newer apps or services make smart phones and tablets big winners for the businesses and consumers.
From supporting on the road decision making processes to booking hotels and reserving restaurant tables, from financial apps that give you last minute quotes on stocks to little utilities and home apps the mobile universe opens up to the public and businesses.
But there is a particular class of applications that is pretty unique. And since I tested some of those recently I can testify that in particular mobile applications for the automotive industry made a lot of progress over the last couple of years.
For example everybody knows that some Japanese car manufacturers such as Honda or Toyota integrate very well with Apple. What used to be just a basic on board GPS with manual input is nowadays a 100% mobile driven platform with GPS, voice recognition, maps, concierge type applications, info on gas stations, restaurants and accommodations, real time traffic info, music and video on demand etc. At a price much better than the traditional embedded GPS.
Services like Aha replaced the need of a OnStar system for road assistance.
And your vehicle will soon hookup to all the major mobile platforms including iPhone, Android, Blackberry and even Windows phone.
That is what I consider a mini revolution of this past decade and I predict the mobile trend to continue and refine for at least another decade.
Make it a great day!
Adrian Corbuleanu
http://wittywebnow.com

Sunday, July 27, 2014

Web and mobile applications

The World Wild Web came out a long way from what it was 25 years ago when HTML was invented. People who have been around for a while may remember with nostalgia how did the first websites of different companies looked like at the beginnings as opposed to how they look nowadays.

Here is one of them just for fun. This is how Microsoft's website looked in 1995:


Interesting isn't it? What a far cry from nowadays slick-web2.0-mobile ready-social media ready-flash-interactive websites!

Let's take a look at the current website of the same company. Here is a snapshot:


Twenty years later, with the same fundamental technology at core, you have serious improvements: Windows 8.1 is presented in a video tour, the site is rich in content and graphics, slick and responsive and quite interactive. You have javascript and css used in there and the site is mobile ready. You can nicely and easily browse the content from a smart phone or a tablet. You can tell there is well structured data and databases behind the site who perform real time queries.

The web started as an academic/research project @ CERN where a group of scientists figured out a way to better organize and index information in order to present it to their professors for their lab and coursework.

With the growth of Internet and Internet technologies in the '90s, the web grue huge in popularity and it's nowadays "de-facto" standard in exchanging and presenting information electronically. You can't even think of another way nowadays to present documents, data and information than over the web.

The latest developments of the decade in mobile applications and social media gave the world wide web another dimension as well: the web now is a place where we socialize, keep in touch with friends and business associates, post pictures, movies and messages in real time. From wherever we are. And whenever we want. We now literally live and breathe on the web!

It is no surprise that under these circumstances, we Witty Mobile Apps, Inc. are running a web and mobile applications initiative. We've been there since the beginning and we saw this industry growing by bounds and leaps. Though we think we are still relatively early in the ages and the web is still an infant!

This is not a new business for us. We have been in business data driven web applications for a while for more than a decade now. It is though a turning point driven my the latest development in mobility and social media and we believe this is a huge wave to ride!

We write business oriented web and mobile applications that fast, slick, reliable and easy to use. Apps that are aligned with our customers business goals and deliver ROI.

While doing that we are also working on building and fostering a Miami based community of software developers, designers, business owners and media representatives to serve the growing needs for technology of a metro area that has not been historically seen as a technology hub but which is certainly evolving.

Keep an eye open on us as we will have tones of new information soon.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com