Woensdag 10 april is een interne training van start gegaan met als doel een aantal medewerkers om te scholen naar .NET.
De noodzaak voor de cursus is ontstaan door het feit dat verschillende Oracle ontwikkelaars binnen Devoteam de overstap hebben gemaakt c.q. willen maken naar .NET.
Omdat er binnen Devoteam reeds veel .NET kennis aanwezig is, is besloten om een interne training op te zetten i.p.v. trainingen te volgen bij externe partijen.
Het primaire doel van deze training is om de deelnemers een breed overzicht te geven van de veel gebruikte onderdelen van .NET. Uitgangspunt hierbij is dat er een minimale kennis van OO en .NET verondersteld wordt.
Een niet onbelangrijk doel is daarnaast het ontwikkelen van de training zelf, zodat de cursus in de toekomst ook gebruikt kan worden om een eigen ‘kweek’ te faciliteren. Het is dus voor alle belanghebbenden een leerproces.
De cursus behelst 6 theorielessen, een les per week van elk 3 uur. Na iedere les volgt een verplichte wekelijkse opdracht om het behandelde thuis in de praktijk te brengen. De opdrachten dienen twee dagen voor de volgende les te worden ingeleverd zodat ze kunnen worden beoordeeld door de trainers.
De cursus is opgezet en wordt gegeven door de twee trainers Hildo van Es en Michel de Wit.
De cursisten zijn Richard Teunissen, Son Nguyen, Victor Louisa en mijn persoon, allen met een Oracle achtergrond.
De lessen zijn gebaseerd op de meest voorkomende technologieën en onderdelen van de .NET stack die een professional in de praktijk kan tegenkomen.
De indeling is als volgt:
- Opfrisles/Algemeen/Vooruitblik
- Data
- Communicatie
- Web
- Windows
- Nieuwe en aan .NET verwante technologieën
Door een weekje vakantie heb ik de eerste les helaas moeten missen. Deze les was bedoeld om de aanwezige kennis te toetsen en op te frissen. Daarnaast kwamen de onderdelen aan bod die later in de cursus zullen worden behandeld en verder in context geplaatst worden.
De onderdelen van les 1 waren:
2. Applicatie architectuur:
a. Lagen
b. Patterns
3. C#
a. Exception handling
b. Event handling/Delegates
c. Threading en parallelism
d. Generics
4. OO:
a. Inheritance, overloading en extensions
b. Patterns (oa. IoC, Factory pattern)
5. Clean code (Single responsibility principle)
6. Linq, ADO.NET en Entity Framework
7. Tooling:
a. Visual studio, Nuget, TFS/SVN
b. Redgate: Reflector, SQL Toolbelt
c. SQL Server Management Studio
8. Sites:
a. StackOverflow
b. Codeplex
c. MSDN
Van collega’s heb ik begrepen dat de les redelijk pittig was. Drie van de vier deelnemers hebben een tijd geleden een C# cursus van een week gevolgd bij Global Knowledge en de les van woensdagavond deed deze cursus, en meer, nog eens dunnetjes over. Maar het doel van deze les was dan ook opfrissen en vooruitblikken.
Omdat ik dus de eerste les niet heb meegemaakt kan ik alleen iets vertellen over de opdracht (die ik uiteraard wel heb gemaakt)
De opdracht van les 1 was:
De csv importer moet getriggerd worden door een filewatcher, waarbij je de juiste events afhandelt.
Wanneer de csv niet wordt ondersteund, dient een exceptie gegooid te worden van het type CsvNotSupportedException, maar mag niet leiden tot het afsluiten van de applicatie.
Wanneer de csv wordt ingelezen dient deze te worden getransformeerd naar XML (hiervoor kun je XMLSerializer gebruiken of Linq2XML) en dit bestand moet worden opgeslagen op schijf.
Requirement: de importer moet herbruikbaar zijn
Requirement: het systeem moet meerdere bestanden tegelijkertijd kunnen verwerken.
Let op het volgende:
- Naamgeving en conventie
- Single responsibility principle
- OO principes en design patterns
- Goed gebruik van het Framework
- Afvangen en opgooien excepties
- Eventing en Delegates
- Het juist gebruik maken van multi-threading
Ondanks dat ik door de cursus bij Global Knowledge en de nodige zelfstudie het niveau van “minimale kennis van OO en .NET” overstegen denk te hebben vond ik de opdracht, rekening houdend met bovengenoemde eisen zoals herbruikbaarheid, multi-threading, eventing, delegates, enz. inderdaad redelijk pittig. Ik had de meeste onderwerpen wel al eens gezien maar moest toch nadenken hoe het ook al weer zat. Maar … het is me gelukt.