Passo dopo passo, quanto si impara

Sono passati tre mesi dall’inizio della crescita aziendale “di massa”, se così vogliamo chiamarla. Quante cose sono cambiate, e quante ancora subiranno variazioni. Avevo una paura folle, mentre ora vedo che é sempre più possibile riuscire nell’intento di crescere in maniera sana, controllata e, soprattutto, mantenendo una certa qualità su quanto é fondamentale per noi: le persone, il rapporto vita/lavoro, la qualità del lavoro, il rispetto reciproco, il team.

Definitele una serie di frasi fatte o stereotipi utili a descrivere “quanto siamo bravi”, ma vi assicuro che non é così. E non lo è per vari motivi:
– siamo una grande azienda? No, per niente, ed eravamo piccini come la maggior parte delle aziende italiane
– siamo leader di mercato? Affatto! Anzi, stiamo lottando per cercare di posizionarci
– abbiamo solo i migliori talenti? Suvvia, e cosa vorrebbe dire? No, abbiamo persone proattive, curiose, che hanno continui conflitti per crescere, anche nei miei confronti (per fortuna).

vogliamo che le persone parlino tra loro, che crescano insieme e che coltivino l’interesse per topic anche non necessariamente in uso o orientati al business

Siamo un’azienda come le altre ma, forse, una differenza c’è. L’investimento enorme (e lo sottolineo) nella selezione del personale, nella crescita professionale di ogni persona, nell’ascolto delle proposte e nell’incitamento all’aiuto, se così vogliamo definirlo “bottom-up”. Vi faccio però una serie di esempi pragmatici per dirvi cosa intendo, perché altrimenti sembra tutto “campato in aria”.

Scalabilità

Dopo la crescita cospicua, serve scalare. Avremo a breve team verticali, purtroppo un po’ isolati tra loro. Ebbene, la nostra prima preoccupazione é stata quella di creare incontri trasversali (workshop, sessioni, ecc.) al fine di non far perdere i contatti tra le persone. Ma non solo, i contenuti erogati saranno proposti da chiunque, su qualunque argomento, da “come fare le presentazioni” a “cos’è React”. L’obbiettivo poi sarà quello di incentivare tutti a parlare e, perché no, a premiare le proposte con un programma di premi interni come corsi, libri, ecc.

Credo che il messaggio sia forte: vogliamo che le persone parlino tra loro, che crescano insieme e che coltivino l’interesse per topic anche non necessariamente in uso o orientati al business, purché possano essere di interesse e spunto di chiacchierate comuni. Ore perse? Non direi. Sono di qualità inestimabile.

Escalation engineers

Dal momento in cui ogni problema cliente, via ticket, arrivava fino a poco tempo fa agli sviluppatori, già impegnati in altri progetti, é nato un team dedicato alla risoluzione di tali problematiche. Il team ha la possibilità di fare proposte quando la problematica é ricorrente, sul backlog di progetto, per poter evitare spreco di tempo, andando anche a definire come essa potrebbe apparire, ad esempio, su un client. Per noi gli item di “proposal” stanno diventando sempre più importanti, perché chi é in prima linea sa bene come il cliente usa il prodotto e sa quello che serve. Ma non solo, gli escalation engineers sono la rampa di lancio per i nuovi arrivi, che grazie a ruoli di triage, primo intervento e testing (sì, fanno anche QA, la parte manuale) conoscono sempre di più quanto facciamo in azienda. E l’onboarding diventa sempre più completo. Anche questo dimostra quanto la persona sia centrale, perché non é semplicemente buttato nella mischia, ma é accompagnato in un processo di crescita, tra l’altro seguito da senior, con l’obbiettivo di capire come proseguire il suo cammino professionale in azienda.

A ognuno ciò che più piace

Di recente abbiamo assunto un ragazzo come backend developer. É alle prime armi tutt’ora, ma, chiacchierando in uno dei miei ricorrenti 1 to 1, é emersa la sua voglia di guardare il frontend. Inutile dire che a breve intraprenderà la strada della formazione e onboarding per la parte client web. Certo, lo possiamo fare perché abbiamo le persone, non posso nascondere questo grande vantaggio, però anche chi è appena arrivato è stato ascoltato. L’azienda aveva le possibilità di ragionarci, ed eccoci qui, a far fare ad una persona quello che davvero, sotto sotto, preferisce. É un win-win, non c’è dubbio.

Annosi problemi ed esercitazioni

