Ofertas › Gymshark
Gymshark · Solihull
<p><strong>OVERVIEW:<br></strong></p> <p><span class="NormalTextRun SCXW248244708 BCX0">This role exists to build and </span><span class="NormalTextRun SCXW248244708 BCX0">maintain</span><span class="NormalTextRun SCXW248244708 BCX0"> the iOS app that a large share of Gymshark customers </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW248244708 BCX0">shop</span><span class="NormalTextRun SCXW248244708 BCX0"> through, at a standard that holds under peak load. You will turn refined product work into features that are shipped, tested and observable, and improves the quality of the code you touch.</span></p> <p><strong>WHAT YOU'LL BE DOING:</strong></p> <p><strong><span data-contrast="none"><span data-ccp-parastyle="heading 3">CRAFT</span></span></strong> <span data-ccp-props="{"134245418":true,"134245529":true,"335551550":1,"335551620":1,"335559738":40}"> </span></p> <ul> <li data-leveltext="" data-font="Wingdings" data-listid="21" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Wingdings","469769242":[9642],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="15" data-aria-level="1"><span data-contrast="none">Writes production Swift confidently. Most new work is SwiftUI; the app still contains UIKit that is being migrated, so both are relevant.</span><span data-ccp-props="{"134245417":false,"335551550":1,"335551620":1}"> </span></li> <li data-leveltext="" data-font="Wingdings" data-listid="21" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Wingdings","469769242":[9642],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="15" data-aria-level="1"><span data-contrast="none">Works effectively in a modular codebase. Understands why a type belongs in one module rather than another, and adds features without crossing module boundaries.</span><span data-ccp-props="{"134245417":false,"335551550":1,"335551620":1}"> </span></li> <li data-leveltext="" data-font="Wingdings" data-listid="21" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Wingdings","469769242":[9642],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="15" data-aria-level="1"><span data-contrast="none">Applies Clean Architecture and MVVM as standard, can explain the separation of concerns, and identifies where a pull request breaks it.</span><span data-ccp-props="{"134245417":false,"335551550":1,"335551620":1}"> </span></li> <li data-leveltext="" data-font="Wingdings" data-listid="21" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Wingdings","469769242":[9642],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="15" data-aria-level="1"><span data-contrast="none">Writes unit tests as part of the work rather than afterwards, and is comfortable building test doubles. Some of the team work test-first, and we want to increase that.</span><span data-ccp-props="{"134245417":false,"335551550":1,"335551620":1}"> </span></li> <li data-leveltext="" data-font="Wingdings" data-listid="21" data-list-defn-props="{"335552541":1,"335559685":720,"335559991":360,"469769226":"Wingdings","469769242":[9642],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="15" data-aria-level="1"><span data-contrast="none">Understands Swift concurrency sufficiently to avoid data races, and raises it when a problem exceeds their experience.</span><span data-ccp-props="{"134245417":false,"335551550":1,"335551620":1}"> </span></li