S01E03: [TDD 🍅 2] Swift @escaping Closures and Retain Cycles

S01E03: [TDD 🍅 2] Swift @escaping Closures and Retain Cycles

In this episode we continue the development of the Flow as we start progressing to next questions. We accomplish this by providing a closure as the answer callback in the Router protocol.

We discuss about the meaning of placing the @escaping instruction in a protocol and we examine our options for dealing with retain cycles and memory management...

Read More

S01E02: [TDD 🍅 1] Creating a Swift Framework - The Game Engine

S01E02: [TDD 🍅 1] Creating a Swift Framework - The Game Engine

In this episode, we dive into our first lines of code. Before we begin building the project, we agree on a set of rules such as:

  • Follow the Pomodoro Technique for segmenting workload and time
  • Develop the system by writing tests first
  • Separate the responsibilities of the system in modules

We start by creating the QuizEngine project, a module responsible...

Read More
2 Comments

S01E01: Swift App Idea and Prototyping with Storyboards

S01E01: Swift App Idea and Prototyping with Storyboards

In the first episode of the series, we discuss the idea of building a Quiz app for iOS. 

We kick off the season by discussing some of the features of the app such as question and answer formats and possible multiplayer options...

Read More
Comment

Professional iOS Engineering YouTube Series

Professional iOS Engineering YouTube Series

We are very excited to share with you the launch of our new series Professional iOS Engineering, on the Essential Developer's Youtube channel.

During the series Caio and Mike pair program and demonstrate the discipline of test driven development, the power of modular systems, and how to welcome future requirements. They maintain a sustainable development cycle and continuously reflect on how to become more effective while paying attention to technical excellence and good design.

Read More

Adapting and Succeeding in the iOS Industry

Adapting and Succeeding in the iOS Industry

When Apple released Swift to the world, a new era of excitement began.

I've seen this trend of new technologies coming and going many times, but when a company as big as Apple releases something, you can be certain it comes with a staying power. This is particularly true of a language that Apple is actively investing in and betting on as the future of development on its platforms...

Read More
Comment

Engineering the Journey of Continuous Learning

Engineering the Journey of Continuous Learning

It's important for professional software developers to always be learning, but this often requires effective time management. Indeed, balancing a professional and personal life, all while having to constantly improve by gaining and applying useful knowledge, can be challenging. 

A valuable discipline I’ve practiced over the years is delegating the discovery of relevant and high-quality content to others simply by following their work and activity. This technique can save time required for research, it can serve as a quality filter to the data encountered, and it can expose you to opinions of people who may not necessarily agree with you (something I recommend).

Read More

It's Time To Fix That Swift Class

It's Time To Fix That Swift Class

Recently I faced an interesting problem. A new client wanted to present some HTML content in a UIWebView — sometimes from an external URL, sometimes from a local URL.

The client’s application was already presenting HTML, so I thought it’d be easy to reuse that component. To my surprise, the WebViewController class was 817 lines long. Presentation, flow, error handling, business logic, and more. It was a nest of conditionals with no tests...

Read More

Consequences of Ineffective Communication in iOS Teams

Consequences of Ineffective Communication in iOS Teams

In the software industry, it’s not uncommon to encounter the following behavior in teams: developers are excited and productive at the beginning of a new project or building a new feature, but as the development progresses and time goes on, their enthusiasm decreases.

I believe one of the reasons behind this change is the ineffective communication between team members. As software developers, we sometimes fail to understand the needs of our peers, and at the same time, we fail to effectively communicate our own needs. Let me illustrate this with a story.

Read More

Fearless and Productive Use of 3rd-Party iOS Frameworks

Fearless and Productive Use of 3rd-Party iOS Frameworks

When I began my professional career, I worked in a company where using third-party frameworks wasn’t allowed.

We had to write all our features from scratch, building them in such a way that they could be reused in additional projects as our own internal frameworks...

Read More

Providing Value as an iOS Developer

In my last blog post, I explained why independent deployment is not achievable in systems where you don’t have control over the release process, like Apple’s App Store. However, that principle extends to independent development, open/closed systems, modular design, and more that can maximize your team productivity, allow you to focus on interesting problems to solve, and cash you that full bonus at the end of the year.

It extends to being a valuable developer that can generate huge profit...

Read More
/Source