Proprio qualche giorno fa abbiamo avuto un serio problema: un nostro collega, al primo turno di reperibilità nel fine settimana, si è trovato malissimo con strumenti e documentazione. Inoltre, durante la gestione dell’urgenza, non è stato allineato a dovere, il che lo ha fatto sentire impotente e completamente a bocca asciutta per il futuro. Questo, per noi, è un enorme ostacolo. Il lunedì successivo si è parlato immediatamente di come mitigare e poi risolvere questo tipo di problemi, grazie soprattutto alla proattività di Roberto che, dall’alto della sua esperienza e umiltà, ha dato una serie di feedback tra i più importanti degli ultimi anni. La nostra reazione è stata quella di creare una card ad alta priorità (massima, per la verità) sulla quale abbiamo già descritto le possibili soluzioni, una delle quali è quella di effettuare ripetute esercitazioni per ridurre la frizione che le problematiche potrebbero dare a chi dovrà affrontare il supporto tecnico nel weekend. Ancora una volta, orientati a migliorare il futuro di tutti, non solo in ottica di qualità e di risposta pronta al cliente.

Conclusioni

Ripeto, siamo grandi? Siamo i migliori? Siamo alla ricerca solo di talenti? Siamo speciali? No. Siamo però persone che si impegnano a migliorare il lavoro di tutti i giorni e le condizioni di ognuno di noi. Da lì poi, tutto é in discesa.

Abbiamo problemi? Eccome! E ancora sono enormi, non vi faccio gli esempi o “facciamo notte”,  ma se l’atteggiamento é quello descritto sopra, credo che la maggior parte possano essere risolti con buona probabilità. Vedremo cosa ci riserverà il futuro, per ora proseguiamo così.

Questi ultimi tre mesi sono stati molto costruttivi per l’azienda, per noi tutti e per me, grazie anche al lavoro sinergico che sto seguendo con Michele. Stiamo raddrizzando molte cose e il suo lavoro è preziosissimo.

Del salutarsi da adulti

Pochi giorni fa, in pausa caffè, uno dei ragazzi mi ha detto quanto segue: “mi sono stupito di quanto siano stati vissuti nel buon umore gli ultimi giorni in azienda di Peter”. Eh sì, seppure Peter sia un nome di fantasia, il suo lavoro con noi è terminato dopo pochi mesi. In passato, anche altri componenti del team hanno seguito strade differenti dalla nostra, persone forti e con noi da tanto tempo, e anche in quel caso mi sono chiesto “ha senso scrivere di questi episodi?”. Perché è piuttosto semplice ostentare sicurezza e fierezza quando si ha il vento in poppa, ma che implicazioni ha, invece, la fine di un rapporto di lavoro in cui tutto è fondato sul team building e sul team working?

Questo non è un post che sottolinea chi ha sbagliato cosa o che punta il dito su persone; non vuole esserlo nella maniera più assoluta. Tantomeno cercherò scuse o scappatoie, anzi, le condizioni che si vengono a creare in tali esperienze formative (e lo sottolineo) dimostrano il livello di maturità a cui si è arrivati come azienda, persona e figura responsabile del team che le vive. Attenzione, questo livello non è necessariamente buono, ma almeno si spera che il trend sia di crescita continua.

Quindi, perché scrivo? Semplice, perché dopo aver ricevuto la notizia da Peter ho pensato. Tanto. Ho fatto retrospettiva individuale, ho rivissuto i modi di pormi a lui, ho valutato come lui è stato collocato, seguito e vissuto dai suoi colleghi. Scrivo perché se da una parte ho avuto il dispiacere di veder partire nel tempo altri colleghi, dall’altra faccio un incredibile tesoro delle esperienze.

Per ovvi motivi non faccio alcuna menzione alle motivazioni che hanno spinto i ragazzi ad andarsene ma posso dire che ognuno ha avuto il proprio particolare trigger, ognuno dei quali ha fatto crescere l’azienda. Credo di poter dire che siamo una realtà totalmente orientata alle persone e al lavoro di squadra, che ci sono tanti stimoli tecnici, così come sono fermamente convinto che ognuno dei problemi che ovviamente abbiamo venga sempre affrontato, discusso e risolto nel tempo. L’ascolto per me è fondamentale ed è quello che fa crescere. Ed è proprio grazie a questo che, nonostante talvolta le persone cambino strada, l’azienda si comporta in maniera resiliente.

Ma torniamo alla frase di apertura; come mai è stato tutto normale fino al giorno della fine del rapporto? Come mai non c’è stata guerra e perché mai la persona che se ne sta andando da lì non è un “traditore”? Beh, mi stupirei del contrario, eppure, sembra che qualcuno sia stato etichettato in vari modi quando ha scelto di cambiare in molte realtà.

