Clean Architecture in iOS and Android
As a follow-up from the extremely successful workshop on Clean Architecture at MobOS 2017, we are happy to announce that Jorge will be back in Cluj with the advanced training workshop on Android & iOS architectures.
When? 18 – 19 January 2018,
Where? Liberty Technology Park, Cluj Napoca
This training is designed as an iterative and constructive approach to advanced architectures in Android & iOS. It uses a realistic application as an example that is developed for both platforms, Android & iOS. The app implements every feature using a step by step approach after introducing all the required theoretical concepts. It is intended for programmers with at least 1 year of experience developing Android or iOS applications. It is assumed that attendees are familiar with the basics of Java/Kotlin/Swift development and know object-oriented programming and basic design patterns such as delegation, Model-View-Controller or singleton, among others.
This is a hands on training, where attendees write code to test all of the concepts under the supervision of the instructor. The attendees will get access to two Git code repositories with all the code that should be implemented during the training with very granular commits. One of the repositories will be written in Java and the other one in Swift. The availability of the code for each the exercises provides additional flexibility to review parts of the course from a trusted codebase and provides a reference to compare your code.
As a result of their participation in this training, attendees will be able to:
- Understand the principles that allow to take good decisions about architecture, instead of template implementations of solutions to problems.
- Obtain an in depth knowledge on how to implement an application using an advanced architecture.
- Be able to write real world applications that use an advanced architecture and cover the most common concerns like concurrency or network API consumption.
- Create more reusable and fully testable code.
- Collaborate in projects with other members of the team, without stepping on each other’s toes.
- Create code that is easier to debug and better suited to embrace the unexpected changes in newer iterations of the product.
- Create a Prove of Concept (PoC) without worrying about implementation details like the persistence method (Core Data, Realm, or any other), how to access the backend, which user stories will be shared with the watch version of the app or even the Apple TV one, or even the particular views that will go into the final version of your app.
- Iterate from the PoC to get to the Minimum Viable Product extending the application with different modules.
- Understand how to write applications that are more independent from the frameworks they use, allowing for an easier replacement in case of need.
- Apply this knowledge to your current codebase.
The particularly practical nature of the content is organized around a number of exercises that cover all the topics mentioned in the next section. The exercises are planned within a project that is fictitious, but realistic in its scope. This training focuses on the implementation of the application logic, without paying much attention to the graphical design of the app.
The working methodology involves the theoretical explanation of the relevant contents before each of the exercises. Then the instructor explains the exercises to the attendees and suggests different approaches like pair programming, guided programming, or team coding. All of them are supervised by the instructor that will support the attendees, moderate their participation, and make suggestions, corrections and comments for both platforms.
Around 25% of the time is dedicated to the theoretical explanations and discussions about the contents and their implications and the other 75% is devoted to coding together the solution of the exercises that illustrate and reinforce all the covered concepts.
Every attendee will get access to a (Git) repository of code per platform (Java & Swift), written by the instructor. The repository contains step by step solutions to all the exercises in all the different iterations, using commits for each one of them. The attendees can use those repositories to follow their own pace and review or repeat each exercise individually when desired, starting from a codebase that is known to work as expected.
The instructor uses slides as support material to cover all the theory. Those slides contain all the covered topics, but they don’t pretend to be an exhaustive guide for them. The slides will be provided by the end of each session.
The explanations and solutions to the exercises use programming best practices, such as design patterns or clean code. Swift code is developed using version 4.x of the language. Where relevant, attendees are enticed to argue about the best approaches to implement the solutions.
About the trainer: Jorge D. Ortiz Fuentes
Jorge is a freelance dedicated to mobile development, security, and systems architecture. As a developer he started to work for the M.I.T. in 1993 and since he has collaborated in many software projects. Most of them were internally for HP where he worked for more than 15 years. Since 2008 he has been working in different aspects of mobile development. After playing with PalmOS, he learned Android programming for the first Google App contest and immediately started to play with the first iPhone SDK. He often participates as instructor in the best iOS and Android Bootcamps in U.S.A. and Europe. He has recently founded Canonical Examples to help other developers to take a step forward and become senior developers in a very demanding market.