Senior Web Developer
Singa haki kokenutta web-kehittäjää (Senior Web Developer) rakentamaan vaativia web-sovelluksia globaalille karaokealustalle modernilla TypeScriptillä ja Vuella. Tehtävässä työskenneltiin Nuxt 3 -sovellusten parissa, jotka palvelevat yli 2 miljoonaa käyttäjää 34 maassa ja joiden katalogissa on yli 100 000 kappaletta.
Mitä tehtävään kuului
Valittu henkilö työskenteli Singan Nuxt 3:lla toteutettujen web-sovellusten parissa aina käyttäjille näkyvistä kokemuksista sisällönhallinnan työnkulkuihin. Tehtävässä ylläpidettiin ja kehitettiin TypeScript-pohjaisia sovelluksia, joissa hyödynnettiin SSR/SSG:tä, tilanhallintaa, reaaliaikaisia karaokeominaisuuksia ja monipuolisia sisältötyönkulkuja. Työhön kuului mediapainotteisten ominaisuuksien suorituskyvyn optimointi sekä maksujärjestelmien, analytiikka-alustojen, sisällönhallintajärjestelmien ja kolmansien osapuolten musiikkirajapintojen integrointi.
Vastuut:
– Tuotannossa olevien Nuxt 3 -sovellusten ylläpito ja kehittäminen kolmannen osapuolen integraatioiden kanssa, kuten Stripe-maksut, Storyblok CMS ja analytiikka-alustat
– Uusien ominaisuuksien suunnittelu ja toteutus Vue 3:n Composition API:lla käyttäen sekä Pinia-storeja että composable-pohjaisia tilamalleja
– UI-komponenttien toteutus eri frameworkeilla (Reka UI, Vuetify)
– Yhteistyö backend-kehittäjien kanssa selkeiden, versioitujen API-sopimusten suunnittelussa
– Palvelinpuolen API-proxyjen rakentaminen
– Vanhan Options API -koodin refaktorointi moderneihin Composition API -malleihin
– Suorituskyvyn optimointi mediatoistoon, äänen ja sanoitusten synkronointiin sekä sisältöautomaation työnkulkuihin
– Tuotanto-ongelmien debuggaus Sentryn kaatumisraporttien ja analytiikkadatan avulla
– Teknisen velan päätösten hallinta samalla kun ominaisuuksien kehitysvauhti säilyy
– Ominaisuuksien toteutus monimarkkinaisesta i18n:stä sisältöautomaation työnkulkuihin
– Tiukan tyyppiturvallisuuden ylläpito TypeScriptillä kaikissa sovelluksissa
– AI-koodiavustajien hyödyntäminen kehityksen nopeuttamiseksi koodin laadusta tinkimättä
Teknologiapino
– Frontend-framework: Vue 3 Composition API:lla, Nuxt 3.12+ (SSR/SSG)
– Kielet: TypeScript 5.9+ (strict mode), Pug-templatet
– Tilanhallinta: Pinia Composition API:lla, composable-pohjaiset mallit
– UI-komponentit: Reka UI (headless), Vuetify 3 (Material Design), omat komponentit
– Tyylit: Sass/SCSS omilla design-systeemeillä, design token -järjestelmä, scoped-komponenttityylit
– API-integraatiot: omat fetch-clientit, ofetch HTTP-client, palvelinpuolen proxyt, monitasoinen arkkitehtuuri
– Autentikointi: OAuth 2.0 ja JWT, SSR-turvallinen token refresh, HTTP-only-evästeet
– Kansainvälistäminen: @nuxtjs/i18n yli 10 lokaalilla, prefix-pohjainen reititys
– Reaaliaikaiset ominaisuudet: second-screen-tila postMessagella, äänen ja sanoitusten synkronointi
– Analytiikka: Segment, FullStory session replay, Sentry (virheseuranta + suorituskyvyn monitorointi)
– Maksut: Stripe palvelinpuolen istuntojen hallinnalla
– CMS: Storyblok visual editor -integraatiolla
– Testaus: Vitest ja Nuxt test utils, Happy DOM, Vue Test Utils
– Koodin laatu: OXLint (Rust-pohjainen), Prettier, vue-tsc
– Build/Deploy: Docker-buildit, Nitro-palvelinmoottori, Vite-bundlaus
– Infrastruktuuri: Node, Yarn 4, kontitetut deploymentit, GitHub Actions CI/CD
Mitä haettiin
Edellytettiin:
– Vähintään 6 vuoden kokemus frontend-kehityksestä TypeScriptillä
– Tuotantokokemus Vue 3:sta ja Nuxt 3:sta (SSR/SSG-mallit)
– Syvällinen TypeScript-osaaminen (strict mode, type narrowing, generics)
– Vahva ymmärrys Vuen Composition API:sta ja moderneista reaktiivisista malleista
– Kokemus tilanhallinnasta (Pinia, composable-mallit tai vastaavat)
– Sass/SCSS-kokemus komponenttikohtaisesta tyylittelystä
– OAuth 2.0- ja JWT-autentikoinnin toteuttaminen
– Tuotannon debuggaustaidot monitorointityökaluilla (Sentry, analytiikka-alustat)
Katsottiin eduksi:
– Headless UI -komponenttikirjastot (Reka UI, Radix Vue tai vastaavat)
– Vuetify tai Material Design -komponenttiframeworkit
– Kokemus Pug-templatointikielestä
– Monikielisen i18n:n toteutus @nuxtjs/i18n:llä (yli 10 lokaalia)
– Äänen ja videon toiston toteutus Web Audio API:lla
– Reaaliaikaiset monen ikkunan viestintämallit (postMessage)
– Stripe-maksuintegraatiot ja checkout-flowt
– CMS-integraatiot (Storyblok, Contentful tai vastaavat)
– Analytiikkaintegraatiot (Segment, Mixpanel, FullStory)
– Composable-pohjainen tilanhallinta (ilman store-mallia)
– Palvelinpuolen API-proxyt kolmannen osapuolen integraatioihin
– Sisällönhallintajärjestelmien arkkitehtuuri
– Suorituskyvyn optimointi Lighthousella/Web Vitalsilla
– Modernit linttaustyökalut (OXLint, Biome tai muut Rust-pohjaiset työkalut)
– Docker ja kontitetut deployment-työnkulut
– Laajat refaktoroinnit (Options API → Composition API -migraatiot)
– GitHub Actions CI/CD -putket
– Kokemus AI-koodiavustajista (Claude Code eduksi) tai innokkuus omaksua AI-tehostettuja työtapoja
Työn tekemisen malli
Hybridi: Helsingin seudulla tavoitteena oli hybridimalli, jossa etätöitä tehtiin 2–3 päivää viikossa. Pääkaupunkiseudun ulkopuolella asuville tavoitteena oli tyypillisesti noin viisi toimistopäivää kuukaudessa.
Täysin etätyönä: täysi etätyö oli mahdollinen, jos hakija kykeni osoittamaan toimivansa tehokkaasti täysin etänä osana suurempaa, toimistolla työskentelevää tiimiä.
Monimuotoisuus
Hakijoita arvioitiin teknisen osaamisen ja arkkitehtuurisen ajattelun perusteella, ei akateemisen taustan tai urapolun mukaan. Haastatteluihin tarjottiin erityisjärjestelyjä niitä tarvitseville, ja yhteistyöhön perustuva toimintatapa varmisti teknisten päätösten läpinäkyvyyden ja osallistavuuden.
Rekrytointiprosessi
Hakuaika päättyi 23.11.2025. Hakemuksia käsiteltiin viikoittain jo hakuaikana ja tehtävä täytettiin heti sopivan henkilön löydyttyä. Prosessiin kuuluivat haastattelut sekä kotitehtävä.
Haastatteluprosessi:
– Ensimmäinen puhelu (30 min): kokemuksen läpikäynti, roolin odotukset ja hakijan kysymykset
– Tekninen screen (60 min): ongelmanratkaisua AI-työkalut sallittuna – arvioitiin, miten hakija työskentelee modernien kehitystyökalujen kanssa
– System design (60 min): tosielämän arkkitehtuuriskenaario, trade-offien ja skaalautuvuuden pohdinta
– Pariohjelmointi (60 min): yhteinen koodaussessio realistisilla ongelmilla hakijan omalla IDE:llä ja AI-työkaluilla
– Perustaja-/johtokeskustelu (n. 30 min): loppukeskustelu
Filosofia: AI-koodiavustajien (Claude Code, Copilot jne.) käyttöä teknisissä haastatteluissa kannustettiin, sillä ne ovat osa modernia kehitystyötä. Kiinnostuksen kohteena oli hakijan ajattelu, yhteistyökyky ja laadukkaan koodin tuottaminen, ei ulkoa opeteltujen algoritmien muistaminen.
Huom. Ilmoituksen tekstiä on muokattu tekoälyn avulla julkaisun jälkeen menneeseen aikamuotoon ja ilmoituksesta on poistettu yksilöivät henkilötiedot, mutta tehtävään ja sen vaatimuksiin liittyvät yksityiskohdat on säilytetty ennallaan.







