Agile@School – Terza lezione

Eccoci giunti alla terza lezione su dieci del laboratorio Agile@School dell’IIS Viola/Marchesini di Rovigo

Screenshot_1

Stand-up meeting

Anche questa volta abbiamo fatto pratica con lo stand-up meeting in cui abbiamo fatto un piccolo riassunto della puntata precedente ed è stato introdotto a grandi linee il programma della giornata. La partecipazione al riassunto sugli argomenti passati è stata tiepida ma ugualmente ci ha fatto scontrare col fatto che per riassumere gli episodi precedenti bisogna scegliere l’adeguato livello di astrazione: né troppo elevato, né troppo dettagliato. A seguire ho introdotto gli argomenti della giornata e una previsione sulla lezione futura.

MVVM – Comandi

Abbiamo ripreso il filo della lezione precedente introducendo il concetto di comandi nel mondo MVVM. Con l’occasione abbiamo letto insieme la documentazione MSDN dell’interfaccia ICommand, abbiamo ripassato il concetto di delegati e studiato un’implementazione di ICommand. Ancora una volta il livello di preparazione delle quinte mi ha stupito perché la definizione di delegato era già stata spiegata dai prof. nelle ore “standard”, cose che ai miei tempi non si facevano.

Hands-on

Per impratichirsi coi comandi ai ragazzi è stata consegnata un’applicazione già iniziata ma con delle parti mancanti. Abbiamo preso questa occasione per riconciliare tutte le cose provate nelle puntate precedenti e quindi abbiamo:

  • Creato un nuovo progetto su VSTS;
  • Inizializzato il repository git con l’applicativo di base;
  • Ho fatto finta di essere un cliente che racconta un’esigenza che è stata trascritta dagli studenti in forma di user story in VSTS;
  • Sviluppato su feature-branch collegato alla user-story;
  • Creato pull-request e fatto merge del lavoro.

Quello che qui è riassunto in cinque punti di un elenco puntato è stato ricco di interazione tra me e la classe e tra gli studenti stessi. Confronti, dubbi, errori, chi finiva priva che spiegava agli altri…

A questo punto la classe mi ha nuovamente stupito perché hanno finito in anticipo rispetto alle tempistiche che avevo immaginato e quindi mi sono dovuto inventare al volo un’altra esigenza e abbiamo ripetuto di nuovo il processo di sviluppo. Già al secondo giro si vedeva una maggiore confidenza sia con VSTS che con il pattern MVVM.

Wrap-up

Anche questa volta una giornata positiva e sicuramente la più operativa in termini d’uso di VSTS e righe di codice.

Nella prossima lezione approderemo su Xamarin facendo una panoramica sui concetti base.

Alla prossima settimana!

Advertisements

Agile@School – Seconda lezione

Anche questa settimana si è svolto l’incontro del laboratorio Agile@School all’IIS Viola/Marchesini.

Stand-up meeting

In questa seconda lezione abbiamo applicato subito uno dei concetti affrontati la lezione scorsa: il feedback per incentivare il miglioramento continuo. Ne abbiamo approfittato per introdurre lo stand-up meeting che viene svolto da molti team. In questi minuti di  incontro “informale” in piedi abbiamo provato a raccogliere sensazioni e pareri sul primo incontro. Dopo un primo momento di silenzio qualcuno ha detto il proprio parere:

  • Alcuni hanno definito l’incontro più interessante del previsto, in particolare è stato trovato interessante il concetto di team e la sua gestione;
  • Qualcun’altro è stato colpito dalla potenza della visualizzazione del lavoro tramite una kanban board;
  • Uno dei professori ha riferito che i principi base riguardanti DevOps sono molto interessanti.

Ho provato anche a incentivare feedback negativi ma nessuno si è sbilanciato. Per ora 3 feedback positivi sono un buon risultato, avanti così!

Sempre per esercitarci sullo stand-up meeting abbiamo anche accennato gli argomenti che avremmo affrontato nel pomeriggio e quelli della prossima lezione.

Slack

Per prendere confidenza con gli strumenti di collaborazione più diffusi ci siamo inseriti nell team Slack agileschool.slack.com. I ragazzi si sono trovati subito a loro agio senza problemi. Useremo Slack per passarci esercizi e il materiale che di volta in volta riterremo necessario.

Pull-Request

Tornati seduti abbiamo lavorato con VSTS per esercitarci con le pull-request. Gli studenti sono stati suddivisi in team da tre persone che hanno lavorato su un semplice esercizio con un’app WPF già preparata a cui apportare piccole modifiche. Alla fine del lavoro si chiedeva un’approvazione tramite PR agli altri membri del team. Con alcuni team ci siamo scontrati con problemi di merge. In alcuni casi li abbiamo risolti, in altri non ce l’abbiamo fatta per motivi di tempo.
Ad ogni modo mi sembra che il concetto e a cosa servono le pull-request sia stato ben capito.

MVVM

Come ultimo argomento abbiamo introdotto le basi dell’MVVM, il noto pattern a tre livelli per strutturare app che verrà utile con Xamarin Forms.

