Programmatori dentro

Come fare per aumentare la produttività

Ottobre 17, 2009 · Lascia un Commento

Il miglioramento della produttività è un obiettivo che tanti  fra manger e dirigenti, ma anche persone a cui piace il loro lavoro affermano di voler perseguire. E’ il sogno di tutti riuscire a fare più cose nell’arco della giornata.

Al di là delle aspettative credo che tutti siano concordi nel ritenere che aumentare veramente la produttività è un’impresa molto difficile.

In questo post proverò a suggerire una semplice soluzione che consente di creare la basi per un aumento di produttività.

La prima regola, spesso trascurata, ma semplice, è che i maggiori aumenti di produttività si ottengono agendo sulla motivazione delle persone.

In poche parole le persone si devono sentire coinvolte ed invogliate ad essere produttive. Come fare?

Basta partire dall’efficienza nelle picole cose. Provo a fare alcuni esempi.

Pensate di lavorare in un ufficio in cui c’è un armadio con la cancelleria e potete rifornirvi quando ne avete bisogno; peccato che una volta no ed una volta sì manchino le penne, i quadernoni, gli evidenziatori, etc.

Chiedete “perchè?” e ottenete risposte del tipo “il fornitore è in ritardo” o “il fornitore ha esaurito l’articolo” o “non mi ero accorto/a che fossero finiti”

Dopo un po’ smettete di chiedere ed imparate a fare senza, tanto non si può fare niente per cambiare le cose oppure non avete tempo per cambiarle.

La stessa cosa vale quando state aspettando un ordine di un pc o un server, tutto sembra muoversi al rallentatore.

Per non parlare di quando le cose deve farle qualcuno dei vostri superiori a cui avete chiesto aiuto o un consiglio e questo “si fa di nebbia”.

Col tempo si finisce per perdere la fiducia e ogni volta aspettare rassegnati che accada l’evento superiore che sblocchi la situazione e quindi si perde l’entusiasmo e la fiducia.

Pensate invece ad una situazione in cui quando finisce un articolo di cancelleria qualcuno va alla cartoleria più vicina, compra quello che deve e la mattina dopo vi trovate quanto richiesto sulla scrivania, o al caso in cui avete ordinato un pc e il responsabile acquisti vi informa che c’è un ritardo e vi offre una macchina temporanea o vi fornisce una data precisa in cui questa sarà consegnata.

O, udite udite, pensate alla possibilità che il vosto capo vi chiami dicendo che ha risolto il problema che gli avevate posto o vi invita a pranzo (e paga lui) per cercare di risolvere insieme il problema segnalato.

Come sarebbe il vostro atteggiamento sul lavoro?

Io credo molto, molto  diverso, vi sentireste parte di un meccanismo che funziona e sareste naturalmente portati a farlo funzionare meglio in quanto tutti intorno a voi fanno lo stesso.

E tutto questo senza analizzare, pensare o mettere in piedi chissà quale sistema. In tante aziende passare dall’idea dell’inerzia a quella del movimento basterebbe per far respirare a tutti un’aria diversa.

Non è difficile, basta volerlo.

Fate una passaggiata nel corridoio o fra le stanze della vostra azienda e guardate le facce?

Sono allegre o sono tristi e/o rassegnate?

Basta fare due passi per capire da dove cominciare.

→ Lascia un CommentoCategorie: Pensieri sparsi · organizzazione aziendale · produttività

Repetita iuvant o perserverare diabolicum est?

Ottobre 7, 2009 · Lascia un Commento

Dobbiamo raggiungere l’obiettivo. Dobbiamo raggiungere l’obiettivo. Dobbiamo raggiungere l’obiettivo

Dobbiamo raggiungere l’obiettivo. Dobbiamo raggiungere l’obiettivo. Dobbiamo raggiungere l’obiettivo

Ripetere e basta il punto di arrivo non serve raggiungerlo.

Ci vogliono dei fatti; altrimenti potrei dire:

Voglio vincere al super enalotto. Voglio vincere al super enalotto. Voglio vincere al super enalotto

