
Last week, the presentation of the new iPhone 7 and Apple Watch Series 2 died down. Someone watched it in the original, someone translated the same
Wylsacom with his inimitable humor. But it all came down as always to one thing - the next holivar between fans and hiipers on the topic of coolness / non-coolness of a new apple phone and how hedgehog will please us new iOS 10 in the final version. Rummaging on the Internet, I came across an analysis of a new OS published by an iOS developer from AT & T, conducted on the basis of testing all the beta and dev versions over the past few months. I offer you to her.
Note from the translator
Dear users of Habrahabr, this article is completely without the "bills". Some sections have been repartitioned by me for ease of reading (additional headings have been added). If you have noticed an inaccuracy in this translation or want to share your opinion, please let me know in the comments in a constructive form. Translation of an article is work, though not always appreciative. If you disagree with something and think that you can do better - do it, not hite it.About the author
Guillermo Irigoen , analyst of iOS computer systems at AT & T, CTO and Co-Founder at Darc Data. Guillermo has 8 years of experience in software development. He began as a multimedia artist, focusing on creating and programming illustrations of paintings for museums and events, using programming languages ​​such as Java, C and Python to manage servers on Lixux, Raspberries, Arduinos, and others. Location: El Segundo, California')
===
How I met Apple
By luck, I began to develop applications for mobile devices, when the smartphone market just started to grow. If I remember correctly, somewhere between the release of the iPhone 3G and iPhone 4, when Apple introduced iOS 2, I have been developing apps since that time and not just for these devices. My main focus at that time was feature phones, for which you had to write in C or JME. They introduced me to the technology of writing code for mobile phones and simplified the transition to development for smartphones.
In my opinion, Apple has the best tools for work and their integrated development environment not only speeds up the process, but also helps developers better outline their ideas, understand how to implement them, test and optimize.

About iOS 10 by the user
The OS level is very easy and easy to use. There is nothing difficult to reinvent the wheel. The first thing you can notice is the update of the lock screen. Widgets become more important because of their appearance, you will have a little more control over notifications and messages. I'm not sure about the screen, because everyone who takes the phone will get much more information about you without having to unlock the screen. Maps will show you the time and route to your home, work, and places that might interest you. This means that Apple collects more and more information about you, and I am not sure that this is a good idea. But in general, when you close this screen, the look and impression is pleasant, there is a new organization of settings and delete options.
Some of Apple’s default apps are very good. The messaging app is cool, but some 'share' features are not included for non iPhone users. The maps have improved the quality of the routes and there are interesting features such as “weather right now” and much more details about the places located near your route. The photo library is better organized and easier to find photos. If you have more than 10 thousand photos like mine, you will definitely like it. As for the rest, I do not see big changes, except for visual design and composition. But I noticed an improvement in the response speed of the system when navigating through applications.
About iOS 10 by the developer
At the developer level, it doesn't matter whether you use Objective-C or Swift for application development. You can rely on a serious programming base that will work even after a new release. It becomes easier to achieve, to create an application is now quite simple, but not always easier is better, because simplicity is not free. This will only work in certain cases. The developer will have to work with what he has, and Apple will have more limitations in technology.
I do not like these limitations because you cannot use their hardware, software as you wish: devices, libraries, how permissions, profiles, etc. work. Sometimes it keeps me from trying to create something outside the rules. But in the end, Apple is a company, an important company and I have to accept their game conditions.
In my opinion, one of the important functions that can help developers with iOS 10 and Xcode8 is system debugging and the ability to track leaks, streams, interfaces, and possible bugs in real time. This has become a big advantage over other platforms. Xcode8 allows you to more control over the process and analyze your code in the current time. Bug tracking is much improved, it will help you pinpoint where the problem is or where it might be. The interface designer is an order of magnitude better than its previous versions and limitations no longer interfere. And if you are working on a universal application with a portrait, landscape or combination screen, you will face less difficulty when you use them.
Automatic signing with a certificate is what I have been waiting for; you will no longer have problems if you have many developer certificates or a provisioning profile on Mac. Or if you lose a few devices. A self-signed certificate will do it for you. And finally, the most important topic I would like to stop paying special attention to is testing.

Testing iOS 10
In general, as a software developer, I always need to know how well my code works, no matter what language I use, Objective-C, Swift, Python, Java, etc. I need to know the answers to the following questions:
- Is this an elegant solution?
- Is it fast?
- Are all the conditions correct?
- Do I create any zombie processes, memory leaks, race conditions, endless cycles?
- What about memory and network connections?
- Have I really worked out all the possible scenarios that could ever happen?
Of course not, at least, if in the project you are working on more than one team, you will need more tools than Xcode and Instruments. Sometimes I need more time to think about what could be wrong or wrong with the code than directly writing it.
Over the years, I realized that no matter how simple or complex a borderline case may be, the situation can become very bad in a very short time. And not only for you and for the company for which you work, but also for users. Apple has a really good set of improved tools over time that greatly help you reduce the number of possible errors. Unit testing, UI testing, bots, scripts and CI testing environments on an OS server make you feel more comfortable, greatly reduce 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 all sorts of strange behavior, arising from where it is not clear, until you have to face it. Sometimes your tests do not cover the required functionality or are not very well thought out, sometimes all tests are incorrect or do not work at all, giving you a false sense of reliability. In some cases, you will not be able to test before the release or someone who does not quite understand the entire flow of information inside and outside the application, writes tests that have no meaning or are not valid. Writing tests is also writing software, so to what extent should we test our tests? But not only errors in the code can completely break your beautiful algorithms. What do you think about server timeouts or unexpected responses and unpredictable user behavior? There will always be something new to work on. It does not matter how convenient the tools and methodologies become, sometimes they are still lacking.
Afterword
I purchased my first Macbook back in 2005. Then he worked on OS Tiger. Since then a lot of water has flowed away and a huge number of improvements and changes in the system have occurred. To tell the truth, quite a lot of restrictions in the system too. Although, despite the ambiguous steps, Apple has developed a balanced product, comfortable enough to remain its user. If to sum up. My overall user and developer experience says that the product is good enough at the moment, what Apple’s innovations will give us, time will tell
Afterword by Translator
You can read the original article
here . Many thanks for the help with the translation of
Maria Garbuzova.UPDTesters note: according to the latest news that I managed to collect on the Internet, the following devices will not be updated to iOS 10:
- iPad 2
- iPad 3rd gen
- iPad mini
- iPhone 4S
- iPod touch 5th gen