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 typessite: stackoverflow.com The thing I want to know
in the search bar. - Filter out unsolved questions: Taking the above hack one step further, Antoine can even filter out unsolved forum answers by adding
solved
to 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.