Magari senza neanche giocare.

Perchè nessuno crede che si possa vincere al super enalotto senza giocare, ma quasi tutti credono che si possano raggiungere gli obiettivi semplicemente ripetendo la loro necessità?

→ Lascia un CommentoCategorie: Pensieri sparsi

Serve davvero fare pressione sui programmatori?

Settembre 17, 2009 · 3 Commenti

Arriva la fine anno e al solito tutti vogliono tutto e subito. Una conseguenza spiacevole di questa situazione è che i grandi capi chiedono alle loro “prime linee” i risultati e spesso questi essendo meri coordinatori non fanno altro che girare la patata al livello successivo e coì via fino ad arrivare alle persone che producono le quali si trovano a dover far fronte ad un sacco di richieste. In pratica il capo del nostro capo mette sotto stress il nostro capo che mette sotto stress noi (a volte accade anche che il grande capo stressi tutti e tutti stressino voi). Se questo accade è un chiaro segnale che qualcosa non va  e per due motivi:

  1. Ci sono livelli che non fanno alcun tipo filtro (verso il basso) e questo significa che potrebbero farsi parte, tanto vale essere stressati direttamente
  2. Queste persone non hanno capito molto di come si possano coordinare delle altre persone (non RISORSE come la rma del computer, MA ESSERI PENSANTI) per ottenere dei risultati (il che rafforza la conclusione del punto precedente ovvero dovrebbero farsi da parte)

Il secondo punto è quello più importante e credo che abbia le sue radici nella visione dei rapporti con gli altri.

Immaginate di essere di fronte ad un problema importante che non potete risolvere direttamente, ma dovete per forza delegare ad un altra persona perchè non sapete risolverlo voi. Potrebbe essere qualsiasi cosa (un tubo rotto nel muro, un difetto nell’impianto elettrico, un software da realizzare). La persona incaricata non sembra procedere come da voi previsto e qualcun altro (il nostro capo, il coniuge, la suocera, etc) chiede come vanno le cose e quanto manca alla fine. Se non vi fidate della persona cominciate a chiedere, a dare consigli o a dire di fare in fretta o peggio ancora insinuate che non sa fare il proprio mestiere.

Mettetevi dall’altra parte e pensate di essere chiamati a fare un lavoro, di incontrare delle difficoltà e di avere qualcuno che “stressa”. Non è piacevole e sicuramente siete poco sereni per cui anche il lavoro che fate ne risente, per forza.

Che cosa potrebbe aiutare? Molto semplice: qualcuno che chiedesse “posso aiutare?” e/o che vi dimostrasse la sua fiducia. A parità di lavoro da svolgere il risultato sarebbe sicuramente migliore.

Perchè allora lo stile in voga è quello di mettere pressione? perchè il pensero di fondo è che i sottoposti se non controllati o “pressati” tendono a rilassarsi e rendere di meno. Credo questa assunzione anche vera non porti da nessuna parte perchè:

  1. Se una persona non ha voglia di lavorare troverà sempre il modo di evitare di farlo e ha sicuramente imparato a difendersi dallo stress
  2. Se una persona ha voglia di fare lavora meglio se motivata e se sente un clima di fiducia intorno a sè

Chi ha figli che vanno all’asilo (specialmente il nido) dovrebbe chiedersi come mai ci sono maestre che non urlano, sorridono sempre e si fanno obbedire “senza sforzo”. Penso che dovremmo prendere esempio da queste persone: in fondo la differenza fra adulti e bambini sta solo nel costo dei giocattoli che desiderano.

→ 3 CommentiCategorie: Pensieri sparsi · organizzazione aziendale · sviluppo software · vita in azienda

Suggerimenti per colloqui di lavoro: cosa vuol dire puntiamo sui giovani

Settembre 7, 2009 · 2 Commenti

Questo post è pensato per tutte le persone a cui piace programmare e che si accingono ad entrare nel mondo del lavoro o ci sono da pochi anni.

Ci sono diverse aziende che assumono solo persone neolaureate o con poca esperienza perchè  dicono di “voler puntare sui giovani”.

