(1) The 1st and the most obvious – do you need an iOS, Android, Windows, RIM product (any or all)?
This is actually an important 1st question. Most customers say “yes”…but it is important to vet it out – questions like “Who is the end consumer?” or “Where will this be used?” or “What % will be Windows vs. Android?” etc. gets the customer thinking – does it make sense to do a RIM development if only 1% of the consumers are using it? It may, depending on the importance of these consumers and the product – but it is good to think through this upfront (maybe a version 2.0?)
There are some good tools to do cross platform developments – we have tried Xamarin – there is also Kony, CoronaLabs etc. – of course traditional tools (Android studio, iOS SDK and XCode 6, Windows .NET for mobility etc.) are always good as well.
(2) What is the back-end database and are there API-s to connect to it?
Is the internal environment built in the Microsoft Stack or php/MySQL stack or other? This is key, because most enterprise mobile apps transact back and forth to the internal systems. There are JDBC connectivity processes to SQL for example, but the safest way to go is to have APIs for all the calls to and from the internal database. It does increase the scope so it is important to discuss this upfront. In fact we go all the way of finding out all the methods required for the web service if we have to code that.
(3) How many drop-downs do you have in your forms (in all the screens) and are they maintained internally?
Dropdown data is usually in tables and they have setups in the internal systems. If an app is using this data in dropdowns then it must be
synced at all times with the internal systems. Depending on whether the app has to function offline or not, the dropdown data needs to be (a) saved locally in the device or (b) refreshed every time calls are made to the web service from the device. If there are a large number of dropdowns there could be performance issue, especially if some or all of them have a lot of fields and records. It is important to build the correct architecture (cache, edge etc.)
(4) Does the app need an offline mode?
This is a BIG question and will change the scope, cost and timeline of the project. Offline mode of an enterprise app creates a lot of challenges that needs to be identified upfront. Here are a few of them that could be generic to all projects:
- What kind of data will be available in the offline mode?
- How is the device getting all the data (master records, transactional data, images etc.)?
- While the data is in the device and it is offline are the “affected” records “locked” in the internal system or a “true sync” is required when the data is sent back to the internal database?
- How much data needs to be stored locally in the device? (Devices have limited internal database capacity, but there are ways to get around that if architected correctly)
- Images need to be transferred back and forth using encoding (typically base 64) – does the internal system have decoders? Are the images stored in the network or within the database as blob/image data fields? Are there master/detail type forms? If so how are the calls to the web-service handled?
- Are there master/detail type forms? If so how are the calls to the web-service handled?
(5) How will be app be distributed to the intended users?
Will it be through the App Store/Google Play etc.? If so how are authentications handled? What are the restrictions for downloading and signing up? Or will it be through your own custom distribution portal that can be developed? Or will it be through private/enterprise platforms (like iOS Developer Enterprise Program or Google Enterprise etc.).
There are obviously the regular questions on what the app will do (functional specifications), how it will behave and be used (usability specifications), security considerations (which is probably the most important factor) etc.
A well-developed and thought out scope upfront prevents any and all surprises during execution of the project and at delivery. This is true of any project – standard project management philosophies. However, for a mobile development project these questions will either make or break the project – there are slim to none chances of fixing the project in the end if these are not addressed at inception. It may take time upfront, but as a mobile developer you will be able to deliver a richer, cleaner and a “complete” product to your customer.
Roni has 16 years of experience in leading small to large scale IT projects for various markets. Roni successfully founded 2 companies spanning multiple locations and time-zones. He rolls up his sleeves and gets into software development anytime you ask him and database development is his passion – we call him “our sequel junkie”! Roni has a Bachelor’s in Engineering, his very valued PMP and is close to finishing his Global MBA from the coveted Warwick Business School in the UK. When asked about his personal life he says “We, my wife and 2 boys, live in the picturesque Hudson Valley region of New York. A Yankees and New York Giants fan, I also enjoy strumming my guitars every day, mixing recipes from different cultures when I get some time and hack away during an occasional round of golf.”