mercoledì 30 novembre 2011

Come assumere una persona DevOps

Prima le cose. Questo non vuole essere un manzo contro sviluppatori. Ma cerchiamo di non ignorare l'elefante in salotto che è il divario tra scrittori codice brillante e il rischio squadra avversa operazioni.
E 'quasi di default che gli sviluppatori sono dirompenti con la loro codifica creativo, mentre i ragazzi in attività, coloro che distribuire il codice, sempre incrociare le dita nella speranza che i cambiamenti applicazione non inclinare la macchina. E quando si è svegliato alle 4 del mattino per affrontare un'interruzione o il vostro sito lento sta costando milioni di perdite, il gioco di colpa e inizia a puntare il dito.
xkcd_goodcode
Striscia di Randall Munroe; xkcd.com
Se si gestisce una startup si può essere di fronte a questo problema per tutto il tempo. Tu conosci il tuo business, si sa cosa si sta cercando di costruire, ma come si fa a trovare persone che possono aiutarvi a costruire e realizzare le vostre idee con il minimo rischio?
Idealmente, si desidera che le persone che possono colmare il divario tra la mentalità dei programmatori desiderosi di vedere caratteristica cambia, le unità di business spingendo per loro, e il team operativo resistente ai cambiamenti per il bene della stabilità.

DevOps - Perché non possiamo vivere tutti insieme?

Il movimento DevOps è un tentativo di portare tutte queste persone insieme. Ad esempio fornendo informazioni agli sviluppatori circa le implicazioni del loro lavoro su prestazioni e disponibilità, è possibile un migliore equilibrio l'assalto di richieste funzionalità da parte degli utenti con la necessità del business 'di up-tempo.
Team operativi possono lavorare per esporre i dati operativi per il team di sviluppo. Raccolta e analisi delle metriche non sono solo per le unità di business più. Utilizzando strumenti come Cactus, OpenNMS o gangli consentono di comunicare con gli sviluppatori e business unit altre simili su up-tempo, e l'impatto delle implementazioni sulla disponibilità dei siti, e in ultima analisi, la linea di fondo.
Soprattutto, gli obiettivi di business e le esigenze dei clienti deve sottolineare tutto quello che il team di ingegneri sta facendo. Portare tutti e tre al tavolo fa per un approccio più coerente che porterà tutti in avanti.

Come individuare una persona DevOps - Trovare il punto debole

La persona DevOps è qualcuno con la giusta combinazione di abilità, conoscenza ed esperienza che mette lui o lei nel luogo privilegiato in cui garanzia di qualità, capacità di programmazione e le operazioni si sovrappongono. 
Ci sono anche alcune caratteristiche distintive che consente di identificare quali un candidato ideale.
Cercare buoni scrittori e comunicatori
Immaginate le gocce di sudore che formano quando uno sviluppatore ti dice: "Abbiamo fatto le modifiche. Nulla è ancora rotto. " 
Questo è come entrare sul vetro perché implica qualcosa di effettivamente break. Il punto è che gli sviluppatori esperti devono essere consapevoli che la maggioranza delle persone non pensano sulla stessa linea come loro. 
Assumendo che il candidato ha tutte le competenze tecniche richieste, un programmatore con capacità di scrittura tende ad essere migliore di articolare idee e metodi in modo coerente. Lui o lei sarebbe anche meno resistente alla documentazione e poter fare un passo indietro un po 'dal-Itty Bitty dettagli. Comunicazione, dopotutto è al centro della cultura DevOps dove diversi lati tentativo di comprendere l'altro.
Raccogliere buoni ascoltatori
Ancora più raro che gli scrittori buoni sono buoni ascoltatori. Essere in grado di ascoltare ciò che qualcun altro sta dicendo, e ribadiscono che nei loro propri termini di qualità è una chiave importante. Nel nostro esempio, il buon ascoltatore sarebbe probabilmente tradotto 'rotto nulla è ancora' in "l'applicazione è in esecuzione senza problemi. Non abbiamo incontrato alcuna interruzione ma continueremo a guardare alle cose. "
Propendere pragmatici ed evitare i fanatici
Noi tutti vogliamo persone che sono appassionati di qualcosa, ma quando la passione che si trasforma in fanatismo può essere sgradevole. Il fanatismo suggerisce una minore propensione al compromesso. Tali caratteri sono molto difficili da negoziare. Analogamente a tech, vediamo persone attaccarsi a un certo standard con cieca fedeltà che è sorprendentemente irrazionali. Qualcuno che ha avuto la mano in molte diverse tecnologie è più probabile che sia agnostico tecnologia, o meglio, pragmatico. Potranno, inoltre, una prospettiva più ampia, e sono in grado di anticipare come queste tecnologie giocheranno insieme. Inoltre un buon senso di cui le cose si svolgerà senza intoppi e dove ci sarà l'attrito è di vitale importanza.
Prestare attenzione alle attività extra-curriculari
Guardare gli interessi della tecnologia, le aree di studio, o anche interessi esterni. La persona hanno diversi interessi e possono conversare su argomenti diversi? Non raccontano storie, e fare analogie con altre discipline per fare un punto?Hanno comunicare in gergo senza lingua che si possa capire?
Fiutare gli affamati di successo
Come per ogni ruolo, trovare qualcuno che è appassionato e guidato è importante. Sono on-tempo per gli appuntamenti? Hanno mail le informazioni richieste? Sono preparati e comunicativi? Sono impaziente di iniziare?
Assunzione di solito si concentra sulle competenze e curricula molto ben congegnata, ma perché si trovano ancora alcuni duds di tanto in tanto? Sottolineando la personalità, etica del lavoro, e la capacità di lavorare con gli altri, è possibile vagliare il diluvio dei candidati e separare il grano dal loglio per le qualità che sicuramente servire meglio la vostra attività nel lungo periodo. Fonte:  http:// www.iheavy.com/2011/11/25/how-to-hire-a-developer-that-doesnt-suck/