È stato come ogni giorno con Peter e con tutti gli altri perché, anche se ovviamente siamo feriti (a volte anche in difficoltà), prima di tutto siamo adulti e ognuno di noi è diverso, un piccolo grande universo di idee e di punti di vista. Per quale motivo una persona non deve poter cambiare senza subire un’etichetta? E anche se fosse per motivi che a noi appaiono futili o venali, chi ci giustifica ad essere giudici delle vite e delle scelte altrui? Per alcuni di voi saranno frasi fatte, per altri retorica, fa lo stesso. Posso dire che anche Peter ha fatto di tutto per essere di aiuto fino alla fine e la sua predisposizione e professionalità hanno fatto sì che il nostro rapporto non si interrompesse in malo modo. Noi investiamo in persone e rapporti umani,e se perdiamo nel cammino persone che scelgono di cambiare, beh, preferiamo augurare loro un grande in bocca al lupo!

Reducing the gap between operations and development using Azure DevOps

Intro

As we all know, DevOps is culture. In a company that is going to adopt its practices and principles, everyone should be “on the same side”. Continuous improvement cannot be part of our work in IT if we wouldn’t reduce the gap between development and operations. People like me, that worked in the 90s, know that dev and ops were always isolated in silos and this was “the only” way that everyone followed as a suggestion taken from the market leaders. Ticketing systems and extreme bureaucracy acted as a man-in-the-middle between those silos, transforming each organization in two people-unaware endpoints.

Speaking from a DevOps perspective, in such circumstances, a developer couldn’t know anything about how to deploy, where and how is an environment configured. On the other hand, an operation guy couldn’t get anything from a package in terms of what the application has been made for. Due to this gap we often see performance issues, underestimated hardware stuff and delayed releases. Last but not least, what about the lack of commitment and accountability of the employees working on the solution? In short, reducing such a gap is possible using a combination of DevOps culture and the right tools. We will see hereafter how my organization tries to do so using Azure DevOps.

Scenario

