How I make tech decisions, and the various phases that I go through in order to make decisions that have a higher chance of standing the test of time.
One thing that almost all apps and frameworks have in common is that they tend to grow in both size and complexity as time passes. As a project grows it becomes more and more important to maintain a solid and consistent structure, but at the same time it also becomes increasingly difficult to do so.
Adding new features to existing code can be really challenging - especially if that code is heavily used throughout one or many projects. Backward compatibility can in many ways help us make such changes in a much smoother fashion, so this week, let's take a look at a few different techniques that can help us make changes to our code base fully backward compatible.
Peter Steinberger, creator and CEO of PSPDFKit, joins John to talk about building and maintaining a large framework project, how PSPDFKit came to be, how his team works with Radar, and all the challenges and excitement that comes with running a business based on a closed source SDK.
Being able to use unit testing in a productive way often requires the various parts of an app to be written with testability in mind, which isn't always the case. This week, let's take a look at a few different refactoring techniques that can help us make non-testable code much easier to test.
When and how to write documentation and code comments tends to be something that causes a lot of debate among developers. This week, let's take a look at a few simple tips and tricks that can let us write code that is more self-documenting - code that makes the underlying intent and details more clear, simply by the way it's structured and how it's written.
When developing new features for an app, it can be really useful to have some form of mechanism to gradually roll out new implementations and functionality. Feature flags can act as such a mechanism, since they allow us to gate parts of our code base off under certain conditions, either at compile time or at runtime.
Matthias Tretter of MindNode joins John to talk about Auto Layout, working on the iPad, refactoring Massive View Controllers, dealing with old code and much more.
While force unwrapping is an important feature, it also circumvents parts of what makes Swift so great. However, dealing with optionals and unknown types in a safe way can require quite a lot of code, so the question is whether we want to do all of that additional work when writing tests as well?
An important part of maintaining any app, framework, or system is dealing with legacy code. This week, let's take a look at a technique for dealing with legacy code that lets us replace a problematic system class-by-class, rather than having to do it all at once.
Flakiness is what happens when tests don't run consistently, when different circumstances produce different results. This week, let's take a look at some easy-to-apply tips and tricks that can help reduce flakiness, and make our tests more predictable within any environment.
One thing that can sometimes be quite cumbersome when working with Swift on a larger scale is how long it can currently take to compile. In this article, let's take a look at some practical tips and tricks that I’ve found can make compile times faster.