lunedì 28 novembre 2011

Calcolo numerico con F #

F # sta emergendo come una grande scelta per il calcolo numerico. Ragioni? Funzionale di design, librerie come PowerPack, MathProvider e Math.NET e l'interoperabilità dei. NET Framework.
F # PowerPack è una collezione di librerie e strumenti per F # fornito da Microsoft. Porta altri tipi, lexer e strumenti di generazione parser, generatore documento, miglioramenti alle capacità Async e parallela e molto altro ancora.  Tomas Petricek ha scritto una serie di articoli su tipi numerici forniti da PowerPack -
  • Introduzione ai tipi numerici
  • Lavorare con le matrici in F #
  • Definire e utilizzare gli numerici personalizzati in F #
  • Generico codice numerico in F #
C'è anche una serie di campioni e tutorial su MSDN sullo stesso argomento.
Altre librerie che sono utili per affrontare Numerics in F # -
  • MathProvider  porta algebra lineare di F #, fornendo un wrapper per nativo BLAS e LAPACK runtime. 
  • Math.NET Numerics fornisce metodi e algoritmi per vari calcoli scientifici e ingegneristici numerici, ad esempio funzioni speciali, modelli probabilistici, trasformate integrali, ecc MSDN ha una guida su come utilizzare numerici Math.NET in F #.
F # è spesso confrontato con altri linguaggi di calcolo numerico come R e MATLAB . Tuttavia, applicazioni. NET possono chiamare sia MATLAB e R e questo permette F # da utilizzare oltre alle lingue speciali per ottenere il meglio dei due mondi.

Relativi fornitori dei contenuti

vFabric: in-memory database SQL
Kanban per le squadre Agile
Pratiche Agile Project Management per migliorare Organization (PMO) Efficacia
"Ci sono ristretti i Cloud" - Introduzione Micro Nuvola Fonderia per gli sviluppatori
Maturity Model agile applicata alla costruzione e rilascio del software


  1. Per uso non commerciale applicazioni, è possibile utilizzare anche Sho (sviluppato da Microsoft Research) Sho include librerie Intel MKL (che MATLAB usa anche) per l'algebra lineare ad altissime prestazioni. Sho include anche pacchetti per le statistiche ed elaborazione dei segnali.Risolutore Fondazione (anche da MSR) consente risolutori chiave lineari, non lineari e vincoli di programmazione. La libera versione "Express" è limitato per i modelli lineari e quadratiche, ma è libero di modelli non lineari. Routine ambita come L-BFGS sono disponibili in supporto, forma di produzione di qualità. Per la visualizzazione dei dati, Sho e FSharpChart fornire wrapper conveniente oltre DataVisualization netto.. Un punto importante è che F # è veramente bravo a integrazione dei dati e la manipolazione, spesso, il grande lavoro è in elaborazione dei dati per alimentare in librerie di calcolo numerico (che sono per lo più liberamente disponibile). Un vantaggio di usare F # sopra dicono R o MATLAB è che si può più facilmente incorporare il prodotto finale in una normale. NET. F # modalità interattiva - pur non così facile da usare come MATLAB - è abbastanza decente per sviluppare in modo interattivo la soluzione di un problema numerico. 

