Learning a new language is what we do as engineers. It’s fun, it’s reinvigorating, and it’s challenging. But it’s not often that you learn a brand new language and then implement it side by side in a code base with another language. Especially when the other language is sad because it knows you’e replacing it and it doesn’t want to play nice with the new guy. At URBN, we made a decision to write Swift for all new code even though Swift wasn’t (still isn’t) stable & several of our apps were 100% Objective-C. There were challenges, like learning a new language while trying to still push production feature releases, or stumbling through interoperability, or massive breaking changes with language updates. But we figured it out (so far). We’ll take a look at some actual code and some of the things we did to make this process as seamless as possible without introducing too much technical debt for the long run.