Di solito la frase si traduce in “vogliamo spendere poco per le persone per cui assumiamo quelle che costano meno”.

Come si fa a verificare se una azienda ha scelto di fare scuola e di valorizzare veramente le persone giovani o sta usando “l’aziendalese” per mascherare un contenimento dei costi?

E’ necessario porre qualche domanda all’intervistatore, per esempio:

  1. Qual è il percorso di crescita nell’ambito delle programmazione, ovvero qual è la posizione più probabile che potrei ricoprire fra 5 e 10 anni?
  2. Qual è la postazione base del programmatore in termini di potenza del pc (quanto è grande il monitor per esempio)?
  3. Quanti hanni ha il programmatore più anziano che usa le tecnologie per cui faccio il colloquio?

Se vi dicono che fra 5 o 10 anni potreste diventare un responsaibile di “qualcosa” (prodotto, progetto) significa che probabilmente non programmerete più per cui una risposta di questo tipo è un primo sintomo che i programmatori sono “bassa manovalanza” e che appena l’anzianità e lo stipendio cresce addio codice. La conseguenza è che i prodotti dell’azienda sono fatti da persone giovani alle prime armi che non hanno nessuno di più esperto a cui fare riferimento per problematiche tecniche.

Se vi rispondono che avete un ventaglio di possibilità è già qualcosa, ma a quel punto dovreste riformulare la domanda nel seguente modo: ” se volessi intraprendere una carriera tecnica quale sarebbe il mio giorno tipo fra 5 o 10 anni?”. Non vi meravigliate se qualcuno vi risponde che un “tecnico” informatico con 10 anni di esperienza scrive specifiche funzionali (quindi programma in msword) , coordina delle persone (quindi parla e programma in MSOutlook) e parla con il managment interno ed alcuni clienti (quindi parla e spesso racconta delle mezze verità).

Quale potrebbe essere un profilo adatatto per un tecnico?

  1. Progettare classi e librerie per il circa 20% del tempo (ovvero prototipazione con l’editor del vostro linguaggio preferito)
  2. Realizza classi e librerie per circa il 40% del tempo (quindi scrive e legge codice e lo verifica)
  3. Lavora in gruppo magari coordinando il lavoro di altre persone per il circa 10% del tempo
  4. Risolve i problemi tecnici per il circa 30% del tempo
  5. Aiuta i colleghi più giovani per circa il 100% del tempo

Se vi rispondono che la postazione del programmatore è la stessa che hanno tutti i dipendenti chiedete qual è la postazione standard e valutate se è sufficiente per lavorare senza particolari attese. Qualche suggerimento: meno di 2 gb di RAM = attesa, meno di un monitor 19” = lavorare scomodi, usare sempre un portatile vuol dire  o che viaggerete spesso e/o che lavorerete scomodi (una tastiera decente ed un monitro 22” fanno una bella differenza, provare pre credere).

Se vi rispondono che il programmatore più anziano che usa Java o .Net o una qualsiasi tecnologia recente (vb6 nonè una tecnologia recente, il COBOL non è una tecnologia recente) non ha neanche 5 anni di anzianità si torna al discorso della “bassa manovalanza” di cui sopra.

Infine una riflessione di carattere generale: se un azienda assume solo giovani come fa a farli crescere? Chi insegna i più giovani?

La risposta è: i più anziani; ma chi ha fatto crescere (se li ha fatti crescere tecnicamente) i più anziani?

Se una azienda punta sui giovani e vuole veramente “fare scuola” deve prevedere dei momenti in cui i ritmi di lavoro sono tali da poter riguardare criticamente quello che si è fatto e poter ipotizzare di migliorare quello che c’è (e va). Se la filosofia è “quello che va non si tocca” (a prescindere da come è fatto), allora meglio sapere che in quell’azienda di tecnico potrebbe non esserci così tanto.

→ 2 CommentiCategorie: Pensieri sparsi
Messo il tag: , , ,

Codice sorgente e shampoo: istruzioni per l’uso

Luglio 9, 2009 · Lascia un Commento

