Perfil de habilidad

Generics & Parametric Polymorphism

Generics, bounded types, variance (covariance/contravariance), type constraints, type erasure

Programming Fundamentals Type Systems

Roles

9

donde aparece esta habilidad

Niveles

5

ruta de crecimiento estructurada

Requisitos obligatorios

32

los otros 13 opcionales

Dominio

Programming Fundamentals

skills.group

Type Systems

Última actualización

17/3/2026

Cómo usar

Selecciona tu nivel actual y compara las expectativas.

Qué se espera en cada nivel

La tabla muestra cómo crece la profundidad desde Junior hasta Principal.

Rol Obligatorio Descripción
Backend Developer (C#/.NET) Obligatorio Understands C# generics syntax: declares generic classes, methods, and interfaces with type parameters (List<T>, Dictionary<TKey,TValue>). Applies basic constraints (where T : class, where T : struct, where T : new()). Correctly uses built-in generic collections and avoids boxing by choosing generic over non-generic APIs.
Backend Developer (Java/Kotlin) Obligatorio Understands Java generics fundamentals: declares generic classes and methods with type parameters, uses bounded type parameters (extends/super). Aware of type erasure and its implications — cannot instantiate T or use instanceof with generic types. Correctly applies generic collections (List<String>, Map<K,V>) and avoids raw types in new code.
Backend Developer (Rust) Obligatorio Understands the fundamentals of Generics & Parametric Polymorphism at a basic level. Applies simple concepts in work tasks using Rust. Follows recommendations from senior developers when solving problems.
Backend Developer (Scala) Obligatorio Understands the fundamentals of Generics & Parametric Polymorphism at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Compiler Engineer Knows basic generics and parametric polymorphism concepts for compiler engineering and can apply them in common tasks. Uses standard tools and follows established team practices. Understands when and why this approach is used.
Desktop Developer (.NET WPF/WinUI/MAUI) Knows generics in C#: List<T>, Dictionary<TK,TV>, Func<T,TResult>. Creates simple generic classes and methods. Understands type constraints (where T : class, new()).
Desktop Developer (Qt/C++) Knows C++ template basics in the Qt context. Uses template containers (QList<T>, QHash<K,V>). Understands template instantiation and basic SFINAE.
Language Tooling Engineer Understands the fundamentals of Generics & Parametric Polymorphism at a basic level. Applies simple concepts in work tasks using TypeScript/Rust. Follows recommendations from senior developers when solving problems.
Systems Programmer (C/C++) Understands the fundamentals of Generics & Parametric Polymorphism at a basic level. Applies simple concepts in work tasks using C/C++/Rust. Follows recommendations from senior developers when solving problems.
Rol Obligatorio Descripción
Backend Developer (C#/.NET) Obligatorio Designs advanced C# generic abstractions: applies covariance/contravariance on interfaces (IEnumerable<out T>, IComparer<in T>), implements generic repository and specification patterns. Uses constraints combinations (where T : class, IComparable<T>, new()) for precise API contracts. Understands generic type caching (typeof(T)), reflection over generic types, and builds fluent generic builders with method chaining.
Backend Developer (Java/Kotlin) Obligatorio Applies advanced Java generics: uses wildcard types (? extends T, ? super T) following PECS principle (Producer Extends, Consumer Super). Implements generic utility methods with recursive type bounds (<T extends Comparable<T>>). Understands bridge methods generated by type erasure, handles generic array creation limitations, and applies @SafeVarargs for heap pollution prevention in variadic generic methods.
Backend Developer (Rust) Obligatorio Implements Rust generics with trait bounds: writes generic functions and structs with where clauses and multiple trait bounds. Understands monomorphization and its impact on binary size vs runtime performance. Applies lifetime parameters in generic contexts ('a), combines generics with trait objects (dyn Trait) when dynamic dispatch is needed. Uses PhantomData for zero-cost type-level markers.
Backend Developer (Scala) Obligatorio Applies Scala's advanced type parameter system: upper/lower type bounds ([A <: B], [A >: B]), variance annotations (covariant +A, contravariant -A). Implements type classes via implicit parameters and context bounds ([T: Ordering]). Uses existential types and type members for abstraction, understands type inference limitations in complex generic chains.
Compiler Engineer Confidently applies generics and parametric polymorphism for compiler engineering in non-standard tasks. Independently selects optimal approach and tools. Analyzes trade-offs and suggests improvements to existing solutions.
Desktop Developer (.NET WPF/WinUI/MAUI) Creates generic service layer with repository, specification patterns. Uses covariance/contravariance (in/out). Applies generic constraints for complex hierarchies. Understands generic type inference.
Desktop Developer (Qt/C++) Creates template utilities for Qt: type-safe property wrappers, generic serializers. Applies variadic templates and fold expressions. Uses SFINAE/if constexpr for conditional compilation.
Language Tooling Engineer Implements generic type resolution in language tooling: builds type parameter substitution maps during type checking, handles generic method inference and constraint solving. Understands generic instantiation strategies (monomorphization vs type erasure) and their impact on tooling — code completion, refactoring, and type display in IDE features.
Systems Programmer (C/C++) Applies generics in systems-level code with focus on zero-cost abstractions: writes generic data structures with const generics for compile-time sizes, uses trait bounds to enforce memory layout guarantees (Copy, Sized, Unpin). Understands how generic monomorphization affects instruction cache and binary size in performance-critical paths. Applies generics to implement type-safe wrappers over unsafe FFI interfaces.
Rol Obligatorio Descripción
Backend Developer (C#/.NET) Obligatorio Architects generic type systems in C# codebases: designs generic middleware pipelines (IMiddleware<TRequest, TResponse>), implements compile-time metaprogramming with source generators over generic types. Applies Curiously Recurring Template Pattern (class Base<T> where T : Base<T>) for static polymorphism. Optimizes hot paths with generic specialization techniques, profiles JIT behavior for value-type vs reference-type generic instantiations to minimize allocations.
Backend Developer (Java/Kotlin) Obligatorio Designs sophisticated generic APIs in Java: implements type-safe heterogeneous containers (Class<T> as key), builds generic fluent DSLs with phantom type parameters for compile-time state validation. Applies Typesafe Heterogeneous Container pattern, designs generic annotation processors for compile-time validation. Navigates type erasure edge cases in serialization frameworks (Jackson, Gson TypeToken), implements generic type resolution via reflection (ParameterizedType, TypeVariable).
Backend Developer (Rust) Obligatorio Designs advanced Rust generic architectures: implements GATs (Generic Associated Types) for lending iterators and async trait patterns. Builds generic type-state machines with zero-runtime-cost transitions enforced by the type system. Applies const generics for compile-time validated dimensions and buffer sizes. Designs generic trait hierarchies with supertraits and blanket implementations, optimizes trait bound complexity to maintain reasonable compile times in large generic codebases.
Backend Developer (Scala) Obligatorio Architects type-level computations in Scala: implements higher-kinded types (F[_]) for tagless final and free monad patterns. Designs generic type class hierarchies (Functor, Monad, Traverse) with lawful instances and automatic derivation. Applies path-dependent types and type projections for advanced generic abstractions, uses match types (Scala 3) and type lambdas for compile-time type transformations. Mentors team on variance rules and type inference debugging.
Compiler Engineer Expertly applies generics and parametric polymorphism for compiler engineering in designing complex systems. Optimizes existing solutions and prevents architectural mistakes. Conducts code reviews and trains colleagues on best practices.
Desktop Developer (.NET WPF/WinUI/MAUI) Obligatorio Designs generic frameworks with Source Generators. Uses static abstract members in interfaces (C# 11+). Implements generic math through INumber<T>. Applies generic host for modular architecture.
Desktop Developer (Qt/C++) Obligatorio Applies C++20 concepts for constraining template parameters. Designs policy-based design for Qt components. Uses template metaprogramming for compile-time validation.
Language Tooling Engineer Obligatorio Designs cross-language generic type system tooling: implements constraint solvers for generic type inference (Hindley-Milner extensions, local type inference), builds incremental type checkers that efficiently handle generic instantiation caching. Architects IDE features for generic code — smart completion with type parameter inference, generic refactoring (extract type parameter, inline type alias), and diagnostic messages that clearly explain constraint violation chains in complex generic contexts.
Systems Programmer (C/C++) Obligatorio Architects generic abstractions for systems infrastructure: designs generic allocator interfaces and type-parameterized memory pools with compile-time size validation via const generics. Implements generic lock-free data structures with correct Send/Sync bounds, applies generic specialization patterns for SIMD-optimized code paths. Evaluates monomorphization costs in large-scale systems — manages binary bloat through strategic use of trait objects, type-erased wrappers, and generic function outlining techniques.
Rol Obligatorio Descripción
Backend Developer (C#/.NET) Obligatorio Defines generics usage standards: constraints, covariance/contravariance, generic host builders. Reviews API design focused on type safety and ergonomics.
Backend Developer (Java/Kotlin) Obligatorio Defines generics usage standards for the Java team: bounded type parameters, wildcard conventions, type-safe builders. Reviews API design focused on type safety and ergonomics.
Backend Developer (Rust) Obligatorio Designs generic APIs with complex trait bounds using where clauses, associated types and GAT (Generic Associated Types). Develops generic middleware layers for tower services and typed builder patterns with compile-time validation.
Backend Developer (Scala) Obligatorio Defines Generics and Parametric Polymorphism usage standards at team/product level. Conducts architectural reviews. Creates best practices and training materials for the entire team.
Compiler Engineer Establishes generics and parametric polymorphism standards for the compiler engineering team and makes architectural decisions. Defines technical roadmap considering this skill. Mentors senior engineers and influences practices of adjacent teams.
Desktop Developer (.NET WPF/WinUI/MAUI) Obligatorio Defines generics usage standards in .NET projects. Conducts review of generic API design. Controls generic code complexity.
Desktop Developer (Qt/C++) Obligatorio Defines template usage standards in Qt projects. Reviews template code, controls compile-time complexity. Establishes guidelines for template code readability.
Language Tooling Engineer Obligatorio Defines standards for applying Generics and Parametric Polymorphism at the team/product level. Conducts architectural reviews. Establishes best practices and training materials for the entire team.
Systems Programmer (C/C++) Obligatorio Defines Generics and Parametric Polymorphism standards at team/product level. Conducts architectural reviews. Establishes best practices and training materials for the team.
Rol Obligatorio Descripción
Backend Developer (C#/.NET) Obligatorio Designs platform-level generic frameworks: source generators for compile-time generics, generic math (INumber<T>), type-safe pipeline builders. Evaluates new C# version capabilities.
Backend Developer (Java/Kotlin) Obligatorio Designs platform-level generic frameworks and libraries: type-safe query builders, generic repository patterns, plugin systems. Evaluates type erasure limitations and designs workarounds.
Backend Developer (Rust) Obligatorio Defines organizational generics strategy: higher-kinded type emulations, const generics for compile-time computations, specialization through marker traits. Develops proc macros for automating derive implementations and creates internal DSLs through Rust's type system.
Backend Developer (Scala) Obligatorio Defines organization-wide generic programming standards in Scala: establishes type class encoding conventions (Scala 2 implicits vs Scala 3 given/using), designs generic effect system abstractions (Cats Effect, ZIO) with principled type parameter hierarchies. Drives adoption of compile-time type-level programming (singleton types, type-level natural numbers, compile-time proofs) for domain invariant enforcement. Evaluates and shapes Scala language evolution proposals related to type system expressiveness — opaque types, match types, polymorphic function types.
Compiler Engineer Shapes generics and parametric polymorphism strategy for compiler engineering at the organizational level. Defines best practices and influences technology choices beyond their own team. Is a recognized expert in this area.
Desktop Developer (.NET WPF/WinUI/MAUI) Obligatorio Shapes enterprise generics standards for .NET. Evaluates new generic features (roles, shapes). Defines balance between generics and concrete types.
Desktop Developer (Qt/C++) Obligatorio Shapes enterprise template programming standards for C++/Qt. Evaluates reflection proposals for future C++ standards. Defines the balance between generics and runtime polymorphism.
Language Tooling Engineer Obligatorio Defines the strategy for applying Generics and Parametric Polymorphism at the organizational level. Makes decisions on approaches and tools. Mentors lead developers and shapes technical vision.
Systems Programmer (C/C++) Obligatorio Defines generic programming strategy across systems codebases: establishes guidelines for monomorphization budget and binary size targets, designs generic abstraction layers that unify platform-specific implementations (OS, architecture) under type-safe generic interfaces. Drives adoption of const generics and type-level programming for compile-time correctness proofs in safety-critical systems. Evaluates language-level generics features (Rust RFC process, C++ concepts vs Rust traits) and shapes team's generic design patterns to balance abstraction power, compile time, and runtime performance across million-line codebases.

Comunidad

👁 Seguir ✏️ Sugerir cambio Inicia sesión para sugerir cambios
📋 Propuestas
Aún no hay propuestas para Generics & Parametric Polymorphism
Cargando comentarios...