Abbiamo svolto un esercizio che ci ha fatto mettere le mani e vedere funzionare i meccanismi alla base di questo template e in particolare ci siamo concentrati sui Binding.

L’argomento non era di certo facile ma l’impegno da parte di tutti è stato notevole. Era bello vedere come chi aveva concluso tra i primi poi spiegava o aiutava agli altri, questo è lavoro di squadra!

photo_2017-11-30_23-03-04

Alla prossima settimana!

 

Agile@School – Inizio

Anche l’ITI F.Viola/Marchesini di Rovigo si è unito ufficialmente al progetto esperimento/laboratorio Agile@School basato sull’idea e il supporto di Alessandro Alpi.

Immagine

Il tutto è stato inserito nelle attività ufficiali di alternanza scuola-lavoro dei ragazzi delle due quinte dell’istituto rodigino.

Il laboratorio ha come obiettivo introdurre i ragazzi ai concetti Agile e di lavoro in team: si mettono le mani in pasta e si utilizzano strumenti all’avanguardia del mondo professionale per realizzare un’app con Xamarin.

Nelle tre ore di laboratorio abbiamo toccato svariate argomentazioni e devo fare i complimenti ai ragazzi per essere stati complici e attivi in questo inizio di percorso tutto da esplorare.

  • Abbiamo introdotto i primi concetti e terminologia del mondo Agile e delle sostanziali differenze di cosa vuol dire fare un software per hobby/studio e farlo professionalmente.
  • Abbiamo esplorato le funzionalità di base di VSTS (Visual Studio Team Services) creando varie tipologie di PBI e mettendole in relazione per far capire come si possono condividere informazioni tra i vari ruoli in un team: il punto di vista del developer, del referente di progetto (middle management) e di un livello ancora più alto. Abbiamo esplorato le board e i backlog.
  • Abbiamo simulato un flusso di lavoro con feature-branch con git e Team Explorer di Visual Studio.

Come primo incontro è stato molto ambizioso, ci sono stati dei momenti più coinvolgenti e altri meno: molto è sicuramente da imputare alla mia inesperienza come formatore ma farò il possibile per calibrare sempre meglio i contenuti e le mie capacità.

Mi ha sorpreso positivamente vedere come alcuni studenti avessero già mosso i primi passi su GitHub e conoscessero il funzionamento di branch e pull-request.

Un grazie particolare va ai professori del corso di informatica e sistemi che hanno sin da subito appoggiato e creduto in questo progetto. Grazie prof. Borsetto, prof. Melon e prof.ssa. Bellini.

Alla settimana prossima!

DevOpsHeroes see you next year! — Alessandro Alpi’s Blog

Event details DevOpsHeroes has been a great event. We didn’t expect so many people and we could not imagine that the feedback would be so good. Quick facts: Subscription: 150 Attendees: 93 drop: 38% Attendees’ County/Region (breakdown): Attendee’s satisfaction The following radar chart is about the event date, location, quality of the sessions, quality of […]

via DevOpsHeroes see you next year! — Alessandro Alpi’s Blog

How to setup a Private Agent in Visual Studio Team Services

In the last post about VSTS (Visual Studio Team Services) we setup the foundations for a project.

In this we install a private agent to build and deploy our project.

VSTS provides hosted agents to build and deploy. When we use a hosted agent, Microsoft takes care of the maintenance and upgrades. So for many teams this is the simplest way. Every agent has a set of capabilities that indicate what it can do. Capabilities are name-value pairs that are either automatically discovered by the agent software, in which case they are called system capabilities, or those that you define, in which case they are called user capabilities.
If the hosted agents do not suit our needs we can setup our dedicated agent and that’s the topic of this post.

Read More »

.Net Core basics

Microsoft is pushing hard with .NET Core and everyone can see that they are very proud of it. I never gave too much attention to it but now it’s time. So I started from scratch.

What is .NET Core?

.NET Core is a cross-Platform free and open-source managed software framework – Wikipedia

NET Core is a blazing fast, lightweight and modular platform for creating web applications and services that run on Windows, Linux and Mac. – Microsoft

.NET Core 2.0 implements the .NET Standard 2.0. The .NET Standard is a formal specification of .NET APIs that are intended to be available on all .NET implementations.

Immagine

Install

.Net Core 2.0 (https://aka.ms/dotnet-sdk-2.0.0-win-gs-x64)

Create some code

Open console and type:

> dotnet new console -o HelloCore
> cd HelloCore

dotnet is the base command of the SDK and it has many features like testing, nuget functionalites, managing dependencies and otheres. The new command is used to initialize new applications and we specify a console application and we want that application in the HelloCore directory. cd HelloCore moves into the newly created app directory.

View the code

With our favourite text editor we open Program.cs and we see that dotnet new has created a simple hello world app.

using System;

namespace HelloCore
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Run

With the

> dotnet run

command we launch our first .Net Core app.

> Hello World!

TL; DR

.NET Core is a brand new implementation of .NET and it’s the multi-platform component of the .NET family.

With this blog post we explored the basic concepts of .Net Core. We also created our first app in 5 minutes.