Era da un po’ di tempo che avevo in testa delle riflessioni su come scrivere il codice sorgente, ma non riuscivo a trovare il modo giusto di esprimerle. Fortunatamente mi ha salvato una doccia (è proprio vero che il bagno è il posto dove nascono le idee e le soluzioni migliori). Dovevo lavarmi i capelli con lo shampoo e quello che usavo di solito era finito così ho guardato se per caso ce ne fosse uno nuovo. Mi sono imbattuto in questo flacone:

shampoo_ko

shampoo_ko

Ci ho messo un po’ per capire cosa avevo davanti (shampoo? balsamo? bagnoschiuma?) ma alla fine l’ho scoperto:

dettaglio shampoo

dettaglio shampoo

Questo è quello che considero una matafora perfetta.

Provo a tradurla in codice sorgente, è come se una persona scrivesse un codice (una interfaccia volendo limitarsi al flacone e non al contenuto) bellissimo, elegante (notate il tappo sagomato e ondeggiante, i diversi colori dei pallini che sfumano, il logo anch’esso ondeggiante), ma che gli altri fanno molta fatica a capire che cos’è.

Lo scopo del flacone è quello di contenere lo shampoo, lo scopo di un’interfaccia è quello di far capire come usare il modulo che la implementa. Se abbiamo di fornte un’interfaccia bella ed incomprensibile qualcosa è andato storto; è molto meglio qualcosa di più semplice, ma adatto allo scopo. Per esempio:

shampoo_ok

shampoo ok

Qui non mi devo fermare a pensare cosa ho davanti, nemmeno sforzarmi di leggere delle scritte microscopiche con pochissimo contrasto fra il il testo e lo sfondo.

Conclusione: quando scriviamo del codice, il primo scopo è di renderlo leggibile non bello ed elegante. Credo che se  si rispetta questa regola il risultato sia comunque un buon grado eleganza, ma soprattutto tanto, tanto e tanto tempo risparmiato da parte di chi lo usa (e probabilmente ci vuole anche molto meno anche a scriverlo).

Lo so che scrivere codice elegante  e sofisticato è una sensazione veramente piacevole, una sorta di autogratificazione, ma non è niente se paragonato alla soddisfazione di ricevere i complimenti sinceri da un’altra persona.

→ Lascia un CommentoCategorie: Pensieri sparsi · sviluppo software

Lo stipendio del programmatore: piccolo addendum

Gennaio 14, 2009 · Lascia un Commento

L’altro giorno stavo riflettendo sul fatto che lo stipendio non è correlato alla effettiva produttività di un  programmatore, ovvero che a partità di errori risultanti chi produce codice a velocità doppia rispetto ad un altro non prende lo stipendio doppio, figurarsi cosa succede a chi produce codice a velocità n volte superiore.

Mi sono chiesto perchè?

Dopo qualche la secondo la risposta è stata: perchè sono un ingenuo.

Sono ingenuo perchè diversi manager che conosco riponderebbero: “lui/lei non dovrebbe prendere il doppio, sono gli altri che dovrebbero prendere la metà”.

Non hanno tutti i torti, infatti in nel mio ragionamento manca un sistema di riferimento vero.

Amen

Se si vuole guadagnare di più è necessario trovare altre strade.

P.S. Ma non sono così sicuro che guadagnare di più debba essere per forza il primo obiettivo, anzi in molti casi raggiunto un  livello medio di retribuzione gli obbettivi dovrebbero essere altri.

→ Lascia un CommentoCategorie: Pensieri sparsi · sviluppo software · vita in azienda
Messo il tag:

Lo stipendio dei programmatori

Novembre 30, 2008 · 14 Commenti

Oggi ho deciso di affrontare un tema “scottante” e di riflettere sulla qualità degli stipendi dei programmatori.

Ci sono una serie di fattori che rendono difficile stabilire una cifra valida per tutta Italia, come per esempio la domanda di personale qualificato; a Milano la vosta costa di più che in altre città e nello stesso tempo ci sono molte, molte aziende che hanno bisogno di personale. La conseguenza diretta è che lo stesso lavoro sarà meglio retribuito a Milano piuttosto che a Bologna.

