Image for post
Image for post
Photo by Marek Levák on Unsplash

Refactoring an unfamiliar working system is both risky and complicated. Add to this the need to simultaneously implement new features and persuade management to allocate time for the job to the equation; the task may seem impossible! However, if you create a good plan, this will be far easier than it may seem.

Please note: I won’t write about refactoring examples. Instead, I will leave that for another post. The main goal of this article is to show you how to begin the process.

Our starting point

The app that my team inherited didn’t have production issues. With 1.1M users, it was 99.9% crash-free. However, the codebase was a real mess. There was no architecture, the app had over 600 warnings, dependencies were are all over the place, unneeded code was everywhere, some classes were too big to maintain, and there was very little documentation. …

Image for post
Image for post
Amazing animation by Charles Patterson

When we need to persist data, Core Data is always my first choice. However, there are some cases when Core Data isn’t the best solution. If we have a considerable data set, and we need to perform high-speed search queries, full-text search (FTS) is the solution. Unfortunately for us, Core Data doesn’t support the FTS. Therefore we need to use SQLite.

Before you continue reading, I want to let you know that the code you are going to see is just a proof of concept. Many things can be better, handling errors properly for a start. …

Image for post
Image for post

Software development is very challenging. Firstly you have to understand the problems you are solving. Then you need to think of the solution. Depending on the solution, you have to research proper technology. During the process, you need to have a clear perception of the system you are working on and to think longterm. If not any future changes will be hard to pull off.

It’s not enough to be a great engineer to develop and maintain the software. The effort you invest in the process has to be excellent too. I’ve made tons of mistakes only because I’ve lost the focus. …

Image for post
Image for post
Thanks to undraw for the illustration

Writing beautiful code is often underestimated, especially by inexperienced developers. The main reasons are that writing beautiful code takes more time, and you won’t see its benefits right away.

What is beautiful code?

Beautiful code is clean, well-organized, and simple to upgrade. It is easy to read, understand, and navigate. To create and maintain such code, I follow eight simple principles.

1. Have coding standards

Coding standards are a set of coding rules. There is no universal coding standard, every product team might have its own written and unwritten rules. Among important ones, I would mention guidelines for

  • naming variables & naming methods,
  • how to group methods & how to group…

Image for post
Image for post

Flow coordinator pattern is excellent for structuring app navigation and making code clean and reusable. However, it has some flaws too. The coordinator is not working great with native navigation and back swipes.

The goal

The goal is to modify flow coordinator so we can use it both with custom and native back action, as well as swipe back. However, it’s a necessity to maintain clean code which is easy to read, reuse and upgrade.

The problem

The major problem with UINavigationController is that clicking on the default back button, or navigating back with a swipe, pops the view controller and the coordinator is not aware of it. …

Image for post
Image for post
Photo by Sébastien Marchand on Unsplash

Improving career is, unfortunately, never-ending process. Even if we talk just about one area of expertise, there will always be new technologies, a different point of view, a new book to read.

Having that idea on your mind, how should you tackle the problem? Is there a point where you should say stop, that’s enough? You may get the title or salary you want, but that means self-development is far from over.

If we want fulfilling careers, we will spend the rest of it improving our skills. We’ve discussed ideas about how to enhance your career in part1 and part2. However, can we do it for forty years and more? …

Image for post
Image for post

I’ve already written about Alamofire API manager, but with a new Swift 5 Result feature, I wanted to upgrade it a little bit. We are going to use it with Codable protocol and make our life much more relaxed. If you aren’t an Alamofire fan, you can remove it. However, the principle, combining Codable and Result, you should try to implement in your network handler.

The idea is to build a reusable and straightforward API manager. We have to create some helper classes using a single responsibility principle — ErrorObject, EndpointType, EndpointItem, NetworkEnvironment. …

A guide for experienced ones

Image for post
Image for post
Photo by Brooke Lark on Unsplash

In the first part of the series, we’ve discussed career improvement ideas for novices. As time goes by, you stop being one. However, It doesn’t make you an expert yet. Now expectations are even higher you have more responsibility and more tasks to do at the same time. To stay on the right track, you have to step up your game even more.

Here are suggestions that helped me become a senior software engineer and team lead. These are also the advice I give to my colleagues. And I can proudly say many become notable individuals and productive team members.

Difference between views in the previous chapter and ones here is that for some you should have a little bit more experience in the industry, so you could fully benefit from them. …

Image for post
Image for post

Improving your career is not an easy task. With new technologies emerging every day and with expectations raising while you are getting more experienced, it’s easy to give up. It’s not enough to work hard you have to work smart too, to understand and to stay on the top.

Here are some tips that helped me become a senior software engineer and team lead. These are also the advice I give to my colleagues. I can proudly say many become notable individuals and productive team members. …


Pavle Pesic

Senior iOS Developer & Mobile Team Lead

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store