0

Hiring for different iOS specialization roles

Profile picture
Senior Software Engineer at Startup Company2 years ago

I am building an iOS team as the lead engineer. Here are the iOS roles I'm looking to fill based on my assessment of the product's requirements:

  • Number 2 (capable of handling 60-80+% of my tasks as my right hand)
  • Designer Engineer (specializes in dealing with design layouts)
  • Real-Time Data Engineer (specializes in dealing with real-time data)
  • Automated Testing Engineer (specializes in code coverage and unit testing)
  • Bug Squash Engineer (generally a more junior engineer to address menial tasks)

What are your thoughts and anything I might be blindsided on?

71
1

Discussion

(1 comment)
  • 4
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    2 years ago

    I don't know how your company works, but I'm generally not a fan of this level of specialization among engineers, especially at a startup company. The problem with specialization is that you're building a team that will be extremely brittle as it's full of single-points-of-failure. The second an engineer leaves for an extended period (either through PTO or just leaving the company), your team will struggle immensely to fill their void. Some of the roles you listed are pretty important as well - I'll go through them one-by-one to make my point clearer.

    Number 2 (capable of handling 60-80+% of my tasks as my right hand)

    A "right hand" should serve as more of an augmentation as opposed to a replacement (i.e. doing your tasks for you), similar to the partnership between a tech lead and an EM. Maybe I'm just misreading this from how it's phrased.

    Designer Engineer (specializes in dealing with design layouts)

    I'm not familiar with this role, but I feel like any engineer working on the front-end (iOS, Android, and web) should have opinions on design and be able to collaborate well with product designers.

    Real-Time Data Engineer (specializes in dealing with real-time data)

    This is generally delegated to a data scientist, but again, I feel like every software engineer should become fluent with data. Being able to log and analyze data properly allows you to understand if your code is truly working at scale and delivering value to users.

    Automated Testing Engineer (specializes in code coverage and unit testing)

    I've seen this specialization develop with bigger companies (e.g. Meta had entire organizations that just focused on this), but I'm wary of its value with startups. With small teams, you can do the scrappier solution of dogfooding your product aggressively and having each team member be decently fluent with writing automated tests.

    Bug Squash Engineer (generally a more junior engineer to address menial tasks)

    Bug fixing should be a responsibility that falls on every engineer. Feeling the struggle of your own code breaking is quintessential towards motivating engineers to weave quality into their work and preventing a "I'll throw it over the fence" mentality. The deductive reasoning that comes with debugging is also very important for software engineer growth, which is why being an expert bug fixer is a staff engineer archetype.

    Also, I would be careful of having an engineer handle "menial" tasks. As a lead, you should have a goal of uplifting every engineer on your team. If a junior engineer is saddled with a bunch of menial tasks, they won't have the scope to grow. Truly menial work should at least be somewhat distributed or automated away.

    Best of luck building your team!