How to take your iOS career to the next level

Doug Ross
Skills Matter
Published in
10 min readFeb 1, 2019

--

Paul Hudson

Paul is the author of Hacking with Swift, Pro Swift, Hacking with macOS, Server-Side Swift, Swift Coding Challenges, Practical iOS 10, and Objective-C for Swift Developers. Suffice it to say, he quite likes Swift.

What can iOS developers do to take their career up a level?

I think we place a lot of emphasis on getting to ‘senior developer’ in just a handful of years, which is both odd and unhelpful. Are you in a place where learning is encouraged? Are you in a place where mistakes are accepted? Are you in a place where you feel like you’re being challenged? If so, you can take your career forward many levels without changing your job title. If not, perhaps the best thing you can do is find a place where those are true.

It isn’t necessary for everyone to be a blogger, or a speaker, or a book writer, although I always welcome more folks in those areas. Heck, you don’t even need to go to meetups if you find them stressful. But I do think you should at least be putting some time aside to develop your skills, either during your workday or in your spare time if that’s possible. Read a book or a blog. Watch a video or listen to a podcast. Reach out to someone online and ask questions. Find a mentor. And don’t imagine for a second that advice applies just to coding — we all need to develop our core skills like communication just as much as anyone else.

How quickly can developers expect to see results from the changes they make?

Honestly, I think very few important skills come easily — most we need to work hard for, over a long period of time. I realize that’s not what many people want to hear because it’s nice to dangle the possibility of the One Cool Trick that coders don’t want you to know. However, it’s true: if you want to get better at refactoring code, you need to spend a lot of time refactoring code. If you want to get better at effective code review, you need to spend a lot of time doing code review. Sometimes there is no learning without a struggle — something you have to fight to learn often sticks better than something that came easily. If you want to grow, get used to saying “I don’t know.”

What can you do to raise your profile as an iOS Developer?

The Swift community is, for the most part, a welcoming one: we encourage and promote new voices, we’re keen to hear new perspectives on familiar topics, and there are ample opportunities for someone to raise their profile if they want to.

First, start a blog. Use Medium if you must, but there are lots of alternative platforms you could choose from. I get people asking me regularly how to start writing, and my advice is pretty simple: write the kind of blog you’d want to read, because there are thousands of other folks who think the same as you and would appreciate your style.

Second, help out in an open source project. This could be writing code, but it could also be triaging issues, writing documentation, and offering support to users.

Third, try presenting at a local meetup. You will immediately hit the standard problem of “I don’t know what to talk about,” but that’s OK — just talk about your experience. What problems do you hit with Auto Layout? How do you re-use code between iOS and macOS? What’s your approach to analyzing and improving performance? Anyone can (and will) argue with you about your architectural choices, but no one can argue with you about your experience, so present a short session outlining the problem you had, the things you tried that failed, and (ideally!) the solution you ended up with.

However, I want to temper that by saying that this isn’t for everyone…if you’re recruiting for a role and judge someone by their GitHub presence or speaker experience, you’re likely to unfairly rule out a great many brilliant developers.

What should iOS Developers be looking for in the companies that they apply to/work for?

The ‘ideal’ company varies a little depending on what level someone is at. Junior developers should make sure prospective companies are somewhere that helps them drop the ‘junior’ badge — do they have a mentoring program? Do they give you meaningful problems to solve?

Regardless of level, everyone ought to be able to work in an environment where mistakes are OK, where good coding practice is encouraged, where training is adequately funded for everyone, and where you aren’t required to put in extra hours just to do your basic job.

But don’t just look for coding things: what steps does the company take to try to get a diverse team? How long do people stay there on average? Do they have a sound policy in place for ensuring employees are treated fairly and equally?

Contact Paul: @twostraws

🌆 Both Paul and Gwendolyn are speaking at iOSCon in London in March. 👍

Gwendolyn Weston

Gwendolyn Weston is a Brooklyn-based developer and artist. She is currently the iOS Platform Lead at Audm. Previously, she’s worked with companies such as StitchFix, Apple, and PlanGrid.

What can iOS developers do to take their career up a level?

I think knowing what would level you up is strongly influenced by what your specific end goal is:

  • CTO of startup that you’ve founded?
  • VP Engineering of a medium/large company who manages managers?
  • Staff Engineer who architects highly complex systems?
  • Freelance contractor with freedom to jump between a lot of projects and self-define work-life balance?
  • Technologist who creates interesting interactive art and data visualizations and tools?
  • Indie developer who owns their own lifestyle business that sustains itself?
  • Teacher, trainer, and technical writer who creates high-quality teaching materials and curriculums for other developers?

Because there are so many different paths to create, I’m hesitant to say anything too prescriptive as to how to level up. Just because there’s a clear path as to how to stretch in a certain direction, if it doesn’t help leverage you to your end goal, then your actions are out of alignment with your values.

Now, that isn’t to say that growth for all these paths don’t overlap in some way and, also, you probably don’t even know which path you want to create for yourself until you’ve been down a few mismatched paths. I don’t think it’s bad to have a winding path to your end goal.

