Programming

Qui di seguito riporto alcuni dei servizi di sviluppo software che posso fornire ed i relativi prezzi.

Tenete presente che chiedere l’intervento di un consulente esterno per lo sviluppo di un’applicazione software normalmente è una buona idea SOLO se l’applicazione software è piuttosto PICCOLA e se può essere SEPARATA completamente e chiaramente dal resto del vostro ecosistema software. Diversamente il lavoro di sviluppo software diventa subito troppo complicato, troppo imprevedibile e, sopratttutto, troppo costoso. In caso di dubbi, contattatemi e parliamone (senza impegno, ovviamente).

Tenete anche presente che, in questo momento, sembra che siano disponibili sul mercato circa 800.000.000 (ottocento milioni) di applicazioni (che girano su una trentina di piattaforme diverse) per cui è veramente difficile che non ci sia anche l’applicazione che vi serve. Prima di chiedere lo sviluppo di un’applicazione ad hoc, provate a verificare se non esista già qualcosa in grado di soddisfare le vostre esigenze. Se non sapete farlo (o non ne avete il tempo), contattatemi e parliamone.

Analisi preliminare

Prima di accettare un incarico, devo capire cosa devo sviluppare per voi. Se il mio codice dovrà interagire con altre applicazioni, sviluppate da altri, devo anche capire come deve avvenire questa interazione. Questo vuol dire che dovrò parlare con voi, con i vostri collaboratori e, con ogni probabilità, dovrò vedere il software che già utilizzate. Questo lavoro di analisi preliminare viene svolto gratuitamente ed al termine di questa fase vi viene presentato un preventivo in cui è spiegato cosa posso fare per voi, in che modo, in quali tempi e, soprattutto, con quali costi.

Durante questa fase preliminare verifico anche che non esista già sul mercato un’applicazione che può svolgere il lavoro che vi interessa. Se trovo un’applicazione che possa soddisfare le vostre esigenze, vi propongo di usare quella invece di svilupparne una nuova. In questo caso, vi dico anche se sono necessari adattamenti, modifiche, installer specializzati o altro, vi dico se posso farmi carico di questi aspetti ed a quali condizioni.

Stesura del progetto

NON sono disposto a lavorare senza un progetto chiaramente definito e condiviso a cui fare riferimento. Di conseguenza, si presentano due possibilità: o fornite voi il progetto ed io mi limito a scrivere il codice (cioè lavoro come semplice “coder”) oppure il progetto lo metto giù io, sulla base delle vostre richieste (e quindi lavoro come “software engineer” a tutto tondo). A voi la scelta.

In ogni caso, sappiate che NON accetto di lavorare su progetti troppo vaghi e, soprattutto, non accetto di lavorare su progetti che non prevedano dei criteri booleani (si/no) di collaudo dei componenti e delle applicazioni. Detto in altri termini, il progetto deve contenere delle batterie (“suite”) di test software che permettano di stabilire se una certa funzionalità è stata implementata nel modo desiderato e se funziona correttamente, in modo che io possa sapere quando ho finito di lavorare ad un certo elemento e possa emettere la relativa fattura.

La stesura del progetto software costa 50 €/Ora + tasse + eventuali spese. Prima di mettere mano ad un progetto, vi faccio avere un preventivo di spesa (ed una valutazione dei tempi di consegna).

Nel caso ve lo steste domandando: no, non seguo un approcio “agile” (“agile development” o “extreme programming”). Non in questi casi, almeno. Quando sviluppo software su commissione seguo un approcio “waterfall” tradizionale (progetto-sviluppo-release). Questo perchè devo poter gestire in modo chiaro i preventivi e le fatture.

Sviluppo software

Lo sviluppo software avviene presso il mio laboratorio. NON sono disponibile a lavorare dal vostro ufficio.

Lo sviluppo software costa 35 €/Ora + le tasse e le eventuali spese (di solito non ci sono spese).

Lo sviluppo software avviene per fasi successive (le famose “release”), ognuna delle quali è definita da un progetto che si basa sul precedente. Ogni fase si ritiene conclusa quando il software passa tutti i test di collaudo che erano stati concordati per quella fase. A quel punto viene emessa fattura. Il pagamento è a 30 giorni, con bonifico bancario.

Collaudo ed utilizzo

Una volta consegnato il software e dimostrato che funziona sulla base dei test che sono stati concordati in fase di progetto, considero il lavoro terminato ed emetto fattura. Se voi od i vostri tecnici non riuscite ad utilizzarlo, o non volete utilizzarlo per ragioni vostre, a me non interessa. Il lavoro è stato svolto, ho fatto della fatica, ho perso del tempo e quindi voglio essere pagato.

Ovviamente, sono a vostra disposizione per fornire tutte le spiegazioni necessarie per il corretto funzionamento del software da me sviluppato e per correggere tutti gli errori che ne impediscano il corretto funzionamento. Ricordatevi che il software viene fornito completo di documentazione (sia lato sviluppatori che lato utenti) e con un anno di garanzia sulla correzione degli errori.

Manutenzione software

