What every great iOS engineer needs to know (part 2)

Platform Knowledge

In the first part we’ve covered what I believe are the required engineering skills to do a great job in software development. In this second part, we will talk about what platform specific knowledge is needed to be complete iOS Software engineer.

Continue reading “What every great iOS engineer needs to know (part 2)”


What every great iOS engineer needs to know (part 1)


Being iOS Software Engineer is awesome – it’s fun, it’s challenging and it (in some cases) allows you to be creative. Apart from that, iOS engineers are one of the most wanted engineers on the job market. Having in mind all the different devices that Apple has (and will have), this trend will surely continue in the future. If you are iOS engineer yourself, you’ve probably felt that by the number of job offers you receive. But, it’s not only the demand for iOS developers huge – there are a lot of iOS engineers too. Although it’s not possible to count all the ones out there, this might give an indication.

This indicates that finding a great iOS engineer might be like finding a needle in a haystack.

Continue reading “What every great iOS engineer needs to know (part 1)”

Algorithms in Swift

Let’s get back to college and the great Algorithms and Data Structures course. That’s one of the most fundamental Computer Science courses, which develops the analytical and problem solving skills of the students. Apart from that, it’s also very addictive and great for learning new programming languages and concepts.

Recruiters also like to use them as a first evaluation of the technical skills of the job candidates. Unfortunately, in the industry, you don’t often get the chance to use most of these algorithms – although probably that’s not the case with the big tech companies solving large problems for millions of users. Therefore, as the time goes by, we tend to become a bit rusty in this skill, so I’ve decided to get a refresher in Algorithms by tackling the Codility training centre┬áproblems. And there’s no better way of doing this than with Swift. Even if you think you are already a pro at Swift, you might get surprised by the new things you get to┬álearn by solving these problems.

Continue reading “Algorithms in Swift”

Swift Class Diagrams and more


Documentation is one of the things that developers don’t like to do much – but it’s something very important not only for newcomers to the project, but also to the people who originaly have written that code. We tend to forget what’ve done two weeks ago, so it’s always good idea to write down what we were trying to achieve with that code. Apart from the docs, it’s very useful to have a drawing which will provide a high level overview of the architecture of the app we are doing – what classes, value types and protocols we are using, how are they connected to each other and what methods and properties they have. Something like a UML class diagram of the current state of the project.

Continue reading “Swift Class Diagrams and more”

Reactive image downloading and caching with RXSwift


Downloading images from a URL is one of the most common things that mobile developers do. Most of the solutions have to also support image caching (both in memory and file based), so the same image is not downloaded everytime when is needed – because that’s wasteful and ineficient. Also, one of the challenges of implementing such a solution is to easily integrate it in a table/collection view feed, where the images would be downloaded lazy and all of the corresponding cells will be updated with the right image when it’s successfully downloaded from the server. In this post, we will look at a way how to implement this in a more functional reactive way, using the great RXSwift library. Before you continue with the post, please make sure you first go through Networking in Swift and Functional Reactive Programming and Table Views, because we will be using stuff from those posts.

Continue reading “Reactive image downloading and caching with RXSwift”

Developing for Samsung Gear VR


Virtual Reality might be the next big thing. All of the big tech companies are starting to invest in this industry, so things will surely get even more interesting in the future. Currently, virtual reality is mostly smartphone based, with additions like Google Cardboards and Samsung Gear VR currently the most popular ones. The Samsung Gear VR is definitely the more sophisticated one – it has it’s own Oculus Store. On the other hand, the Cardboards are just lenses in a cartoon with a placeholder for a smartphone, but things might change very soon when the new Google VR platform Daydream comes out this fall. So how to put a Samsung Gear VR app on the Oculus Store? Developing and shipping such an app to the store was pretty new experience, so here are the lessons learned.

Continue reading “Developing for Samsung Gear VR”

Swift considerations and decisions


Swift is already 3 years old, but still changing and improving a lot. Its unique features are starting to change the developers’ mindset, moving away from the old Objective-C concepts to some new ways of thinking with value types, protocols, generics, immutability. It’s a pitty and a lot of unlocked potential if you decide to go with Swift, but still bring the coding style learned from Objective-C, i.e. develop an Objective-C app in Swift. You are better off with Objective-C in those cases. In this post, I will explore some design considerations and decisions when doing a Swift app, with lessons learned from the Swift projects I’ve worked on as well as the great iOS community.

Continue reading “Swift considerations and decisions”