So to that end of even knowing how you want to grow as a developer, I’d say follow your envy. Jenn Lee has a XOXO talk about this, where she argues how envy is a useful compass to know what you want to see in yourself. So find some models who have created interesting paths, and every time you see something they’ve done that makes you twinge in envy and inspiration, self-reflect and see what about it you want to build for yourself.

So with all those caveats aside, to pop back off the stack and answer more specifically about one of your questions of moving from junior to senior, for me I’ve found to be less about technical expertise and more about a couple of habits.

Just to disclose: I’m a person who doesn’t generally want to spend my free time learning tech outside of the job, so I'm loathed to recommend side-projects and supplemental learning. I fully believe what you learn during the job hours should be enough, given autonomy so that you’re not always stuck doing the same kinds of projects over and over.

a) know what a good work day looks like for you. For myself, I’ve set up a daily habit where at the end of every day, I take ten minutes to just answer:

  • was this a good work day?
  • what was good?
  • what could be better?
  • what is something to try for tomorrow to make it better? how did yesterday’s experiments turn out?

It’s a lightweight freewrite with the intention of creating an awareness of your work needs and also a quick feedback loop. Activist and writer Adrienne Maree Brown writes that “what you pay attention to grows”, where even just paying attention to what you want to improve will help you improve it. (I think there’s some data-driven aphorism about this too — you only optimize what you measure?)

b) Even if only for your own edification, know what your judgment call would be in each situation. When I was a more junior member of a team, I’ve noticed for myself I had fallen into a habit of always looking to the more senior members for their answers to questions, as the final stopgap. And at a certain point, that becomes limiting because you’re never developing your own judgment and intuition and then don’t prepare yourself for the situation when you are the senior member making the decisions.

One good way to practice this is when asking questions, bring your own solutions, like: “Hey, I haven’t been able to figure out the state of what’s causing this bug. In the interest of time and priorities, I’ve made a defensive solution here. If it looks good, I’ll merge it in.” Or “I noticed that there’s this edge case here, what if we solved it like this?” Or in meetings when you see your team going back and forth between two sides, even if you aren’t a stakeholder, if you have the time, know what your opinion would be anyway.

How quickly can developers expect to see results from the changes they make?

For the daily loops — quickly! Hopefully, on a daily basis! And they don’t have to be big results, maybe it’s just noticing what it felt like to be stuck spinning too long. If it starts getting to a point where it’s giving you some kind of information, then that’s a sign that it time to try asking yourself different kinds of questions, to formulate different kinds of experiments, until you’re back to feeling like you’re on the edge of progress.

I didn’t mention this in the earlier question, but conference talks did definitely give me a range of more connections for my career that I found helpful. I’m a little hesitant to recommend them (survivorship bias and all), and also, they’re time and financially consuming as well such that it might be harder for people with less opportunity to capitalize on it. But conference talks did connect me with a wonderful group of conference speakers, helped me grow my teaching capabilities, and I think within a year or two, I felt a good level of validation of my skills both internally and externally from the community.

Also, a caveat — I think you don’t notice your growth until you’re in a new context and have achieved a new distance. So sometimes the way to notice growth is to do something new and in being a beginner again, you realize just how much you knew in your previous context.

What can you do to raise your profile as an iOS developer?

Anything that can demonstrate your expertise like conference talks, blog posts, teaching content. I think a fair amount of the iOS community lives on Twitter, and those happen to be the content that can be shared easily on that medium. Though which one is the best for you is again affected by the question of ‘to what end do you want to raise your profile as an iOS developer?’

  • Jobs? (I think conf talks < prolific blog content < having a prolific resume < good network and warm connections)
  • More conference speaking opportunities? (Definitely, conference talks beget more speaking opportunities in that case)
  • Leverage your profile into an indie business? (Whewww, there are blogs upon blogs about branding and marketing to this end)

Also, I appreciate someone who brings more than just tech to their timeline. There is one designer from Github that I love to follow because I love reading about her takes of k-pop and her skincare advice is always on point. Or another developer I follow is super into transit and post acerbic takes on the state of metro systems. So personally, it’s also having something else that they love to express about themselves publicly.

What should iOS Developers be looking for in the companies that they apply to?

First, I think it’s to know your answers to these questions:

  • is the company’s iOS platform a platform they focus on, or is it a more vestigial team? Which do you prefer?
  • how do you feel about react native/react and cross-functional development of that nature?
  • what do you want out of the job? Financial security and a job with clear boundaries? A challenging job with high growth potential to rocket you to a potential leadership and eventually maybe a CTO role? A specific domain or field of problems
  • what team size/company size do you enjoy most?
  • what about this potential job/company will help you get to the next step?

I think most important is knowing how whatever potential companies you apply for fits into your trajectory, and this is a question I like to ask of the people I interview. “What about this job has served your career?”

I like this question because then I get to hear how the person’s benefits of being at the company align with mine.

Contact Gwen: @purpleyay

🌆 Both Paul and Gwendolyn are speaking at iOSCon in London in March. 👍 For news and articles from Skills Matter, subscribe to our newsletter here.

--

--