Chiariamo subito un punto: faccio manutenzione solo al software che io stesso ho sviluppato. Non sono disponibile a farmi carico della manutenzione di software scritto da altri, nemmeno se si tratta di un “banalissimo” sistema di gestione del magazzino scritto in Basic.

Quando consegno un programma, nel prezzo pattuito è inclusa la manutenzione per il primo anno. Con il termine “manutenzione” si intendono quei PICCOLI interventi che si rendono necessari per garantire il corretto funzionamento dell’applicazione e per renderla utilizzabile dagli utenti. NON si intende l’aggiunta di intere nuove funzionalità o la correzione di bug insignificanti. Come avrete sicuramente imparato usando il software prodotto dalle grandi software house (Microsoft in testa…), è del tutto normale che un’applicazione che si trova alla sua Release 1.0 presenti dei difetti, anche fastidiosi, e che non disponga di determinate funzionalità, anche preziose. È per questo che vengono sviluppate le Release 2.0, 3.0 e via dicendo.

In ogni caso, potete richiedere degli interventi di manutenzione aggiuntivi ed arbitrari sul software da me realizzato pagando il normale costo di sviluppo software: 35 €/Ora + le tasse. Prima di mettere mano al codice, sarà mia premura farvi sapere quanto tempo penso di impiegare e quindi farvi avere un preventivo di spesa indicativo.

Linguaggi e piattaforme su cui posso operare

In genere, posso intervenire su progetti che vengono sviluppati con le seguenti tecnologie.

Linguaggi:

C e C++

C#, Java e Scala

Python

Ruby

HTML, Javascript e CSS (cioè il famoso “Ajax” e/o DHTML)

Piattaforme:

Normalmente lavoro su Linux ed altri Unix ma, in alcuni (rari) casi, sono disposto ad accettare contratti per sviluppare software che “gira” su Microsoft Windows ed Apple Mac OS X.

Per quello che riguarda il mobile, sono in grado di sviluppare applicazioni su Android (in Java su Dalvik). Se avete bisogno di applicazioni che girino anche su altre piattaforme, possiamo valutare la possibilità di usare un framework di sviluppo cross-platform come PhoneGap o Appceleretor Titanium.

Svariate piattaforme di sviluppo web, tra cui:

Ruby on Rails e Sinatra (Ruby)

Django e Pylons (Python)

Wicket (Java)

Varie librerie GUI, tra cui:

Qt (la libreria C++ usata su Symbian e su KDE)

GTK (la libreria C usata da Gnome)

Se il vostro software deve essere sviluppato, per un motivo o per l’altro, con altri linguaggi, con altre librerie e magari su altre piattaforme, possiamo valutare ugualmente la possibilità di un mio intervento ma, ovviamente, i costi ed i tempi di intervento rischiano di essere proibitivi.

Piattaforma di sviluppo

Come ho già detto, lavoro da solo (e da casa mia) per cui preparo io la piattaforma di sviluppo software (IDE, server di Versioning, server per il Bug Tracking, eventuale server di Continuous Integration, etc.). Durante lo sviluppo vi verranno fornite le utenze necessarie per accedere in sola lettura od in lettura/scrittura ai vari server.

Installer

Il mio mestiere consiste nello scrivere del codice (compilabile) e funzionante e nel mettervelo a disposizione come tale (cioè come sorgenti, usabili direttamente o compilabili). Pacchettizzare, distribuire (e/o vendere) il software è il VOSTRO mestiere. Di conseguenza, la creazione dei “package” (.DEB o .RPM per Linux, .PKG per Apple Mac OS X, .MSI per Microsoft Windows, .APK per Android, etc.) è a VOSTRO carico.

Se richiesto, posso farmi carico della produzione dei soli package .DEB per Linux. Lo sviluppo di questi package costa 1000 € + le tasse per package (a forfait).

Documentazione

La documentazione interna dei sorgenti (i cosiddetti “commenti”) viene fornita in lingua inglese (NON in italiano. Se non ne capite il motivo, per favore non mettetevi a produrre software) e, fin dove possibile, viene associata ad un sistema di generazione automatica della documentazione in formato HTML (come JavaDoc o DoxyGen, per capirci).

La documentazione utente (lo “user’s manual”) viene fornita in italiano od in inglese (a vostra scelta) come serie di documenti ODF (LibreOffice). Se vi serve la documentazione in due lingue (inglese E italiano), c’è un costo fisso aggiuntivo di 1000 € + le tasse, a forfait.

Bug Tracking

Tutte le richieste di correzione errori (bug fix) e di nuove funzionalità (feature request) devono obbligatoriamente passare dal server di bug tracking che vi metto a disposizione (Mantis, Bugzilla o cose simili). Per contratto, cancello immediatamente ogni richiesta di questo tipo che mi viene inoltrata per posta elettronica, per SMS o per piccione viaggiatore. Pago anche un ipnotizzatore che mi aiuta a dimenticare immediatamente ogni richiesta di bug fix o di nuove feature che mi viene inoltrata verbalmente, al telefono o di persona.

Leave a Reply

Your email address will not be published. Required fields are marked *