Let’s get started with our team (DevTeam hereafter), which is working with agile methodologies, composed of ten developers and a PO. A quick note, we are using a process decision framework called Disciplined Agile (https://www.disciplinedagileconsortium.org/). Then, we have three operation professionals (OpsTeam hereafter). Build and deploy pipelines already exist. Builds are hosted by Azure DevOps and deploys are managed by Octopus Deploy. Getting this has been a difficult mission.

Everything is related to infrastructure in terms of servers, operative systems, virtual hosts, DNS, firewalls, security and so on, is the responsibility of our OpsTeam. As a result, they do many tasks for managing the environments. Here comes the problem. DevTeams used to create tasks in a dedicated backlog, but OpsTeam didn’t. It’s not just a matter of end-of-pipeline tasks, but also tasks for their daily basis work.

Our solution

Modify the tool, adapting its shape in order to fit in with that real scenario. A piece of cake, when you’re DevOps “inside”. How did we change Azure DevOps? Let’s describe what we did in three parts:

Team on Azure DevOps

To create a team in Azure DevOps is really a piece of cake (according to the latest releases). Just navigate to the options and select Teams:

We can add many teams clicking on New team:

We can set the team’s administrators, the permission set and an area under which every work item will be created. This area will be one of our best friends, especially when we will make our queries for gathering and analyzing the team’s related data. Additionally, also the other teams’ members could create items with this area in order to make the OpsTeam aware of them.

Team’s backlog

Now let’s navigate to Backlogs:

Good! The new backlog has been created. Going on it, we will see the team’s drop-down as well as the one for iterations. Great features!

Once created, we will see the teams’ drop-down:

Work items

Now, let’s create a new work item type. We call it Ops item. Navigate to Process customization page:

Before adding the new work item, we must ensure that the process is already a custom process, otherwise, all the edits will be blocked as shown in the following picture:

We’ve already created a SimplifiedScrum process. let’s add our item now:

Now we are going to modify the fields of the new type. Each team should be able to understand all the item’s properties. We will leave the item as is in this example. Then, we have to map the type to the backlog item list, since only the default work item types are shown initially. To do this, navigate to the Process customization page, Backlog Levels tab:

As we can see, we can also set the default item for our requirements backlog. Moreover, every Sprint backlog, based on iterations, will enable us to add the new Ops item:

Wrapping up

So, we’ve got a backlog for the IT Operations team’s members. Then, we’ve related it to their Azure DevOps team. Additionally, we’ve got a particular work item type (not mandatory, but really useful for querying it or adding it into dashboards) target of IT Operations’ job and a dedicated Area Path. We can make many relationships between items of both our backlogs. Here is an example of how an activity can be managed and organized (extension: Work Item Visualize):

As you can see, the Ops items are Successor of the “development” Product backlog items. Indeed, the Ops Items will be finished after the PBI, typically. Think about creating s DNS or a network path to let the production app work in production.

Conclusions

With this solution, we’re decoupling backlogs. Moreover, we’re isolating the management maintaining the relationships between work items that reside on different boards. At the same time, we’re making a strong synergy between Development and Operations.Then, in a couple of clicks, we can switch teams and backlogs, using Azure DevOps Boards. We can track changes in both the departments, also for audit requirements. In my opinion, this helps the enterprise awareness and facilitates the continuous improvement of all the teams and any member’s skill.

Agile@School 2017 – obstacles on the path

Hello everyone,

As mentioned in the previous post, the project has been started and we’ve reached the “fourth episode”. This time, Alessandro and I were able to talk with students in order to get which kind of project they are going to complete and show during the final exam.

Like every other project, problems are behind the corner. Indeed, the students didn’t create any task under the related Product Backlog Items. This is what they should have done. The issues were principally:

  • some teams still not had figured any idea to implement
  • some other weren’t able to use Visual Studio Team Services (VSTS) in the right way (or few of them simply didn’t wanted to 🙂 )

That’s it, so our last meeting was focused on explaining the advantages of agile methodologies instead of the classic waterfall approach, showing them how to use VSTS correctly in order to clarify any doubt about its use. We started to speak about methodologies because they used to waterfall their project, and this means that they were gathering ideas, instead of thinking in an iterative way.

Although this fact, we could see the first results from the majority of the students which let us being confident about the future of their projects.

As result of this talk, the students seemed to have got why choose a methodology instead of another, being able to manage their work with the right tools. At the end of this day, we’ve assigned them just a simple homework: create the tasks which reflects their development steps, moving PBIs through different status during their work.

That was all for this episode. Stay tuned for any news about the course of the project.

See you to the next post!

Agile@School 2017 – let’s start over

As a recurring project, Agile@School is started again on February, with a new set of projects and ideas. Gabriele will help me again, but it will be a very difficult task. During the past year we followed a Scrum approach, in order to comply the team structure. As you can read here, there were one team with a small bunch of members. Now, we’re getting “bigger”. As a result, we’ll have micro-teams of two/three member each. Great chance for Kanban. Let’s give it a try.

01

How will we approach in the beginning?

  • defining a set of micro-team, that we call “task forces”
  • designing a Kanban board
  • describing personas
  • speaking of some ceremonies we’d like to get rid of
  • speaking of some ceremonies we’ll keep
  • describing the customer journey and the story map practices

The task forces

The term not fits very well, actually; indeed, a task force is something that could be considered as a “defcon 1” team. However, we would give the teams a label which is “strong”. To be honest, we have a little amount of time, so in the end we can say that we’re in hurry already 🙂

The Kanbard board

As we said above, we will have more task forces, most likely six. Therefore, the board will use columns (as usual) for the status management and rows (aka Swimlanes) for separating teams and projects.

02

The board will be created in Visual Studio Team Services, in order to use also the Source Control Manager which relies on it.

Personas

Each team member will populate a simple card, the Persona card, which is depicted in the picture below:

03

As you can see (in Italian), the first column is for Persona details, the second for interests and the third is the “role” which the member would like to have. I know that the last column is not included in any best practice, but I feel that some student could start to think about its job and its future. Could be interesting.

The customer journey

During the next meeting, we’ll ask the students to show us their customer journey. Each team will have to describe the journey of a typical user, with mood for each action it takes and the value which it gets by the action itself.

Conclusions

Kanban, task forces, boards, customer journey, personas, etc. This year is full of new things to get knowledge from. Also the source control manager will change. We will use git on VSTS so we will get different projects in the same place in a quicker way.

And now, let’s start over! 🙂

How to share redgate database tools settings with Team Foundation Service

In a previous post we’ve seen how to share the SQL Prompt snippet folder to the development team. We’ve used dropbox for sharing and powershell to copy files between the default directory and the new place (changing also the related registry keys). In this post we’ll focus on how to share all the Red-Gate development tools using Team Foundation Server or Team Foundation Service for team sharing (TFService and TFS Express are two free solution).

The requirements are:
– at least a folder, that will be shared to all team members
– the tools must support the customization of the configuration folders
– a script (powershell in the following samples) that can change the configuration folders

Keep in mind that we’re talking about third party tools, plugged in to SQL Server Management Studio. We will speak about:

  • SQL Prompt snippets (we will change snippet folder)
  • SQL Compare filter and project files (we will change filter and project file startup folder, .scp and .scpf files)
  • SQL Data Compare project files (we will change project file startup folder, .sdc files)

We’ll use Team Foundation Service as a Source Control Manager Continue reading “How to share redgate database tools settings with Team Foundation Service”