Senza contare che la congiuntura economica (e quella attuale non è certo favorevole) può influire pesantemente sulle decisioni di investimento in personale.

Un’altro fattore che l’azienda valuta è la componente di “gestione” associata ad una posizione, si parte dall’autonomia individuale e si arriva fino alla gestione di un gruppo di lavoro; una persona che riceve specifiche da implementare e che “deve solo eseguire” verrà retribuita meno di una che coordina un gruppo di persone. Le aziende hanno bisogno di persone a cui affidare delle responsabilità, maggiore è la responsabilità, maggiore deve (e non dovrebbe) essere lo stipendio; indipendentemente da quello che si fa. La mia esperienza mostra che le aziende cercano il più possibile persone che a cui affidare in toto una serie di attività per ottenere indietro solo dei risultati, maggiori sono i risultati attesi, maggiore è lo stipendio.

La diretta conseguenza è che non importa se un programmatore è bravo a scrivere il codice in quanto non è su quel tipo di problemi che di solito ci si concentra. Il risultato, ovvero il codice funzionante è dato per scontato. La (triste) conseguenza è che, a meno di non riuscire ad introdurre in azienda una metrica sulla qualità del codice, lo stipendio del programmatore non potrà mai salire come quello di chi coordina le persone.

Considerando il mercato IT di Bologna oserei definire la cifra di 38.000 euro lordi l’anno come tetto massimo per chi svolge esclusivamente lavoro di programmazione. Non è una cifra malvagia, affatto, ma è necessario considerare che:

  1. Ci arrivano in pochi in quanto molte persone optano nel frattempo per un’altra carriera (PM, etc)
  2. Non tutte le aziende sono disposte a pagare un programmatore “puro” tale cifra
  3. Per raggiungere tale cifra di solito servono più di 7 anni di esperienza nella posizione

Questo è un vero peccato in quanto posso spesso toccare con mano la realtà descritta da tanti libri che afferma che le differenze di rendimento fra le persone possono variare da una a dieci volte. Se lo stipendio di un programmatore senior ha un tetto (dovuto al fatto che non si misura la sua produttività) la conseguenza è che prima o poi questo imbocca una carriera diversa. Se si vuole evitarlo è necessario pensare a come valutare ed incentivare il lavoro del programmatore; agormento che mi riprometto di trattare in futuro.

→ 14 CommentiCategorie: Pensieri sparsi · organizzazione aziendale · sviluppo software · vita in azienda

Il curriculum del programmatore

Novembre 13, 2008 · Lascia un Commento

In questi giorni mi sono trovato nel delicato ruolo di dover valutare una serie di curriculum di persone che hanno risposto ad un annuncio di lavoro pubblicato da Cup2000. Di seguito il testo integrale pubblicato sul sito:

Stiamo cercando un programmatore java laureato in materie scientifiche, con tre o più anni di esperienza in ambito J2EE. Il candidato dovrà aver maturato esperienza significativa nell’uso e nella configurazione dell’application server tomcat e nell’utilizzo di framework MVC. Verranno valutate positivamente precedenti esperienze nell’utilizzo di Spring, SpringMVC, iBatis, JUnit e TestNG. E’ gradita la conoscenza approfondita del database Oracle. Si richiede la capacita di lavorare in parziale autonomia seguendo obbiettivi precisi. Completano il profilo la capacita di lavorare in gruppo e la passione per lo sviluppo e la progettazione software.
Si offre un ambiente di lavoro stimolante in cui poter utilizzare i piu recenti standard tecnologici (Java 1.6, Spring 2.x, iBatis, Oracle 10).

Dalla lettura dei curriculum mi sono reso conto che il modo di scriverli tradizionale è decisamente poco utile allo scopo (mi sono reso conto che anche il mio è carente). I numeri del mio caso sono 16 curriculum per un posto; questo implica devo fare una selezione anche delle persone a cui fare il colloquio (considerato che un colloquio dura un’ora non ho materialmente due giornate lavorative da dedicare ai colloqui). Sulla base di cosa faccio la prima selezione? Su quello che ho: il curriculum.

