Welcome to another installment of our Top App Dev Interview series!
Each interview in this series focuses on a successful mobile app or developer and the path they took to get where they are today. Today’s special guest is John Sundell.
John Sundell, previously a lead iOS developer at Spotify, is now enjoying life as a freelance developer. John is now a respected member of the iOS community with his headline Swift by Sundell and various talks at conferences around the world. John is also a keen open-source fan and contributes to regular projects on Github.
John, you were previously a lead iOS developer at Spotify. How and why did you make the decision to go freelance?
I worked at Spotify for 3.5 years, and it was an amazing experience. I learned so much, got to work on a really exciting product and met so many great developers. But after those years, I felt like I was ready for some new adventures.
In order to continue growing as a developer, and to get to work with an even broader set of technologies, I decided that my best option was to go freelance to be able to work with more people in more different contexts.
What was the best thing about going freelance and why?
The freelance lifestyle has always appealed a lot to me (I was a freelancer before I joined Spotify too), since it gives you so much freedom as to how, where and who you’ll work with.
I love working remotely since it lets me set my own schedule in a more free-form way – which is super useful since I love to do things like travelling and working more flexible hours.
I’ve never been a huge fan of strict processes and office politics, and being a freelancer lets me get away from all of that and enables me to focus on coding and working directly with other developers and designers.
What do you miss (if anything) from working at a company like Spotify?
Only the free snacks in the office! No, just kidding ;]
One thing that was incredibly cool working for a company like Spotify was working on such a large-scale, popular product. You could be building a UI, and then two or three weeks later, you would see someone on the subway using that UI that you just built.
That was kind of amazing and surreal in many ways. So seeing your work have that kind of impact on people’s everyday life was an amazing feeling. Another thing I miss sometimes is being able to spend a lot of time focusing on architecture and designing systems.
I’ve always loved system design, and nothing beats designing a system that needs to be able to support millions and millions of users.
Most developers are worried about getting enough work as a freelancer, what advice would you give to said people and how did you manage this?
My top advice would be to establish a solid network of potential customers and partners before going freelance. Get in touch with people that you want to work with, and always be open to making new connections.
Most developers are not super interested in working with sales, so the best approach is usually to work with people and companies that you know since before going freelance. Conferences, social media, blogs and GitHub are great ways to build a network and get in touch with potential customers, and once you have a network established (which doesn’t have to be that large by the way), it shouldn’t be too hard to find new work – developers are really high in demand, as we all know!
Another key thing is building trust. Always under-promise and over-deliver, and go the extra mile in order to make your customers extra happy. That way, chances are those customers will refer you to even more customers, and that way you’ll keep building your network and get to work on even more cool projects.
Can you give me a full detailed breakdown of your average day to day schedule? E.g 9 AM start working, 10 AM have a coffee/break.
My dog usually wakes me up around 8 AM because she wants to go for a walk, so that’s how I start my day. We usually go for a 30-minute walk, and after that, I get ready for work.
I like to work in 2-3 hour periods, with a 15-minute break in between. That way, I can stay focused, I don’t waste time while working and I don’t feel stressed during the day.
I love coding, but I also love relaxing. Taking a quick 15-minute walk, or just relaxing on the couch for a while, is a great way for me to regain energy and re-focus for the next task. I don’t have a strict schedule (again, one of my favourite things about being a freelancer), so that 2-3 hour split is how I manage most of my time.
In The Spotlight
John, I would say in the last year or so, you have really become a key player in the iOS community. How did this happen and was it something you planned to happen?
Like you say, it’s only been in the last year or so that many people have started to notice my work – but I’ve actually been sharing things with the community for over 5 years.
This is something I spoke about in my talk “Sharing” at the App Builders conference this year, the fact that there’s a pretty big backstory behind what at first might look like something that “appeared out of thin air”.
Like everyone else, I started with an audience of 0, and with me being the only contributor to all of my open source projects – but over time things grew into what you see today. I love sharing my work since it lets me work together with so many people from around the community.
Whether it’s open source, blogging, podcasting, or something else, getting feedback and contributions from people around the world is incredibly motivating and has helped me grow so much as a developer. So I never set out to become a “key player” or to get a big audience (although I’m extremely thankful to everyone who follows me and likes my work), instead – I’ve always been driven by the idea that we can all make our lives as developers so much nicer by sharing parts of our work and solutions with each other.
You have spoken at many conferences around the world. What is it you love about conferences, and why do you attend them?
I love talking to other developers, to share ideas and to hear people’s stories. It’s easy to fall into the trap of thinking that the problems you face are unique to you and your team, but very often many other people are facing the exact same challenges.
So when I go to speak at a conference, it’s not only to share learnings and to do a talk but mainly to speak with other developers – it gives me so much inspiration, ideas and motivation to keep learning new things.
I also love travelling and experiencing new places and new cultures. Like how being exposed to new ideas helps me grow as a developer, I like to think that being exposed to new cultures helps me grow as a person.
Working as a freelancer and speaking at various conferences must be very time consuming. How do you manage your time to fit all this in?
That’s the number one question that I get asked (well, maybe tied with “What Xcode theme are you using?”) – how I manage to work on so many different things.
Just like with sharing my work, this is something I’ve practised and tried to improve over many years. I used to be extremely disorganized and had a large number of side projects that never went anywhere, but over time I’ve learned how to maximize my productivity without working too many hours.
For me, it’s really a mixture of productivity and time management. Like I mentioned, I split my day into 2-3 hour chunks, with each chunk being focused on a specific task. I also use a system called “Quick wins” – I keep a list of tasks that should take less than one hour to complete, and then I do a few such tasks each day – which helps give me a sense of accomplishment.
I wrote about a lot of these things (and more) in my Productivity blog post, but in general, I think to be mindful of what you spend your time on can really help you achieve a lot more things, without adding stress – at least that’s how it works for me.
I really enjoy reading your weekly Swift by Sundell. How did this happen and how do you manage this on a weekly basis?
That’s great to hear :) I love writing the blog, and I’m happy to hear that people seem to enjoy it, learn new things from it and that it generates some interesting discussions around the community.
Like most of the things I do, it started out as an experiment/challenge. I had tried blogging before, in 2015, without it going anywhere – and I think a big reason that my previous attempt failed was due to lack of focus and goals. When I tried blogging again, at the beginning of 2017, I wanted to do things differently.
I set myself a challenge to see how many weeks in a row that I could write a new post each week, and I decided that no post can take more than 3-4 hours to write. That way, I end up with posts that are more focused – easier to read and easier to write.
Having the weekly challenge pushes me to produce something each week, and it doesn’t have to be revolutionary and amazing, just sharing some ideas from the work that I do every single day.
Can you share any statistics (or screenshots) for your weekly Swift by Sundell?
While I love to celebrate the occasional milestone, I don’t want to focus too much on statistics and numbers.
My goal is always to produce the best content I possibly can, regardless if my audience includes 100 people or 100,000. One thing that I am very excited about though, is the fact that Swift by Sundell is read by people in 177 different countries!
That’s more countries than I’ll probably ever visit in my entire lifetime, so being able to reach people in so many different places around the world is incredibly exciting!