mercoledì 23 novembre 2011

La resistenza contro specifiche dei requisiti


Le prove sono sempre sarà incompleta, in modo che devono sempre essere sostenuta con altri meccanismi. Essendo la mente contorta che io sono, io in realtà vedere questo come un plus.Poiché è chiaro che Specification Per esempio non è sufficiente, è chiaro che è necessario fare di più per assicurare che tutto sia correttamente comunicati. Una delle cose più pericolose di una specifica tradizione requisiti è quando la gente pensa che una volta che hanno scritto sono fatti comunicare.
Quindi credo che è tempo di scavare la mia vecchi post  sulla documentazione . Ecco alcune cose da ricordare:
  1. Documentare il comportamento del software comporta sforzo e non è libero. Come per le altre attività nello sviluppo di software, è necessario segnare il tempo per farlo. Altrimenti non sarà possibile ottenere fatto.
  2. Se si alloca questa attività a qualcuno che è già assegnato altri compiti (codifica, test, ecc), è probabile che essi lo considerano una priorità inferiore rispetto ai loro altri compiti, a meno che specificamente chiede loro di non fare i loro compiti regolari e solo il lavoro il compito di documentazione.
  3. Ma quando lo fate, quelle persone ancora pensano di non stanno ottenendo "lavoro" fatto. Non vi è alcun output visibile a parte un file di documentazione, e c'è meno progressi in materia di funzionalità rilasciata ai clienti, anche se ci può essere migliore qualità.
  4. Aiuta ad assegnare una persona dedicata al lavoro sui requisiti, in modo che i programmatori e tester può tornare a fare quello che stanno meglio al. Uno scrittore tecnico o di un business analyst può fare un lavoro più veloce e di qualità superiore.
  5. Purtroppo, questo fa lievitare il costo dello sviluppo software e potrebbe non funzionare per tutti.
L'ultimo punto è una cosa che ho trovato alcune persone non vogliono accettare. E 'meglio scrivere entrambe le specifiche buoni E scrivere buoni test, perché coprirà la maggior parte le lacune nella comprensione dei requisiti. Si potrebbe scrivere le specifiche in diversi formati per rivolgersi ad un pubblico diverso (ad esempio più grafico per i clienti e più strutturato per il tuo programmatori). Si potrebbe scrivere manuale casi di test di accettazione, di unit test automatizzati, test delle prestazioni e così via. Sono tutti utili ai margini.
Ma tutto ciò costa tempo, denaro e fatica. Se non può permetterselo, che è bene. Voi oi vostri clienti possono vivere con qualità un po 'meno. Nelle piccole squadre, questa è la realtà. Ad esempio, un piccolo team di 2 sviluppatori non avranno il tempo (e denaro) per testare a fondo ogni aspetto della loro applicazione web su tutti i browser possibili (e versioni diverse) su diversi sistemi operativi e hardware. Ma bisogna accettare il fatto che quando lo fa, arriva il rischio di errori sul campo. Alcune persone trovano questo troppo reale da gestire. Al contrario, vogliono avere (mantenere?) La botte piena e la moglie ubriaca. Vogliono liberarsi di qualcosa senza accettare che ci sia un costo per farlo.
In generale, nello sviluppo di software, software di qualità più soldi a disposizione e spesi saggiamente su persone, strumenti, infrastrutture e processi = maggiore consegnato ad un ritmo più veloce. La gente non è sempre saggio con i soldi e si può guadagnare un po 'l'efficienza con intelligenza, duro lavoro, perseveranza, e la disciplina, ma non oltre un punto. Se qualche società di software è abbastanza intelligente cento volte i soldi che hai, ci sono molte probabilità che si sta per perdere.