Sviluppo di applicazioni web | Ing. Eugenio Bonifacio
Tags: applicazioni sms, applicazioni web, cataloghi elettronici, commercio elettronico, consulenza agenzie web, consulenza opensource, consulenza oscommerce, consulenza Drupal, consulenza Wordpress, consulenza Zend Framework, e-commerce, portali web, sistemi di prenotazione, sistemi informativi, siti web comiso, siti web ragusa, siti web sicilia, software personalizzati, sviluppo firmware, programmatore php freelance, sviluppatore zend framework, sviluppatore doctrine, programmatore zend framework, programmatore doctrine, sviluppatore cakephp

Sviluppo di applicazioni web

Il mio cliente tipo è l'agenzia web, generalmente più votata alla cura dell'immagine che allo sviluppo di applicazioni informatiche, la quale trovandosi in difficoltà davanti alle richieste dei propri clienti riguardo l'implementazione di funzionalità avanzate sul proprio sito web, cerca di soddisfarlo rivolgendosi esternamente.

Naturalmente il mio lavoro è fondato sulla professionalità e la correttezza. Capita spesso che l'agenzia, per limiti tecnici, mi metta in contatto diretto con il suo cliente, in qualità di loro collaboratore. Il mio obiettivo è quello di soddisfare il mio cliente, il quale generalmente mi affida diversi incarichi nel corso dell'anno, non di soffiargli i suoi, in questi casi la massima serietà è cosa naturale.

Collaboro attivamente e con soddisfazione con diverse agenzie web sparse sul territorio nazionale, anche di un certo rilievo. Generalmente mi occupo di adattare applicazioni opensource ad esigenze specifiche, integrarli con altri software, modificare alcune funzionalità oppure sviluppare dei software specifici da zero. Col tempo ho anche sviluppato alcune contributions, pubblicate con licenza opensource, alcune molto apprezzate della comunità web.

Sono specializzato nelle applicazioni di commercio elettronico. Ho cominciato modificando osCommerce per adattarlo alle esigenze di alcuni clienti. Adesso lo conosco in ogni singola riga, tanto da riuscire a sviluppare praticamente qualsiasi integrazione o variazione. Ho anche sviluppato delle varianti piuttosto complesse. La cosa più importante è però a mio avviso, l'esperienza che osCommerce mi ha consentito di accumulare in questi anni, come ad esempio la creazione di interfacce ai sistemi di pagamento più diffusi o l'integrazione con software di terze parti. Naturalmente la conoscenza della logica di un software di commercio elettronico mi ha spinto anche a creare soluzioni personalizzate da zero.

Mi occupo di internazionalizzazione, ossia fornire al cliente tutti gli strumenti per poter gestire contenuti multilingua e/o multivaluta. In questo modo è possibile aprire le frontiere del proprio business a tutto il mondo. Di recente ho registrato un consistente numero di richieste per la gestione di contenuti in lingue mediorientali, come l'arabo, per il crescente interesse delle aziende italiane verso questi nuovi orizzonti commerciali.

Lavoro anche direttamente, acquisendo clienti finali. In questo caso il lavoro è più impegnativo perchè necessita dialogare col cliente per tirarne fuori delle specifiche di progetto e anche perchè devo mettere mano all'aspetto grafico dei lavori, cosa che faccio con piacere.

Ambiente di sviluppo

Per quanto riguarda l'ambiente e gli strumenti di sviluppo ho scelto di utilizzare PHP (ormai quasi esclusivamente PHP5), esponendomi al rischio della critica. PHP infatti è generalmente considerato, anche da me a dir la verità, un linguaggio poco informatico, nel senso che non ci sono regole ferree ma ognuno ci può fare quello che vuole. Da un lato ciò si traduce in grande flessibilità, dall'altro, per uno come me, che adora Java per il suo rigore, è una sofferenza vedere improvvisati programmatori sviluppare applicazioni senza un minimo di criterio e quindi esposte ad ogni genere di problematica di sicurezza. A parte questo, il mio amore per l'informatica mi porta ad usare questo strumento professionalmente, alla parti di tutti gli altri, ignorandone le storpiature. La scelta comunque è stata quasi obbligata, sicuramente a livello open source è la soluzione più supportata.

Inizialmente venivo da esperienze con J2EE, però sviluppare e proporre applicazioni di quel tipo era pensabile solo a certi livelli, soprattutto considerando che, per girare, le applicazioni avevano bisogno di server praticamente dedicati e costosi perchè avere hosting con quel tipo di configurazione era, ed è ancora, cosa molto rara.

In ogni caso il mio stile di programmazione è pulito e rigorosamente ad oggetti (OOP), un paradigma che permette modularità, scalabilità e pulizia del codice. Non utilizzo PHP come linguaggio puro, uso dei framework come Zend Framework, Cake PHP o eZ Components; delle librerie che oltre a impacchettare delle funzionalità molto avanzate permettono un rapido, robusto e professionale sviluppo delle applicazioni. Per quanto riguarda l'interfacciamento con i DB (a proposito uso prevalentemente MySQL) ho scoperto la potenza degli ORM, soprattutto grazie all'avvento di PHP5, il mio preferito è sicuramente Doctrine ORM, una vera forza.

Ho lavorato con soluzioni open source più disparate: Joomla, eZ Publish, CMS made simple  e altri; spesso perchè costretto dai committenti, o dal budget, che per libera scelta. Coltivo lo sviluppo di un mio CMF (Content Management Framework) magari open source (guardo con molta attenzione e interesse a questa filosofia) forte dell'esperienza maturata nella realizzazione di diverse soluzioni di Content Management personalizzate; ultimamente però mi sono accostato a Drupal, un CMF davvero interessante che contiene molte delle funzionalità che vorrei implementare anche se sfortunatamente è un'applicazione function-based e non ha nulla di OOP, se non una parvenza.

Infine, uso Eclipse PDT come IDE di sviluppo e gestisco due server Linux, uno in ufficio e l'altro è un server dedicato per l'hosting. Per quanto riguarda il server in ufficio ho installato Ubuntu Server (purtroppo CentOS non mi riconosceva il controller RAID), SVN, Apache2, MySQL, PHP5, Asterisk per la mia telefonia interna, Bacula per i backup delle macchine.