Quindi quello che leggo mi deve convincere a chiamare la persona, quali sono i fattori che mi spingono a farlo?

La risposta e’ semplice: cerco di capire se il curriculum descrive una persona che rispecchia le richieste dell’annuncio. Se tutti i curriculum sono piatti il compito è difficile in quanto sono io che devo cercare le informazioni e se queste non sono chiare cercare di dedurre. Qual’è il modo migliore per attirare l’attenzione di chi legge? Condensare nelle prime 5/10 righe le informazioni essenziali che consentano una valutazione esatta delle capacità della persona. La traduzione pratica è molto semplice, una lettera di presentazione che spiega perchè la persona si ritiene adatta per quella posizione. Nei curriculum che ho letto non ce ne era una adaguata. La cosa che ho imparato è che quando si pubblica un annuncio di lavoro ci sono tante persone che rispondono, per cui la concorrenza è forte, è necessario potersi assicurare di superare la fase di scrematura del curriculum per poter arrivare ad un colloquio e per fare questo è necessario attirare l’attenzione di chi legge. il modo migliore per farlo è fargli leggere quello che si aspetta. Questo significa che ogni invio di curriculum richiede come minimo una lettera di presentazione personalizzata (chi legge dall’altra parte di solito riconosce al volo le frasi fatte o di circostanza quindi la lettera va tarata ogni volta), se questa contiene gli elementi cercati il curriculum serve solo come riscontro. Per ottenere il massimo è necessario adattare il curriculum alla posizione cercata evidenziando le parti di interesse per chi legge.

Un altra cosa che è importantissima è la “sincerità” del curriculum, ovvero è fondamentale scrivere solo cose “vere”. Ricordo ancora un colloquio avvenuto circa un anno fa con una persona che sembrava (dal curriculum) molto esperta in tantissimi campi e che invece alle prime domande tecniche ha ammesso una conoscenza solo scolastica. Tempo perso per me e per la persona che però si è preclusa la possiblità di un ripescamento in futuro. Quando l’annnuncio di lavoro è dettagliato (è citata anche la versione di Spring, di Java e di Oracle) significa che chi l’ha scritto conosce la materia e su quella si aspetta dei riscontri. Questo vale per tutte le parti del curriculum.

Un altro aspetto sono i requisiti, può anche essere accettabile non avere tutti i requisiti, ma è necessario capire su quali si può “glissare”. Esempio: tre o più anni di esperienza in ambito J2EE. Se uno ne ha due in java ed un uno in .net nella lettera di presentazione scrive che invia il curriculum in quanto considera un anno di esperienza in .net equivalente ad uno java (se ne ha tre solo in .net forse dovrebbe rispondere ad un altro annuncio o scriver euna lttere di presentazione veramente convincente).

Se non si possiedono i requisiti (es nessuna eperienza lavorativa rilevante) la cosa migliore è inviare un curriculum a parte, non per quella posizione di lavoro, indicando che non si possiedono i requisiti dell’annuncio, ma che si è interessati a lavorare per quell’azienda (scrivendo bene il perchè) e quindi si invia il proprio curriculum per una posizione diversa.

Concludo con due esempi di lettere di presentazione, la prima per l’annuncio in questione e la seconda per una posizione generica:

Buongiorno,

ho letto il vostro annuncio su XXXX per la posizione di programmatore Java senior e vi invio il mio curriculum in quanto credo di avere i requisiti adeguati. Sviluppo in Java J2EE da ormai Z anni e ho maturato una esperienza significativa (attraverso la conduzione dei progetti R,T,Y che trovate descritti nel curriculum)  nello sviluppo di applicazioni basate su framework MVC e Tomcat. Inoltre in diversi progetti ho utilizzato il database Oracle. Sono in grado, una volta stabili gli obbiettivi di progetto, di lavorare con la necessaria autonomia, garantendo sempre la visibilità dell’andamento del progetto assegnatomi.

Distinti saluti,

il secondo

