Understands basic O(n) and O(n²) complexity when working with arrays and lists in Vue components. Can evaluate the impact of nested loops on rendering performance and computed properties in Composition API.
Roles · Frontend Developer (Vue) · Junior
What a Junior } should know
25 core skills, 55 in total. Expectations per skill, and what changes at the next level.
This page lists what a Junior } is expected to know and do, skill by skill. Core skills are the ones a manager and peers assess in a review cycle; the rest count only in self-assessment. Main areas: Programming Fundamentals, Frontend Development, Security.
Core skills for a Junior
Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.
Programming Fundamentals · 6
Uses async/await in Vue 3 lifecycle hooks and Composition API. Understands Suspense for async components, handles Promises in composables with proper error handling through onErrorCaptured.
Follows ESLint rules with eslint-plugin-vue and Prettier for consistent code. Applies Vue Style Guide recommendations — component naming, option order, using script setup with defineProps and defineEmits.
Works with arrays and objects in reactive() and ref() Vue 3. Understands reactivity limitations when mutating nested structures, correctly uses shallowRef and shallowReactive for flat data.
Applies basic Vue 3 patterns — props/emit for component communication, provide/inject for dependency injection. Uses Composition API for extracting repeating logic into composable functions.
Uses TypeScript with Vue 3 — typing props through defineProps<T>(), emit through defineEmits, basic ref() and reactive() typing. Understands type inference in script setup and templates through Volar.
Frontend Development · 18
Understands basic Vite bundling principles — entry points, chunks, tree shaking. Analyzes bundle size through vite-bundle-visualizer, applies dynamic import() for lazy loading Vue Router routes.
Writes basic Vue component tests through Vitest and Vue Test Utils — mount, render checking, props interaction. Tests emit events and slots, understands the difference between mount() and shallowMount().
Understands Core Web Vitals metrics — LCP, FID, CLS and their impact on UX. Measures Vue application metrics through Lighthouse and Chrome DevTools, applies basic optimizations — lazy loading images, font-display.
Uses CSS-in-JS at basic level. Creates simple components from design. Understands basic concepts and follows component guidelines.
Uses useFetch and useAsyncData in Nuxt 3 for data loading. Understands the difference between server and client-side loading, handles loading and error states in Vue components through reactive ref.
Uses ready Vue design system components — Vuetify, PrimeVue, Headless UI. Follows documentation when customizing, understands slots and props for adapting components to project requirements.
Applies scoped styles and CSS variables in Vue SFC. Uses Flexbox and Grid for Vue component layouts, understands style cascading and specificity in the context of scoped and deep selectors in Vue.
Uses Nuxt at basic level. Creates simple components from design. Understands basic concepts and follows component guidelines.
Understands PWA fundamentals and integrates them into Vue applications. Uses @vue/cli-plugin-pwa or vite-plugin-pwa for service worker generation. Configures caching strategies and offline support following Vue ecosystem patterns.
Understands differences between SSR, SSG and CSR in Nuxt 3 context. Configures basic Nuxt project with chosen rendering strategy, uses routeRules for hybrid rendering of individual pages.
Uses Pinia for Vue application state management — defining stores through defineStore, reactive state, getters, actions. Understands when to use component local state vs Pinia store.
Applies basic Tailwind CSS utility classes in Vue components — spacing, colors, typography, flexbox. Uses @apply directives in scoped Vue SFC styles, understands tailwind.config configuration through Vite.
Understands visual regression testing concept for Vue components. Configures Storybook for Vue 3 with Histoire, creates stories for UI components as a base for visual snapshots.
Uses Vite for Vue project development — HMR, dev server, basic vite.config.ts configuration. Understands the difference between dev and production modes, configures aliases and environment variables.
Uses Vue Core at basic level. Creates simple components from design. Understands basic concepts and follows component guidelines.
Applies basic a11y principles in Vue components — semantic HTML, ARIA attributes, alt texts. Uses eslint-plugin-vuejs-accessibility for automated accessibility checking in Vue SFC templates.
Uses basic Web APIs in Vue components — Fetch, localStorage, IntersectionObserver. Integrates browser APIs through VueUse composables — useLocalStorage, useIntersectionObserver, useMediaQuery.
Understands Web Components and Vue's custom element support. Wraps Vue components as web components using defineCustomElement. Handles attribute/property binding and event communication.
Security · 1
Understands basic web application vulnerabilities — XSS, CSRF and their prevention in Vue. Uses Vue 3 built-in XSS protection through automatic escaping in templates, avoids v-html with user data.
Additional skills
Not assessed by the team, but part of the self-assessment and the development plan.
What changes at Mid-level
55 skills get a higher expectation or become core when moving from Junior to Mid-level. The biggest jumps first.
- Micro Frontends: Awareness → Working · becomes core
- Algorithms & Complexity: Awareness → Working
- Async Programming: Awareness → Working
- Bundle Optimization: Awareness → Working
- Code Quality & Refactoring: Awareness → Working
- Component Testing: Awareness → Working
- Core Web Vitals: Awareness → Working
- CSS-in-JS: Awareness → Working
- Data Fetching: Awareness → Working
- Data Structures: Awareness → Working
} in the open competency matrix: 55 skills across 5 levels. The matrix is free for individuals and stays free.