S01E05: [TDD 🍅 4] Swift Mutation Testing and Refactoring

S01E05: [TDD 🍅 4] Swift Mutation Testing and Refactoring

In this episode, we finish the Game Flow by creating a solution for accumulating the questions and answers and a new method for routing to the result.

We use the mutation testing technique to check if the behavior of the Flow class is well covered by our tests...

Read More

S01E04: [TDD 🍅 3] Swift Closures and Recursion

S01E04: [TDD 🍅 3] Swift Closures and Recursion

We begin the third tomato by sanitizing our FlowTest class. We refactor the tests by removing duplicated code, we talk about different ways for organizing the test setup code and we showcase the factory method for the creation of the system under test. These changes will prove very valuable as the project grows.

Read More
3 Comments

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