Buongiorno,

ho letto il vostro annuncio su XXXX per la posizione di programmatore Java senior. Non possiedo i requisiti elencati nell’annuncio, ma le tecnologie elencate sono quelle che utilizzo attualmente e su cui sto maturando una solida esperienza. Mi piacerebbe fare parte della vostra Azienda in quanto l’annuncio evidenzia una “vocazione” tecnologica in linea con la mia. Vi invio il mio curriculum per una eventuale posizione di programmatore Junior che dovessere rendersi disponibile in futuro.

Distinti saluti,

Per quel che ne capisco io (ma sono un tecnico) solo delle aziende poco furbe butterebbero via dei curriculum che rispondono a delle lettere di presentazione così scritte. Aziende per le quali  un “programmatore dentro” non dovrebbe lavorare.

→ Lascia un CommentoCategorie: Pensieri sparsi · organizzazione aziendale · sviluppo software · vita in azienda

La fine anno e gli incentivi

Ottobre 15, 2008 · Lascia un Commento

Dopo aver letto l’ultimo articolo di Joel Spolsky sulle commissioni ovvero sugli incentivi a vendere ed in generale a raggiungere gli obbiettivi aziendali mi sono reso conto (oltre al fatto che Joel è quasi sempre tre passi avanti) che questo meccanismo è perverso e che andrebbe rivisto o quantomeno controllato. Cosa ci azzecca la fine anno? e’ tempo di budget, quel periodo in cui si concretizza la scadenza annuale e in cui si può parlare di medio evo ovvero di un tempo di regressione. Il messaggio è: se non si fa il budget sono problemi, per cui si rilassano tantissimi vincoli e si cerca in tanti modi di raggiungere l’obiettivo economico. Peccato che la maggior parte delle persone cominci a vedere solo l’obbiettivo economico e se ne freghi delle conseguenze arrecate ai colleghi. In una azienda di software chi sono i più bombardati?

La risposta è facile: quelli che producono il software, ovvero i tecnici.

A loro viene chiesto di fare in tre o quattro mesi quello che hanno fatto in otto (come se prima ci fossimo grattati i cabasisi) e comincia la fiera dell’improduttività causata dal fatto che i PM&C devono fare le famose riunioni di allineamento, ovvero incontri volti a produrre un piano di azione e delle scadenze (sempre per i tecnici).

Perchè scrivo questo? perchè penso che si possa evitare o almeno limitare il clima veramente difficile da gestire.

Soluzione numero 1: dividere l’anno in due e quello che si manca a fine giugno è recuperabile solo in minima parte a dicembre.

Soluzione numero 2: legare gli obbiettivi non solo al budget economico, ma anche ad una valutazione  da parte della struttura produttiva che soffre di queste condizioni.

Sono convinto che questi due punti possano da soli far evolvere la situazione verso il meglio; conosco le possibili obiezioni specialmente riguardo al primo punto: è impossibile sono i clienti/committenti che non ci consentono di spezzare l’anno in due.

Posso non crederci? Posso ipotizzare che i clienti si comportano così perchè noi li abbiamo abituati/assecondati a fare così?

Posso ritenere che se un PM o chi per lui si presenta con una cosa da fare all’ultimo minuto e sa che riceverà per quello un guidizio che influisce negativamente sul suo premio di produzione pianifica meglio l’attività?

Se i tecnici non possono dire che una cosa è impossibile perchè possono dirlo gli altri?

Concludo con una delle osservazioni riportate nell’articolo che ho citato; quando si stabiliscono delle commissioni o degli incentivi bisogna sempre tenere presente che le persone faranno tutto il possibile e alla fine troveranno degli stratagemmi per riuscirci; strategemmi è diverso da soluzioni.

→ Lascia un CommentoCategorie: Pensieri sparsi · organizzazione aziendale · sviluppo software · vita in azienda

L’open source e le sue possibili implicazioni il caso Spring

Ottobre 8, 2008 · Lascia un Commento

