How and when did you get into programming? And into iOS?
How far back do you want to go 😄? Me getting into programming has to be taken in the context of my home country, Romania. I was born in 1989 so I grew up in post-communist Romania. Things weren't as open as they are now, we didn't have that much exposure to new technology. However, I was exposed to computers from quite an early age. My mom's job had something to do with computers (honestly not sure exactly what, I was 5 back then.. I think something with database management) so around '94 or '95 she would sometimes take us to her workplace after hours or in the weekends to play some computer games. We got our first computer at home in 1996, it was an Intel 486 and I was very drawn to that. Mostly to play games, of course, I was 7 back then 😁. I remember for the whole first year the computer had MS-DOS installed, with Norton Commander on top of that. It was such a big change when my cousin installed Windows 3.1. on our PC 😁
I "officially" started programming when I was in 7th grade, in middle school (or gymnasium or whatever you call that, I think it depends on each country's education system). So I was 14 back then and in that year's curriculum, I had a programming class. We were using Turbo Pascal, and were doing things like finding the maximum value in an array of numbers, filtering an array for odd or even numbers, or other basic stuff like that. That was very appealing to me because I enjoyed what I basically saw as me telling the computer what to do 😂. So I give the computer a list of numbers, and then I ask it which one is the biggest one and it prints it out on screen? How amazing is that? And what was even cooler is that I taught the computer how to do that.
In high school, I chose a track that was heavy on the programming side, and there we used C++ (but we didn't use the object-oriented part) and studied basic algorithms. I also took part in some local programming competitions, which was quite fun. And after high school, I chose to do a bachelor degree in computer science, and then I moved to Denmark to do an M.Sc. in Digital Media Engineering.
And how I got into iOS? I was in the middle of my second year of bachelor, after one year of algorithms and data structures and one semester of object-oriented programming in Java. But we didn't make anything that had a GUI, all we did was run from the terminal. And a friend of mine who was a teaching assistant got me into programming for Android, and I was very hooked because I finally got to make something that had a user interface. And it felt amazing to write some code and then be able to see the result of what I did running on a mobile phone. In the meantime, that same friend of mine was reading up on programming for iOS devices. He had the big advantage of actually having a mac. As I said, this has to be taken in a local context: in 2009 in Romania, very few people had macs. And my friend managed to do something amazing: he convinced a local Apple reseller to sponsor our university with 6 mac minis. So we spent a lot of time in that classroom following Paul Hegarty's Stanford course on iTunes U. This was in the spring of 2010, and I remember how weird it seemed for me to have to open 2 separate applications, Xcode and Interface Builder (yeah, they were separate back then) and drag the outlets from one application to another and then ✨ magic ✨ happened and you could refer to the button you see on the screen in code. To me, that was light years ahead of what we were doing in Java in the actual university courses. In 2012 for my bachelor thesis I had an iPad app as my project.
And then in 2013, I applied to Google Summer of Code, which is a programme where Google pays students to work on open-source projects. I applied to work on an iOS project, a non-emergency issue-reporting app for the City of Bloomington, Indiana in the US. I was accepted, and with the first batch of the money sent by Google (luckily, they send half of it upfront) I bought myself a MacBook Pro, so I could actually work on that app (I was still using a laptop PC before that). And then in 2014, I joined Nodes in Denmark and only did iOS since then 😃.
That's quite a journey. I am also honestly amazed you are able to recall so much. I am curious what was the Bachelor thesis app about? Do you remember your first impressions when Swift was announced?
I've thought about my journey as a software engineer and as an iOS developer quite a lot, because from the outside it seems like a clear trajectory: I've always been fond of computers, then I liked programming, then I got into mobile and then into iOS. But if I think of it, me doing iOS is mostly because my friend saw something in me and got me to work with him in our small "research group" looking into programming for iOS devices. We ended up creating a curriculum and an elective course that students of our university could take.
The Bachelor thesis project was a collaboration set up by my friend between our university and a professor from a university in Toulouse, France. This professor had built an expert system to help people have a balanced diet. And then he wanted to make it into an iPad app, so he did that. But the app looked like a mix between a website from the early 2000s' and a PowerPoint presentation with a lot of WordArt. So my project was to take that iPad app and refresh its look, turn it into something that felt "at home" on an iPad, something closer to what Apple would do. I remember I spent a lot of time reading Apple's Human Interface Guidelines that semester.
I remember when Swift was announced, I was watching the WWDC keynote at home and I was super surprised and, to be honest, a bit annoyed. I was at the beginning of my career journey, I was actually enjoying Objective-C and surprisingly, its syntax, I had just got to a point where I felt proficient in Objective-C, and there comes Apple telling me to start all over in Swift. But we started looking into Swift from day 1 at Nodes, and from the autumn of 2014, we had started all new projects in Swift. It felt nice to work with what was back then cutting edge technology. I think that also gave us an advantage in hiring because developers are attracted to shiny new things 😁.
I am curious if you were thought that maybe waiting for Swift 2 or Swift 3 would have been better option?
Back then I didn't think it's better to wait. And looking back now, I don't regret that we were early adopters. But during the Swift 2 -> Swift 3 migration with the Grand Renaming I'm sure I wished we would've waited 😂.
What about SwiftUI? Did you company started using it already, similar to Swift years ago?
We haven't made the jump as quickly as we did with Swift. I think the main difference is that when SwiftUI was announced in 2019, it was only for iOS 13, so you couldn't use it on older iOS versions. If I remember correctly, this was not the case with Swift, which could be used for apps supporting a lower iOS version too right from the first version. We have been looking into SwiftUI and we continue to do so; we are starting to integrate it into some of our projects now, and one of our current projects has the whole UI built in SwiftUI.
I see. Your current title is "iOS Director" right? Could you briefly summarize what it means in terms of responsibilities? I guess the adoption of SwiftUI is mainly your say?
Ha, someone's been looking at my LinkedIn profile 😁. Yeah, my current title changed to iOS Director at the beginning of May, so this is something new for me too. This also has to be seen in the context of our company. Nodes (the Danish company where I work) has been acquired by Monstar-Lab (a Japanese company with a strong presence in Asia in multiple countries) in 2017. Early this year we have merged the brands under the Monstarlab name. With the merging, there have been some changes in strategy and focus and there was a need for an iOS Director position, which was appointed to me.
The iOS Director is a local title, and it means officially that I am in charge of the iOS practice leadership in Denmark (our Copenhagen and Aarhus offices). I think this suits me quite well because it enables me to encourage even more knowledge sharing and collaboration, sharing of good articles and tools (something I'm already doing for iOS Goodies) and promoting best practices and things I care about in an app (good UX, native feel, accessibility).
To some degree, one could think adopting SwiftUI is my say. But it's not like there will be one day where we all of a sudden start writing SwiftUI instead of UIKit because I say so. We work on multiple projects, with different lengths, different clients, different deployment targets, etc. So I think the classic "it depends" is a much better answer. Also, I don't want to be the kind of person who says "I'm the leader, I make the decisions, let's do SwiftUI". Although that particular decision would probably be quite popular in the team 😁. I'd much rather have a debate or discussion in the team, we bring arguments and then we make the decision together.
Got it! Are there some "knowledge sharing" practices you would recommend other iOS teams adopt?
It depends. It depends on the size of the team, the dynamic, the distribution (location), remote/office, etc. I don't think there's a solution that works for everyone. We have a monthly iOS meeting and we're also organizing squads, each squad having a monthly iOS meeting. There's an architecture squad, a packages squad, an iOS tooling squad, and some non-iOS-specific ones. And based on needs we can also organize some more meetings. We also don't want to have too many meetings, as that's not very productive.
But I think it's very important to keep the enthusiasm high and make every member of the iOS team, no matter where they work from, feel part of the team. I think this is very important, especially in an agency like ours, where most of us work on different projects. We don't want to get fractured, we still want that team feeling. And with that team feeling there comes knowledge sharing too. This can mean anything between sharing an interesting article in our team Slack, giving an internal talk about your current project, code reviewing, etc. I think knowledge sharing isn't something you can force upon a team. It has to come naturally, every member of the team has to feel that they can share something they learnt. And I think that comes down to team spirit, to having a great team atmosphere.
Let's talk iOS Goodies! How did you become the "chief" curator?
I started contributing in 2015, first by fixing a wrong link, then I started adding articles, and slowly I became one of the main contributors to the newsletter. In September 2017, Rui and Tiago, the founders of iOS Goodies decided to hand it over to someone else, so they approached me and I agreed to be in charge of it.
If my quick math is correct, thats around 180 issues published by you? When you accepted the "job" in 2017, were you thinking years ahead? 🙂
I checked now, the first issue I curated completely was Issue 192 on 18 August 2017. I took over all aspects of iOS Goodies in September of that year. So very soon I will have sent 200 issues of iOS Goodies (not counting the 2 Tuesday WWDC specials in 2019 and 2020). I think last week I have just sent out more editions of iOS Goodies than its founders.
But to answer your question, yeah, when I accepted to be in charge of iOS Goodies I knew it wouldn't be only for a few months. But I had no idea that almost 4 years later I'd still be doing it. So many things can happen in 4 years, the industry itself changes, it's amazing that this newsletter has been going on for so long. And we're not even the longest-running iOS newsletter, look at iOS Dev Weekly which Dave has been running for more than 500 weeks, for almost 10 years now.
Did you spot any notable trends/changes in the years preparing iOS Goodies?
The trends are mostly dictated by Apple and the tech they announce each summer. We have a lot of content about SwiftUI, even though most of the apps out there are probably still UIKit even 2 years after the SwiftUI announcement. Combine is getting more and more popular. There are also the short-lived trends where the community is filled with a lot of articles on the same topic for a short period, such as dark mode support in the summer of 2019, testing push notifications in the simulator when Xcode 11.4 made that possible, and so on.
But taking a step back (and this actually pre-dates me being in charge of iOS Goodies), I think Swift is the biggest change in our community. iOS development and Swift are somehow synonyms, even though you can do iOS development in other things than Swift, and you can also do something else with Swift than iOS development. Before 2014, our community was creating content about iOS. If you look closely at the content we have today, a lot of it is Swift-related. And it's the same at the conferences. And that's not a bad thing.
But I somehow miss the kind of content (little as it was) from the old days. They were focused on architecture, design patterns, UIKit and the iOS SDK. And more focused on the actual apps that we're building than on the programming language that we're using. Think of the first issues of objc.io or browse issues from 7 years ago from iOS Goodies or iOS Dev Weekly and I hope you'll see what I mean. I somehow wish there would be more content focused on iOS and less on Swift.
I think I have heard this also, that currently the focus is maybe too much on the Swift itself. I would certainly welcome more posts and other content about cool frameworks such as Vision, Natural Language and others.
You obviously see a lot of articles each week. Are there certain "features" or styles that make them good fit to feature in iOS Goodies?
I don't have a checklist or anything like that. And in the end, it comes down to the personal preference of the curator, in this case - me. The articles have to be correct and easy to read and understand. I'm not a big fan of tutorials that contain a lot of code. I mean, don't get me wrong, I like tutorials and I think they have great value. I've learned a lot from tutorials. I'm not a fan of including tutorials in iOS Goodies.
And I don't like linking to Medium, because of their paywall. And it's a pity because there is some very good content out there. I have made it into a rule that all the articles linked in the newsletter have to be freely available, and that includes without the need to create an account to read them. If someone submits a Medium link that isn't free, I ask them to create the link with a friend referral, which makes it free for everyone to read. Otherwise, I can't include it in the newsletter.
And I try to promote new voices in our community and bring new people into the spotlight, while still maintaining the overall quality level of the newsletter. It's a very fine balance that I try to find. In the end, I include the articles that I found most interesting that week.
You have a magic wand... and can change one thing about iOS development. What?
Better compile times would be awesome. It's been 7 years since I last worked in Objective-C, but I think I remember the tooling, debugging and compile times were a lot faster back then. At least it seems that the long build times are solved by improving the hardware 😂. Looking forward to getting my hands on an Apple Silicone mac 😁
Yea M1 seems like the solution 😁
To move away from coding and curating... What do you do relax?
Not that much, to be honest. I go running once a week (I'm quite proud I've been able to run weekly for more than 1.5 years now). My wife and I like to go out and to travel, but that hasn't really been possible. We also like taking long walks, but with 2 kids under 3 that became a bit more difficult. Still, it's a lot of fun :). Maybe I can add gardening on the list. I don't consider it a hobby, but it's also not bothering me, and someone has to cut the grass and trim the hedges 😂. And I guess it is relaxing 😁
Yea, someone has to do it 😁 Thanks so much for taking the time! Do you want to give someone or something a shoutout?
Thank you, Filip! It's been really nice chatting with you.
Uh, shoutouts.. yeah, so many people. Shoutout to my wife (who's also an iOS developer) and my family for supporting me. To my friend who I mentioned at the beginning of the chat and who got me into mobile and iOS development. I guess I didn't realise it back then, but I owe a lot of my career trajectory to him. To everyone who's building open source tools that make our life easier (CocoaPods, Carthage, Fastlane, etc). To everyone who's writing articles and tutorials on iOS development and continue to amaze me when curating content for iOS Goodies. To all who are hiring or mentoring juniors. And to all who do their best to make our community more welcoming for everyone: I wish we could all be more like you.