Guida Conductor per sviluppatori
Guida Conductor per sviluppatori: Context-Driven Development nell’era degli agenti AI
Indice Guida Conductor per sviluppatori
- Introduzione: il paradigma Context-Driven Development
- Cos’è Conductor e la sua architettura
- Installazione e configurazione
- Utilizzo pratico: workflow e comandi principali
- Caratteristiche distintive e pattern architetturali
- Vantaggi e limitazioni: analisi critica
- Confronto con tool competitor
- Scenari futuri: verso lo sviluppo orchestrato (2025-2030)
- Formazione continua e aggiornamento professionale
1. Introduzione: il paradigma Context-Driven Development
L’approccio tradizionale allo sviluppo assistito da AI si basa su chat log effimeri e prompt reattivi, generando quello che Andrej Karpathy ha definito “vibe coding“: uno sviluppo basato su impressioni piuttosto che su specifiche formali. Questo modello presenta limiti strutturali evidenti in contesti enterprise, dove la coerenza architetturale, la tracciabilità delle decisioni e la collaborazione multi-team sono requisiti non negoziabili.
Conductor introduce il paradigma del Context-Driven Development (CDD), spostando il contesto del progetto dalla finestra di chat direttamente nel codebase. Questo approccio risolve il problema fondamentale degli agenti AI: la perdita di contesto e la deriva dalle specifiche originali. Come osservato da Benjamin Franklin, “failing to plan is planning to fail” – principio che Conductor applica sistematicamente al ciclo di sviluppo.
2. Cos’è Conductor e la sua architettura – Guida Conductor per sviluppatori
Conductor è un’estensione open-source per Gemini CLI che trasforma il terminale in un project manager proattivo che segue un protocollo rigoroso per specificare, pianificare e implementare feature software. A differenza degli assistenti conversazionali tradizionali, Conductor implementa un workflow strutturato: Context → Spec & Plan → Implement.
Architettura dei componenti
L’architettura di Conductor si articola su tre livelli di astrazione:
Livello 1: Project Context – File Markdown persistenti che definiscono:
product.md: obiettivi di prodotto, target users, feature di alto livellotechstack.md: scelte tecnologiche, database, framework, vincoli architetturaliworkflow.md: metodologie del team (TDD, code review policy, coverage requirements)
Livello 2: Track Management – Unità logiche di lavoro che incapsulano:
spec.md: requisiti dettagliati, user stories, acceptance criteriaplan.md: task breakdown strutturato in Phases → Tasks → Sub-tasksstatus.md: stato di avanzamento e decisioni implementative
Livello 3: Implementation Layer – Esecuzione agente con:
- Lettura contestuale dei file di progetto
- Generazione code diff basata sul piano approvato
- Commit automatico con messaggi tracciabili
- Checkpoint di verifica umana tra le fasi
3. Installazione e configurazione – Guida Conductor per sviluppatori
Prerequisiti
- Gemini CLI installato e configurato
- Git repository inizializzato
- Node.js 18+ (per progetti JavaScript/TypeScript)
- JDK 17+ (per progetti Java)
- .NET 8.0+ SDK (per progetti .NET)
Installazione dell’estensione
# Installazione con auto-update
gemini extensions install https://github.com/gemini-cli-extensions/conductor --auto-update
# Verifica installazione
gemini extensions list
Setup iniziale del progetto
# Navigare nella root del progetto
cd /path/to/your/project
# Inizializzare Conductor
/conductor:setup
Il comando interattivo guiderà attraverso la definizione del contesto:
? Is this a new project or existing? → existing
? What are we building? → Enterprise invoice management system
? What is the primary tech stack? → Java 21, Spring Boot 3.2, PostgreSQL 15
? What workflow does your team follow? → TDD with 80% coverage minimum, GitFlow branching
Esempio configurazione per stack TypeScript/Node.js
# techstack.md
## Primary Stack
- Runtime: Node.js 20 LTS
- Language: TypeScript 5.3 (strict mode)
- Framework: NestJS 10.x
- Database: PostgreSQL 15 + Prisma ORM
- Testing: Jest + Supertest
- API: REST + GraphQL (Apollo Server)
## Architecture Constraints
- Hexagonal architecture pattern
- Repository pattern for data access
- Dependency injection via NestJS modules
- OpenAPI 3.1 specification mandatory
Esempio configurazione per stack .NET
# techstack.md
## Primary Stack
- Runtime: .NET 8.0
- Language: C# 12
- Framework: ASP.NET Core 8.0 + Minimal APIs
- Database: SQL Server 2022 + EF Core 8
- Testing: xUnit + FluentAssertions + Testcontainers
- API: RESTful + SignalR for real-time
## Architecture Constraints
- Clean Architecture (Onion model)
- CQRS with MediatR
- Repository + Unit of Work patterns
- Vertical slice architecture for features
4. Utilizzo pratico: workflow e comandi principali
Workflow canonico
Step 1: Creazione di un nuovo Track
/conductor:newTrack "Implement user authentication with JWT and refresh tokens"
Conductor genera due artifact critici: specifiche dettagliate e un piano d’azione suddiviso in fasi, task e sub-task.
Step 2: Review della specifica
Il file spec.md generato contiene:
# Track: User Authentication System
## Objective
Implement secure JWT-based authentication with refresh token rotation
## Requirements
- [ ] JWT access tokens with 15-minute expiration
- [ ] Refresh tokens with 7-day expiration, stored in HTTP-only cookies
- [ ] Token rotation on refresh
- [ ] Blacklist mechanism for revoked tokens
- [ ] Rate limiting on auth endpoints (5 req/min per IP)
## Non-Functional Requirements
- Response time < 200ms for token validation
- Support for 10,000 concurrent auth requests
- Audit logging for all auth events
## Acceptance Criteria
GIVEN a valid username and password
WHEN user attempts login
THEN system issues JWT access token and refresh token
AND stores session in Redis with TTL
Step 3: Review e approvazione del piano
# plan.md
## Phase 1: Data Layer Setup
**Status**: ⏳ Pending
### Task 1.1: Create User entity and repository
- [ ] Define User entity with password hash field
- [ ] Implement IUserRepository interface
- [ ] Add EF Core DbContext configuration
- [ ] Write repository integration tests
### Task 1.2: Setup Redis for session management
- [ ] Add StackExchange.Redis package
- [ ] Configure Redis connection in appsettings
- [ ] Implement ISessionStore abstraction
- [ ] Write Redis connectivity tests
## Phase 2: JWT Infrastructure
**Status**: ⏳ Pending
### Task 2.1: JWT generation and validation
- [ ] Install System.IdentityModel.Tokens.Jwt
- [ ] Create JwtSettings configuration class
- [ ] Implement IJwtTokenGenerator service
- [ ] Write unit tests for token generation/validation
Step 4: Implementazione
/conductor:implement
L’agente lavora attraverso il file plan.md, spuntando i task man mano che vengono completati e seguendo il workflow definito (es. TDD: Write Test → Fail → Implement → Pass).
Step 5: Verifica incrementale
Conductor richiede verifica umana al termine di ogni fase:
✓ Phase 1 completed: Data Layer Setup
Please verify:
1. Run tests: dotnet test
2. Check migrations: dotnet ef migrations list
3. Verify Redis connection: redis-cli ping
Type 'continue' to proceed to Phase 2 or 'rollback' to revert changes.
Esempio codice generato: JWT Service (C#)
public class JwtTokenGenerator : IJwtTokenGenerator
{
private readonly JwtSettings _settings;
private readonly ILogger<JwtTokenGenerator> _logger;
public JwtTokenGenerator(
IOptions<JwtSettings> settings,
ILogger<JwtTokenGenerator> logger)
{
_settings = settings.Value;
_logger = logger;
}
public TokenPair GenerateTokens(User user)
{
var accessToken = GenerateAccessToken(user);
var refreshToken = GenerateRefreshToken();
_logger.LogInformation(
"Generated tokens for user {UserId}",
user.Id);
return new TokenPair(accessToken, refreshToken);
}
private string GenerateAccessToken(User user)
{
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString()),
new Claim(JwtRegisteredClaimNames.Email, user.Email),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var key = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(_settings.SecretKey));
var creds = new SigningCredentials(
key,
SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: _settings.Issuer,
audience: _settings.Audience,
claims: claims,
expires: DateTime.UtcNow.AddMinutes(_settings.AccessTokenExpirationMinutes),
signingCredentials: creds);
return new JwtSecurityTokenHandler().WriteToken(token);
}
private string GenerateRefreshToken()
{
var randomBytes = new byte[64];
using var rng = RandomNumberGenerator.Create();
rng.GetBytes(randomBytes);
return Convert.ToBase64String(randomBytes);
}
}
Esempio test generato: NestJS/TypeScript
describe('AuthService', () => {
let service: AuthService;
let jwtService: JwtService;
let userRepository: Repository<User>;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
AuthService,
{
provide: JwtService,
useValue: {
signAsync: jest.fn(),
verifyAsync: jest.fn(),
},
},
{
provide: getRepositoryToken(User),
useValue: {
findOne: jest.fn(),
save: jest.fn(),
},
},
],
}).compile();
service = module.get<AuthService>(AuthService);
jwtService = module.get<JwtService>(JwtService);
userRepository = module.get<Repository<User>>(getRepositoryToken(User));
});
describe('login', () => {
it('should generate access and refresh tokens for valid credentials', async () => {
const mockUser = {
id: 'uuid-123',
email: 'test@example.com',
passwordHash: await bcrypt.hash('password123', 10),
};
jest.spyOn(userRepository, 'findOne').mockResolvedValue(mockUser as User);
jest.spyOn(jwtService, 'signAsync')
.mockResolvedValueOnce('access-token-mock')
.mockResolvedValueOnce('refresh-token-mock');
const result = await service.login('test@example.com', 'password123');
expect(result).toEqual({
accessToken: 'access-token-mock',
refreshToken: 'refresh-token-mock',
});
expect(jwtService.signAsync).toHaveBeenCalledTimes(2);
});
it('should throw UnauthorizedException for invalid password', async () => {
const mockUser = {
id: 'uuid-123',
email: 'test@example.com',
passwordHash: await bcrypt.hash('password123', 10),
};
jest.spyOn(userRepository, 'findOne').mockResolvedValue(mockUser as User);
await expect(
service.login('test@example.com', 'wrong-password')
).rejects.toThrow(UnauthorizedException);
});
});
});
Comandi avanzati
# Rollback a fase/task specifico
/conductor:revert phase:2 task:1
# Verifica token consumption
/stats model
# Pausa implementazione
/conductor:pause
# Ripresa implementazione
/conductor:resume
# Visualizza stato progetto
/conductor:status
5. Caratteristiche distintive e pattern architetturali – Guida Conductor per sviluppatori
Context Persistence e Source of Truth
Conductor memorizza informazioni critiche di progetto in file markdown che vivono nel repository, trasformando la documentazione in un artifact versionato. Questo approccio risolve il problema della “context degradation” tipica dei sistemi conversazionali, dove il contesto si perde dopo 15-20 messaggi.
Git-Aware Implementation
Ogni modifica generata dall’agente viene:
- Committata automaticamente con messaggi descrittivi
- Associata al track e al task specifico
- Taggata per rollback granulare
# Commit automatico generato
feat(auth): implement JWT token generation service
Track: user-authentication
Phase: 2 - JWT Infrastructure
Task: 2.1 - JWT generation and validation
Generated by Conductor
Co-authored-by: Developer Name <dev@company.com>
Test-Driven Development Integration
I team possono definire strategie di testing che vengono automaticamente utilizzate da Gemini. Esempio per Java/Spring:
# workflow.md
## Testing Strategy
1. Unit tests for all service layer methods (JUnit 5 + Mockito)
2. Integration tests for repositories (Testcontainers)
3. API tests for controllers (MockMvc)
4. Minimum 80% line coverage, 70% branch coverage
5. Mutation testing with PIT for critical business logic
## Test Execution Order
- Fast unit tests first
- Integration tests second
- E2E tests last (CI/CD only)
Brownfield Project Support
Quando introdotto in un progetto esistente, Conductor avvia una sessione interattiva per creare un set di documenti fondamentali sull’architettura, linee guida e obiettivi del progetto. L’agente analizza:
- Struttura delle directory
- Dipendenze e package manager
- Pattern architetturali esistenti (detection automatico)
- Convenzioni di naming e code style
Multi-Language e Multi-Framework Support
Conductor supporta nativamente:
Backend: Java, C#, TypeScript/Node.js, Python, Go, Rust
Frontend: React, Vue, Angular, Svelte
Mobile: React Native, Flutter, SwiftUI
Database: SQL (PostgreSQL, MySQL, SQL Server), NoSQL (MongoDB, Redis)
6. Vantaggi e limitazioni: analisi critica
Vantaggi strategici
1. Riduzione del Technical Debt
Team che usano context-driven development hanno riportato 25% di bug report in meno e 15% di aumento nella velocità di sviluppo.
2. Onboarding accelerato
La documentazione strutturata riduce il tempo di onboarding di nuovi sviluppatori del 40-60%, secondo analisi interne di team che hanno adottato Conductor.
3. Coerenza architetturale
Con questo livello di contesto strutturato, la “deriva dell’agente” non scompare, ma è drasticamente ridotta.
4. Auditabilità e compliance
Ogni decisione implementativa è tracciabile nel commit history, facilitando audit di sicurezza e compliance regolamentare (GDPR, SOC2, ISO 27001).
5. Collaborazione asincrona
Team distribuiti possono lavorare su track paralleli senza conflitti, grazie alla separazione dei contesti.
Limitazioni e trade-off
1. Token Consumption elevato
L’approccio context-driven di Conductor comporta la lettura e l’analisi del contesto del progetto, delle specifiche e dei piani, portando ad un aumento del consumo di token, specialmente in progetti enterprise con codebase >100k LOC.
Mitigazione: Utilizzare Gemini 3 Flash per task ripetitivi, riservando Gemini 3 Pro per fasi di design complesse.
2. Overhead iniziale di setup
La creazione del contesto iniziale richiede 2-4 ore per progetti enterprise, vs. 30 secondi per approcci “vibe coding”.
Mitigazione: ROI positivo già dopo 2-3 track implementati.
3. Learning curve per team abituati a IDE-based AI
Sviluppatori che utilizzano Cursor o GitHub Copilot devono adattarsi a un workflow terminal-centric.
Mitigazione: Training di 1-2 giorni + pair programming con early adopter.
4. Dipendenza da Gemini CLI
Vendor lock-in su Google Cloud (seppur l’estensione è open-source).
Mitigazione: Possibilità di fork e adattamento ad altri LLM provider.
5. Limitazioni su progetti legacy complessi
Codebase >500k LOC con architetture monolitiche legacy richiedono contesto superiore alla context window disponibile (2M token di Gemini 1.5 Pro).
Mitigazione: Decomposizione modulare e context engineering avanzato.
7. Confronto con tool competitor – Guida Conductor per sviluppatori
Panoramica del landscape CLI-based
Il mercato degli agenti CLI per coding si è consolidato attorno a tre categorie:
- Terminal-native agents: Conductor, Aider, Goose
- IDE-integrated agents: Cursor, Windsurf, Cline (VS Code extension)
- Platform-specific: Amazon Q Developer, GitHub Copilot CLI, Claude Code
Conductor vs. Aider
Aider è stato uno dei primi assistenti open-source AI per coding, con focus su Git-aware editing.
| Aspetto | Conductor | Aider |
|---|---|---|
| Architettura | Context-Driven Development con file Markdown persistenti | Git-first, prompt-driven conversazionale |
| Planning | Obbligatorio (spec + plan review) | Opzionale, principalmente reattivo |
| Brownfield support | Eccellente (analisi progetto esistente) | Buono (richiede context manuale) |
| Team collaboration | Ottimo (context condiviso versionato) | Limitato (sessioni individuali) |
| Context window management | Automatico tramite file strutturati | Manuale (context budget da gestire) |
| Rollback granularity | Per track/phase/task | Per commit Git standard |
Aider eccelle nel context fetching usando treesitter e ripgrep, superando approcci basati su VectorDB come quelli di Cursor e Windsurf.
Caso d’uso ottimale:
- Conductor: progetti enterprise multi-team con requisiti di governance
- Aider: sviluppatori singoli o piccoli team su progetti greenfield
Conductor vs. Cursor
Cursor è un IDE AI-first basato su fork di VS Code, con deep integration di LLM.
| Aspetto | Conductor | Cursor |
|---|---|---|
| Interfaccia | Terminal CLI | GUI IDE (VS Code fork) |
| Code generation | Structured workflow-based | Conversational + Composer mode |
| Multi-file editing | Eccellente (plan-based) | Ottimo (Composer feature) |
| Test generation | Integrato in workflow TDD | Manual o prompt-based |
| Pricing | Free (API costs only) | $20/month Pro, $40/month Business |
| Context management | File-based persistent | In-memory + vector embeddings |
Cursor offre una gamma di modelli tra cui GPT-4o, o1, Claude 3.5 Sonnet e il loro modello custom cursor-small.
Caso d’uso ottimale:
- Conductor: refactoring architetturali complessi, implementazione feature multi-fase
- Cursor: prototipazione rapida, editing inline, autocompletion avanzato
Conductor vs. GitHub Copilot CLI
GitHub Copilot offre un tier gratuito con funzionalità limitate (12.000 completion al mese), mentre i piani Pro partono da 10$/mese.
| Aspetto | Conductor | GitHub Copilot CLI |
|---|---|---|
| Scope | Full lifecycle (spec → plan → implement) | Code generation + debugging |
| Project awareness | Deep (context files) | Limited (active file + git history) |
| Planning capabilities | Core feature | Non disponibile |
| Enterprise integration | Gemini Cloud | GitHub Enterprise |
| Model selection | Gemini family | GPT-4, Claude, Gemini (multi-model) |
Conductor vs. Amazon Q Developer
Amazon Q Developer è specializzato su AWS stack.
Confronto critico:
- Q Developer eccelle in scenari AWS-native (Lambda, ECS, RDS)
- Q Developer rispetta ruoli IAM AWS e assicura che l’output del codice rimanga di proprietà del cliente
- Conductor è cloud-agnostic e supporta architetture ibride
Caso d’uso ottimale:
- Q Developer: progetti AWS-heavy con forte focus su infrastruttura
- Conductor: architetture multi-cloud o on-premise
Sintesi comparativa – Guida Conductor per sviluppatori
A differenza di tool basati su GUI come Cursor o Windsurf che presentano un’interfaccia visuale, gli agenti CLI-based funzionano nativamente nel terminal.
Quando scegliere Conductor:
- Progetti enterprise con team >5 sviluppatori
- Requisiti di auditabilità e governance elevati
- Brownfield development su codebase complessi
- Necessità di workflow standardizzati team-wide
- Budget flessibile per API costs (vs. subscription fixed)
Quando scegliere alternative:
- Cursor: sviluppatori che prediligono GUI e vogliono AI embedded in ogni aspetto dell’IDE
- Aider: sviluppatori terminal-oriented su progetti individuali o piccoli team
- GitHub Copilot: organizzazioni già su GitHub Enterprise con bisogno di tool general-purpose
- Amazon Q: team AWS-centric con forte focus su IaC e servizi managed
8. Scenari futuri: verso lo sviluppo orchestrato (2025-2030)
Da “Coders” a “Conductors”
Si sta osservando uno shift da sviluppatori come semplici utenti AI a sviluppatori come sofisticati “AI conductor”. Mentre i timori sull’automazione dei lavori AI possono rimanere, il fatto che la conversazione si sia spostata da questioni di velocità e scala al contesto mette gli ingegneri software al centro delle cose.
Questo paradigm shift ridefinisce le competenze core del software engineer del 2025-2030:
Competenze emergenti:
- Context Engineering: capacità di strutturare e formalizzare requisiti in formato machine-readable
- Agent Orchestration: coordinamento di multiple AI agents su task paralleli
- Workflow Design: progettazione di pipeline di sviluppo agent-driven
- Quality Assurance for AI-generated Code: review critica di codice generato, focus su edge cases e security
Competenze in declino:
- Boilerplate code writing
- Syntax memorization
- Framework-specific API recall
Multi-Agent Parallel Development
Mentre gli agenti individuali stanno diventando sempre più capaci, ci stiamo rapidamente muovendo verso un futuro in cui gli ingegneri orchestreranno più agenti che lavorano in parallelo.
Scenario 2026-2027: Conductor 2.x supporterà:
# Orchestrazione multi-track parallela
/conductor:orchestrate --parallel \
--track auth-service \
--track payment-service \
--track notification-service \
--dependency-graph dependency.yaml
Gli agenti lavoreranno simultaneamente su microservizi indipendenti, con dependency resolution automatico e conflict detection.
Integrazione con Platform Engineering
Scenario 2027-2028: Conductor integrato in Internal Developer Platform (IDP) enterprise:
- Policy-as-Code enforcement: validazione automatica di security policies, compliance rules, performance budgets
- Cost optimization: analisi di code generated per ottimizzazione cloud costs
- Observability-driven development: integration con Datadog, New Relic per feedback loop automatico
Spec-Driven Development e architetture formali
Lo spec-driven development è un’idea che sembra avere una certa trazione, ma ci sono ancora domande su come rimanere adattabili e flessibili costruendo al contempo fondamenta contestuali robuste.
Scenario 2028-2029: Adozione di formal specification languages:
---- MODULE AuthenticationSpec ----
EXTENDS Integers, Sequences
VARIABLES users, sessions, tokens
TypeInvariant ==
/\ users \in [UserId -> UserRecord]
/\ sessions \in [SessionId -> Session]
/\ tokens \in [TokenId -> JWT]
Login(userId, password) ==
/\ ValidateCredentials(userId, password)
/\ CreateSession(userId)
/\ IssueTokenPair(userId)
/\ LogAuditEvent("LOGIN", userId)
Conductor potrà generare implementation da specifiche TLA+ o Alloy, garantendo correctness by construction.
AI Code Review e Security Scanning integrato
Scenario 2029-2030: Conductor 3.x con security-first approach:
- Static Application Security Testing (SAST) integrato pre-commit
- Rilevamento di vulnerabilità in code changes e pull requests tramite estensioni di sicurezza
- Threat modeling automatico da architetture generate
- OWASP Top 10 compliance checking automatico
Democratizzazione dello sviluppo enterprise
L’abbassamento della barriera tecnica permetterà a:
- Domain experts di contribuire direttamente a codebase tramite spec writing
- Product Managers di prototipare feature senza coinvolgere team di sviluppo
- QA Engineers di generare test suite comprehensive da acceptance criteria
Questo non eliminerà il ruolo dei software engineer, ma lo sposterà verso:
- Architetture di sistema di alto livello
- Performance optimization e scaling
- Security architecture
- Context engineering e agent orchestration
Previsioni quantitative (2025-2029)
Basandosi su trend attuali e adoption rate di strumenti simili:
- 2025: 5-10% di aziende Fortune 500 adotteranno context-driven development
- 2026: 25-30% adozione in startup tech-forward
- 2027: 40-50% di nuovi progetti enterprise inizieranno con agent-driven workflow
- 2028: 60-70% di codice in progetti greenfield sarà AI-generated con supervision umana
- 2029: Standard industry per collaborative AI development saranno consolidati
9. Formazione continua e aggiornamento professionale
L’imperativo della formazione continua
Le competenze di sviluppo di alto livello più efficaci sono ancora quelle di chi scrive ottimo codice, ma stanno sempre più aumentando tale competenza padroneggiando l’arte di fornire contesto persistente e di alta qualità.
L’evoluzione esponenziale degli strumenti AI richiede un approccio proattivo alla formazione del team IT. Le organizzazioni che non investono in upskilling rischiano di:
- Perdere competitività rispetto a concorrenti AI-native
- Subire brain drain di talenti verso aziende tecnologicamente avanzate
- Accumulare technical debt da utilizzo improprio di strumenti AI
- Incorrere in security issues da mancata comprensione dei rischi
La proposta formativa di Innovaformazione
Innovaformazione, catalogo corsi QUI, è una scuola di formazione specializzata in tecnologie emergenti e best practices di sviluppo moderno. L’offerta formativa copre l’intero stack tecnologico enterprise, con particolare focus su:
- AI-Assisted Development: GitHub Copilot, Cursor, Conductor, best practices per context engineering
- Cloud-Native Architecture: Kubernetes, microservices, serverless patterns
- DevSecOps: CI/CD, IaC, security automation, policy-as-code
- Modern Backend: .NET 8, Spring Boot 3, Node.js/NestJS, Go
- Enterprise Frontend: React 19, Angular 18, TypeScript avanzato
Corso specialistico: “Context-Driven Development con Conductor”
Innovaformazione propone un corso aziendale su misura e su richiesta. Modalità online classe virtuale con calendario da concordare. Possibilità di accedere a Fondimpresa e di venire seguiti per il progetto di formazione finanziata.
INFO: info@innovaformazione.net – tel. 3471012275 (Dario Carrassi)
Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:
Articoli correlati
Guida TailwindSQL
SAP incassi e riconciliazioni bancarie
Novità di Windows Forms
CancellationToken in .NET
Spieghiamo Graph Neural Networks GNNs