Adesso che le acque si sono calmate e che la vicenda è finita bene vorrei provare a fare qualche riflessione sull’argomento. Parto dai fatti. In ambiente Java lo Spring-framework si è affermato come uno standard importante per lo sviluppo. Spring è rilasciato con licenza Apache che è, insieme a quelle BSD, una delle più permissive, ovvero con il codice ed il jar relativo ci puoi fare quello che vuoi. Spring è sviluppato da una azienda Spring Source che dalle attività di supporto, consulenza e sviluppo closed trova il suo sostentamento.

Fino a un mese fa venivano rilasciati i jar delle versioni con un ciclo di vita classico, rilascio delle major release (es 2.5) a cui seguivano le versioni con bug fix (2.5.1, 2.5.2, etc). Ed ecco che arriva l’annuncio, Spring Source cambia politica e dice che i sorgenti saranno rilasciati sempre cona la stessa licenza e sempre con su subversion, ma ci saranno solo i jar delle major release e delle minor release che verranno rilasciate entro tre mesi dalla data di rilscio delle mino release. Dopo i tre mesi ognuno fa da se’ se vuole i jar in quanto sul subversion pubblico non ci sono ne tag ne branch quindi nessuna informazione per creare delle minor release comuni. Se si vogliono i jar delle minor release successive si deve sottoscrivere un contratto di supporto.

Credo che si tratti di un caso da manuale. Il sorgente rimane disponibile a tutti, puoi compilarlo, ma in realtà la libertà è solo apparente. Se dopo i tre mesi trovo un bug cosa faccio? Consulto la lista dei bug e se questo è stato corretto scarico i sorgenti e li compilo. Benissimo a questo punto che versione sto usando? boh. Come faccio a chiede supporto sui forum della comunità se in pochi ho nessuno usa la mia versione? E’ facile intuire che se si vogliono creare delle applicazioni da metter ein produzione su cui garantire un supporto non si può procedere “liberi e belli” a meno di avere delle persone dedicate ai problemi Spring. Per cui ritengo che tale policy costringa di fatto a comprare il supporto da Spring Source. E’ il classico caso in cui del sorgente te ne fai veramente poco, quello che conta è che hai un prodotto di qualità, gratis e con un supporto da parte della comunità. E’ questo che dal punto di vista dell’utilizzatore conta, la libreria ed il supporto (per il management conta molto anche il fatto che è gratis); il sorgente spesso è uno specchietto per le allodole; un’altra cosa che conta è che la licenza consenta di vendere l’applicazione a sorgente chiuso (cosa che per esempio la licenza GPL non ammette).

Per fortuna le proteste della comunità hanno indotto Spring Source ad un cambio di rotta che ha portato al rilascio dei jar delle minor release fino alla versione RC della successiva major relase. Il problema si è notevolmente ridimensionato, a patto di essere sempre sulla cresta dell’onda ovvero di adottare l’ultima versione. Chi non se lo può permettere paga e tutto sommato è giusto così.

Vorrei concludere con una riflessione sui prodotti open source; l’analisi di una serie di casi mostra come storicamente tutti i prodotti che hanno dietro di sè una azienda che ne controlla lo sviluppo seguono un ciclo in cui la versione free (nel senso di free beer) subisce delle limitazioni del tempo; basti guardare Spring, MySQL, extJS e se ricordo bene anche le librerie QT. Il motivo è quasi sempre il profitto. Nel caso di prodotti open che sono sviluppati dalla comunità (Tomcat o Postgresql per esempio) questo non può succedere in quanto c’è una comunità di individui che spesso ricava profitto da altre fonti o in maniera indiretta. Lo svantaggio è che non ci sono persone dedicate allo sviluppo quindi le release possono essere diluite (anche se OpenBSD dimostra esattamente il contrario).

La scelta di un prodotto open source deve essere quindi effettuata facendo anche valutazioni di questo tipo in quanto i cambiamenti in corsa sono spesso sgradevoli e costringono ad un esborso economico improvviso oltre che ad una perdita di fiducia nel prodotto che si sta usando.

→ Lascia un CommentoCategorie: java · sviluppo software · vita in azienda
Messo il tag: , , ,