Potential advantages of iOS 10 for mobile app development and testing
iOS 10 is coming soon officially. To find out about all new possibilities of the latest iOS version for mobile app development and testing we had an interview with Guillermo Irigoyen, iOS Computer Systems Analyst en AT&T, CTO and Co-Founder at Darc Data. Check it out!
By good fortune I started developing applications for mobile devices when the smartphone market began to grow, if I recall correctly, somewhere between the iPhone 3G and the iPhone 4 release, when Apple introduced iOS 2, I had developed applications since then and not only for those devices, my main focus at that time were the feature phones, where you had to develop in C or JME which made me familiarized with the mobile phone technology and made the process of changing to the smart devices more simple. For me, Apple so far still has the best tools for the job and their integrated development environment not only robust, helps developers to emphasize more in their ideas and how to achieve, test and optimize them.
About iOS 10
At OS level is smooth and simple, nothing to change the world again, the first you can notice would be the lock screen update, widgets are gaining more importance because of their new visibility and you have just a little more control about alerts and messages. I am not totally convinced about this screen because everyone that grabs your phone will have a lot more information about you without the need of accessing it. Maps will tell you times and routes to your home, your work and suggested points of interest which means that Apple is also collecting more and more information about and I am not sure that is a good idea but, once you passed that screen, in general, the look and feel is pleasant and the new settings organization and the option for removing. Some Apple preinstalled applications is great, the messages app is fun but forget about share the full experience with your non iPhone friends. The maps are improving the quality of the routes and have interesting new functions like the weather in real time and a lot more detail of the places surrounding you while you pass through. The photo library is better organized and is easier to find photos and if you have more than ten thousand images like me you will definitely thank that. For the rest, I do not feel too much change besides some visual design and composition. But I noticed an improvement in the responsiveness of the system to navigate and moving around apps.
At Dev level no matter if you are using Objective-C or Swift for developing your apps. You can rely on having a solid developing foundation that works and with every new release. Everything becomes easier to achieve, creating applications has become very simple but, not always simple is better because that simplicity is not for free. It will work only by some constrained rules. A developer will have to work with what it has, and Apple is getting more restrictive with their technology. I dislike those restrictions because you are not able to use their hardware and software at will for everything: his devices, his libraries, the way the permissions, profiles, etc. work. It stops me sometimes from really trying to push the limits of creation but at the end, Apple is a company, an important one and they make the rules so I will have to live with that.
Some of the major features I can think developers can take advantage of with iOS 10 and Xcode8 would be in debugging system and being able to track leaks, threads, views and potential issues at runtime. This has become a huge advantage over other platforms. Xcode8 gives you more control over the flow and analysis in real time for your code. Tracking bugs has been totally refined and it will help you to pinpoint where the problem is or could be. The interface builder is way better than its predecessors and constraints have become such a less pain, more if you are working on an universal app, portrait, landscape, split screen, you will have to overcome less troubles while using it.
Automatic certificate signing is what I was waiting for a while, no more problems if you have a lot of development or distribution profiles in your Mac. Or, you are missing some for your devices. Automatic certificate signing will handle it for you and finally, the testing that it is a really important topic.
So what about testing?
In general, as a software developer I am always in the need to know how well my code is working, it does not matter the language, Objective-C, Swift, python, java, etc. I need to get replies on the following questions:
- Is it elegant?
- Is it really fast?
- Are the all conditions correct?
- Could I be creating any zombies, memory leaks, race conditions, endless loops?
- How is about the memory or the battery or some networks connections?
- Could I really handle all the possible scenarios that could ever come to exist for this?
Obviously not, less if there are more than one team in the project you are working on, you will need more tools than Xcode and Instruments. Sometimes I take more time thinking on what could be wrong or happening with the code than actually writing it.
Along the years, I have learned that no matter how simple or complex could be your edge case, things could go really bad really quickly, not only for you and the company you are working with but also for the end user. Apple has a really nice set of tools improved with the time that help you a lot in order to minimize the errors that you could encounter. Its Unit testing, UI testing, Bots, Scripts and Continue Integration testing environment with OS Server can make you feel comfortable, greatly reduce the errors and optimize what you are doing. But not everything changes in the real world and not everything is controlled by Apple.
You will have to deal with a lot of weird behaviors appearing out of nowhere until they hit you in the face. Sometimes your tests follow short or are not well thought, sometimes your tests could be all wrong or not working at all giving you a false feeling of safety. In some cases you are not going to be able to test before release or someone that does not quite understand the whole flow of information within and outside your app writes tests that do not make any sense or are invalid. Writing tests is also writing software so, until what point should we test our tests too? Also, what is not in the code that could actually make your beautiful algorithm run into tears? A that timeout servers requests or unexpected responses or unpredictable user behavior? There will always be something new to discover, no matter how convenient these tools and methodologies have become, they will follow short sometimes.
I had my first Macbook back in 2005 and was running Tiger on it. From that moment until now, a lot of things have happened. There has been a huge amount of changes, a lot of improvements and also a lot of new restrictions. But also, through all these years Apple has maintained a balance, making it a place of enough comfort to stay for a while. Overall, the whole experience has been satisfactory and until this moment I feel pleased enough to keep my MacBook Pro as long as it stays alive.
Guillermo Irigoyen, iOS Computer Systems Analyst en AT&T, CTO and Co-Founder at Darc Data. Guillermo has 8 years of experience in software development, started as a multimedia artist, focussing in the building and programming of art installations for museums and events with programming languages like JAVA, C and Python controlling Linux boxes, Raspberries, Arduinos and servers.