Antoine van der Lee is a mobile (iOS) developer and team lead at WeTransfer, and believes that it’s impossible for someone to know everything there is to know about a particular topic. In Antoine’s case, this is mobile software development. It’s hard to find the time to level up or to improve at a thing, but Antoine says that building deliberate time for learning into his schedule has helped him make leveling up part of his daily routine. That way, he doesn’t have to find the time, because it’s already in his diary.
In this article, Antoine shares some of the strategies he uses to help him level up as a mobile developer every day, and what he’s learned about making them as effective as he can.
Antoine started with website design, but broadened his knowledge on a range of topics through doing hobby projects, like building his own CMS in PHP, and just doing lots of research. His first real-world experience with mobile development was at an internship, working with Windows Phones. He eventually decided he preferred working with Apple and moved exclusively to iOS development.
However, Antoine says that as he advanced in his career as an iOS or mobile developer, his free time to expand his skill set decreased quite quickly. He found that if you aren’t deliberate about levelling up, learning can quickly feel overwhelming.
“Staying up to date with everything… takes a lot of effort”, Antoine explains, “and it doesn’t always have much return on investment.” In other words, consuming as much information as you can will not only be tiring, but will mean you’ll never feel like you’re ever getting anywhere. “Instead,” he says, “what I’ve found is that you need to have a levelling up strategy.”
As part of his strategy, Antoine picks one thing to focus on because he believes that “you can’t know everything” and you need to "pick your battles”. With so much out there that you could learn about, it can be overwhelming to get started, and hinder you even further. He often asks himself: “How likely is it that I will use this in what I’m doing?” and if it doesn’t help him right now, he focuses on something that can.
For his own strategy to level up as a mobile developer, he’s found the following things help him do it regularly, and be smart and critical about how he levels up:
- Learn from your team
- Automate what you can
- Become an expert at Googling
- Join a community that’s relevant to you
- Schedule dedicated time for learning
Here they are in detail:
Learn from your team
Antoine knows that he has blindspots, and that there’s a wealth of knowledge and perspective in his team. He relies on his peers for feedback to help him grow as a developer. When he doesn’t know something, he asks. For feedback to be useful however, you need to know how to ask for it and how to implement it effectively.
For example, when Antoine first joined a team after working alone, he proactively sought clarity on the feedback he received. When he had his pull requests reviewed by senior developers, and didn’t understand their feedback, he asked them to take him through their feedback: “I just sat down with them personally, face-to-face, and asked them, ‘Hey, I would love to get more information on this, I don’t really get it’. You really create that environment for yourself to get input from others.”
Here are some other strategies that Antoine uses himself, and with his team, to foster honesty and trust, and level up as a developer::
- Ask questions with an open, curious mind: If you don’t know something, ask for clarification; and even if you think you understand, take the time to paraphrase the thing and test your understanding against someone else. This shows your team that you’re comfortable with being uncertain, and this makes other people more comfortable to do the same.
- Proactively seek feedback: Rather than waiting for feedback, Antoine always asks for it first. Whether it’s having someone review your code, or something you ship to your team, find someone you trust to point out one thing you can do better next time, and why. In Antoine’s experience, asking for feedback not only helps other people feel more comfortable about feedback, but it helps him pinpoint what he can improve on right now, as opposed to feeling like he needs to get better at everything.
- Utilise peer reviews and pair programming: Leveraging the value of peer reviews and pair programming expanded his thinking, and showed him ways to level up. “I had to be open to other solutions, and that’s when I became a better developer.” Antoine made a point of pair programming when he started at WeTransfer: “I got three senior developers next to me, that gave me feedback on my code, and that really made me progress as an engineer.”
Antoine makes a point to ask his team how he can improve. That way, there’s an open channel of communication for constructive feedback: “You can’t be perfect from the get go. You need to get feedback from your peers so you know what you can improve, where to make progress, or what you did wrong.”
Pro-tip: For this to be really effective, Antoine makes an effort to foster a culture of honesty and trust within his team.
“Sometimes you need to trigger that yourself, if the honest environment isn’t there yet. And sometimes it will be pulled out of you by your team manager who asks things like, ‘How do you think it should go? What do you think you can improve?’ Use honesty to your own benefit; make sure you get input from your peers around you who know best what you can do better.”
Automate what you can
For Antoine, automation means that his team does less mechanical, unchallenging work, and more interesting problem solving. It saves Antoine both time, and energy, which he and his team can then put towards focusing on more important things – things like new problems that help them improve as mobile developers:
“You shouldn’t be wasting time on the things that are cumbersome. If you automate those things by making a bot do them for you, you let yourself focus on better things – things you want to learn or things you want to build.”
At WeTransfer, Antoine’s team has automated their Monday weekly release of builds to the App Store using a tool called Fastlane. Previously, a developer would have had to know what it takes to do the release, create an archive to App Store Connect, make sure the release notes are updated, make sure the app store assets are updated and, after processing, make sure the build is actually submitted.
Automating that workflow means that builds are now delivered automatically, based on which builds have been given a ‘green light’, or marked as ‘good to go’ when testers approve a test build. All-in-all, that saves Antoine’s developers 30 minutes every Monday, which adds up to a lot of time they can redirect towards things they want to learn, focus on, or build.
Before deciding whether to automate something, Antoine asks himself three questions:
- Is the time it takes to automate this thing greater than how much it saves?
- Does automating this thing only solve one problem for me and my team?
- Will automating this thing take away something I enjoy doing?
If he’s answered “no” to all of them, it’s a good case for just automating the thing. However, if the time it takes to set up automation isn’t worth the time you save, or it’s taking away something you actually enjoy doing, Antoine suggests just doing the thing and finding other ways to optimise your process.
Become an expert at Googling
Antoine knows that he can’t know everything, and he still uses Google to find answers to the things he doesn’t know. He believes that learning how to Google well is a skill you can apply to any kind of levelling up.
There’s a lot out there that isn’t useful, isn’t relevant, or isn’t correct, and knowing the difference between a good search and a bad one is a powerful skill. In his experience, the closest anyone can ever get to knowing everything is getting better at knowing how to find the answer:
“I’ve been developing mobile apps for over 10 years, and I’m still searching on Google every day. It’s maybe less about knowing everything, and more about knowing how to search for anything. If you’re capable of finding the answers, then I think you pretty much know everything.”
Antoine is a self-proclaimed ‘productivity geek’, and Googling effectively helps him find the right answer faster. This not only saves him time, but cutting through the ‘fluff’ information helps him focus purely on the things that will help him right now, and not be overwhelmed by all the information out there.
To Google effectively, Antoine shares some tips from his blog post:
- Search in a specific domain: By adding
site:to the beginning of his searches, Antoine can narrow down the Google search results to only display matches from that particular website. For example, if he wants to only look at Stack Overflow, Antoine simply types
site: stackoverflow.com The thing I want to knowin the search bar.
- Filter out unsolved questions: Taking the above hack one step further, Antoine can even filter out unsolved forum answers by adding
solvedto his query. In this example, his search would look something like:
site: stackoverflow.com solved The thing I want to know. This reduces the amount of time Antoine spends on forum posts without any actual solutions.
- Find more results to common errors: When specific errors aren’t yielding many results, Antoine uses the wildcard asterisks to generate more results that are maybe less specific, but contain the same logic as the problem he’s facing. The asterisks serve as ‘placeholders’, which lets Google find results that match the rest of the query and match similar queries to the position of the asterisks. For example, instead of searching:
Could not cast value type Coyote.HomeViewController (0x1010b01f0) to Coyote.BucketListViewController (0x10bd7f580)
… Antoine simply searches:
Could not cast value type * to *
Join a community that’s relevant to you
For Antoine, tapping into the wider tech community has given him access to a group of people who are doing the same things as him, facing the same challenges as him, and with whom he can share knowledge. Communities guide his understanding of what other people in his field care about, which helps him decide where he should be levelling up.
“You really get a sense of what’s going on”, he says, “for example, what’s going on at Swift in terms of the language development.” That way, he stays up to date with new features, bug fixes, and hacks that can help him improve as a mobile developer.
Two ways he finds and accesses the communities that are relevant to him are by scraping Twitter and subscribing to curated newsletters:
- Twitter: By following hashtags of languages or frameworks he works with, or even their accounts directly where possible, Antoine can easily stay in the loop about a very specific topic. It’s also really easy for him to reach out to people if he has questions, or wants to follow up with them about something he saw them post. Since he works with Swift, he follows Swift’s account and the #Swift and #SwiftLang hashtags on Twitter.
- Curated newsletters: In addition to visiting community spaces on Twitter, Antoine stays in the loop by subscribing to curated newsletters. “They are kind of an entry point to other things that happen in a community”, he explains, “especially if you combine, for example, the iOS Dev Weekly newsletter with a Swift Weekly Brief. That’s already a big part of what’s going on in mobile development related to iOS.”
Schedule dedicated time for learning
Antoine knows that if he doesn’t set aside time for leveling up and learning, it becomes really easy to prioritise something else in that moment, be it other work, household chores, or other hobbies. For learning, ‘leftover time’ – the spare time you have after doing other things – tends to be rushed, or just few-and-far between. For optimum learning, Antoine explicitly schedules time into his calendar.
As simple as it sounds, assigning a specific time to whatever levelling up you want to do – reading a book, listening to a podcast, talking to a mentor, catching up on newsletters and blog articles – makes it easier to hold yourself accountable, and not prioritise other things.
For example, although Antoine likes books, he doesn’t enjoy the time it takes to get through them that much. He knows that setting a stressful reading goal means he probably won’t do it. So, instead, he schedules smaller, more manageable increments into his day: “If you push yourself – something like ‘I want to read this book this week’ – that can create a lot of stress, and then you need to really find that hour a day to read. For me, it doesn’t work.” Antoine sets a mini-goal of reading for 10 minutes each night, which means he doesn’t have to worry nearly as much about when to fit it in:
“Just before I go to bed, I read at least 10 minutes of a book I want to read, and over the week that means I get to like 100 pages, and suddenly I’ve finished the book”
For the newsletters he is subscribed to, he says he spends half an hour on a Friday evening sorting and saving the articles he’s going to read over the weekend and into the following week: “I pick the ones I find interesting, or the ones I think are the most valuable to me.” This makes it easy for him to schedule an article for every day, and makes sure he doesn’t create a backlog of unread articles that will overwhelm him later.
Finally, Antoine tries to stack the things he already does with opportunities to level up: His drive to and from Amsterdam every day takes 40 minutes each way, which gives him ample time to tune in to his favourite podcasts, some of which include Swift by Sundell, Swift over Coffee, Contravariance, and Stacktrace. Antoine maximises the time he spends driving to learn things specifically related to his mobile development. And it makes the ride more enjoyable!
Levelling up is an ongoing process
Whatever strategy works for you, Antoine believes that the best way to level up as a developer is to get better at learning. If you can hack learning, and be intentional about it in your daily workflow and daily life, then you’ll never feel like you’re falling behind. “As I’ve said before, you can’t learn everything”, he says, and knowing not only what to learn but how to use what you engage with effectively is the most sustainable way to grow.
By following the above steps, Antoine has been able to get better at learning because learning has turned into something he doesn’t need to think about doing. The systems he’s set up – from being active in communities to making dedicated time for learning – enable him to filter through the noise, find what’s relevant, and make time for it in his busy schedule. That way, he continues to level up as a developer, and help his team do the same.