Newsgroup: it.comp.java
Titolo: Che tipo di preparazione deve avere un buon programmatore sulle API  Java?

Salve,
Sono un newbie in Java e sto cercando di impararlo attraverso la
lettura di manuali. Il linguaggio in sè non mi preoccupa più di tanto
poiché vedo che riesco a capire e ricordare concetti e sintassi.
Diverso è il caso relativo alle centinaia di classi (e relativi
migliaia di metodi) che compongono le API standard.
Ho seri problemi a tenere a mente come usare la moltitudine degli
strumenti di javax.swing e java.awt. Per scrivere i programmi non
riesco a ricordare i nomi delle classi, i metodi necessari ed in quali
contesti questi vanno usati e quindi devo ricorrere alla consultazione
di esempi dal manuale o da altri programmi dai quali copiare ed
incollare.
Ad esempio, il manuale (Horstmann) descrive l'attività di
realizzazione di Action e dell'associazione di queste a Button o Menu
Item in ben sei distinti passi ordinati. Riesco ad adattare questo
modello al mio nuovo codice ma sono sicuro che nell'arco di qualche
giorno dimenticherò la prassi e saprò rifare la stessa operazione solo
con l'aiuto del manuale.
Vengo al punto. In generale cosa si presume che un buon programmatore
Java deve ricordare sull'uso di queste complesse API? E' ammesso che
in un luogo di lavoro il programmatore possa costruire i propri
programmi accedendo ad esempi di codice già scritto e manuali? O forse
un programmatore con queste limitazioni non può seriamente sperare di
lavorare?
Grazie in anticipo a chiunque vorrà rispondere.
fabio


Ti parlo per esperienza professionale: in un'azienda solo il
programmatore sa cosa è un' API.
Il "direttore dei lavori" (magari egli è anche il titolare
dell'azienda) non sa nulla di tutto ciò quindi è un punto a favore del
team dei programmatori.
A loro viene chiesto solo un accrocchio funzionante.
Da dove l'accrocchio prende spunto (da un esempio tutorial preso paro
paro dallo splendido libro di Horstmann) non importa a nessuno.
Se il programmatore vuole allentare il respiro sul suo collo
("sbrighiamoci, sbrighiamoci") può sempre tirare fuori la scusa che
deve impiegare del tempo per aggiornarsi sul quel tool o su "quella"
API in modo che la prossima volta non perderà due volte lo stesso
tempo.
L'informatica è ancora molto artigianale: il motto è sempre
"l'importante è che funzioni, non che faccia bene il suo lavoro".
Con i clienti non si ha mai il tempo per creare un lavoro che svolga
bene il suo compito.
Si crea, però, qualcosa che fa quello che gli viene chiesto e non
importa se usa il 200% in più delle risorse necessarie.

ho una partita iva individuale e programmo in php per studi di grafica: 
quello che ha detto Giordano vale anche per me; quando provo a spiegare 
ai miei clienti che devo ottimizzare il codice se voglio andare avanti 
con le modifiche mi sento sempre dire 'ma se tanto funziona...' e io mi 
trovo continuamente a lavorare su codice di cacca.

 fabio
Io personalmente vivo inchiavardato alla documentazione. Sviluppo pi�
che altro per il web, quindi devo avere a che fare con una valanga di
sistemi diversi ognuno con la propria sintassi, peculiarit� e via cos�.
Non ho la bench� minima intenzione di imparare a memoria pi� dello
stretto necessario (che purtroppo nel nostro campo non � comunque poi
poco). Finora tutti i posti di lavoro che ho avuto hanno
permesso/incentivato il ricorso a documentazione ufficiale / forum /
risorse di vario genere, anche perch� spesso ti offrono soluzioni gi�
pronte a problemi a volte intricati.
Imho se un datore di lavoro pretende che tu sappia fare qualcosa in
campo informatico senza poter avere accesso alla documentazione � meglio
che cambi mestiere (il datore intendo).
Cerca di capire i concetti generali e come siano organizzate le cose.
 La conoscenza non � sapere le cose a memoria, � sapere dove cercarle :)
Ciao
Marco

 fabio
io lavoro come consulente informatico e programmo in php/c/java e delle
api non so una mazza, anche perch� molto spesso viene utilizzato un
particolare framework... a dirla tutta spesso e volentieri mi dimentico
pure la sintassi del linguaggio...
se mi togli la documentazione (in una qualsiasi forma che sia online,
locale, o un libro stampato) non lavoro pi�.
Per� sinceramente nessuno mi ha mai detto non sai le api a memoria via!
Anche perch� imparare a memoria le api di java � utile quanto imparare a
memoria l'elenco del telefono, cosa che alla fine mi risulterebbe pure
pi� utile.

 continuamente a lavorare su codice di cacca.
Ovviamente il discorso vale anche per noi delphisti..
comunque di problematiche simili ce ne saranno sempre. E' proprio il 
modo di fare software in italia che ï¿œ sbagliato dal principio.
Cmq, siamo OT, la chiudo qui.
-- 
Morde

 Java deve ricordare sull'uso di queste complesse API?
La risposta teorica si trova nelle certficazioni sun: io sto studiando 
per la scjp e lï¿œ sopra c'ï¿œ quando basta con la dovuta profonditï¿œ di 
dettaglio.
Quello che ï¿œ importante sapere, sono i concetti e il funzionamento di 
certi meccanismi "dietro le quinte".
Il resto della conoscenza te la fai con l'esperienza.
Dei buoni libri e documentazioni ufficiali poi non dovranno mai mancare 
sulla tua scrivania, ma non imparare nulla a memoria se non ti serve 
nel contesto in cui ti trovi.
Prenditi gli obiettivi della certificazione, studiati quelli e sei giï¿œ 
inquadrato bene per poter poi inserirti nel vivo delle realtï¿œ 
lavorative.
ciao
-- 
Morde


pienamente d'accordo con tutti, e aggiungo che la cultura di cui hai
veramente bisogno
è quella informatica non quella della documentazione.

 Marco
Devo dire che è proprio ciò che speravo di leggere. Mi sento molto
meglio, grazie.
fabio

 incollare.
Per un programmatore con una certa esperienza nel 90% dei casi dovrebbe 
bastare il supporto fornito dall'IDE (autocompletamento dei metodi, 
classi, variabili, javadoc inline eccetera).
Ovviamente questo � vero solo nel caso si tratti di API con cui ha a che 
fare ricorrentemente e che ha gi� studiato.
Tu per caso non stai usando alcun IDE?


Non mi pare che un IDE possa risolvere il problema che ti porto ad
esempio...
Ho studiato che ai vari buttons, radiobox e checkbox e ad altri widget
si deve registrare tramite addActionListener() un ActionListener che
attraverso l'implementazione del metodo actionPerformed() gestisce gli
eventi associati agli stessi oggetti grafici. "OK, proverò a
ricordarmene", dico io. Poi viene fuori che, in modo _molto_
consistente, invece gli sliders usano un ChangeListener che implementa
il metodo stateChanged. Alla faccia di quanto sembrava essere l'usuale
modus operandi.
Magari uno non programmerà alcuno slider per anni, fino a che qualcuno
non te lo chiede.  Tra l'altro nel frattempo ti è capitato di
programmare in C++ con il framework Qt4 che ha tutt'altra filosofia ed
ora i nomi delle classi e dei metodi iniziano a girare in tondo nella
tua testa.
Sono laureando in Informatica e ancora non ho capito bene come dovrò
affrontare il lavoro da programmatore.
Saluti,
fabio

 affrontare il lavoro da programmatore.
Trovo comunque assurda questa paura. Le classi da usare sono sempre 
quelle, i metodi da chiamare anche. Dopo un minimo di esperienza i casi 
usuali li hai in mente e comunque riesci a recuperarli con l'aiuto del 
IDE. Per il restante 10% hai sempre google o la documentazione specifica 
da consultare.

 affrontare il lavoro da programmatore.
Una volta che sarai entrato nel mondo del lavoro, col tempo 
immagazzinerai l'esperienza necessaria e troverai le risposte alle tue 
domande. Si tratta solo di iniziare.
Io credo che se ti portera dietro dall'uni la capacitï¿œ di studiare e la 
propensione ad evolvere le tue conoscenze, non troverai mai difficolta 
ad approcciare lavori e metodologie nuovi.
ciao
-- 
Morde

Un riferimento utile che fornisce una sorta di guida a ciò che serve è
la serie di articoli "Il programmatore e le sue API", pubblicata dalla
rivista mokabyte. All'indirizzo seguente trovi la prima puntata, e sul
lato sinistro dell'articolo i collegamenti a tutte le puntate
successive:
http://www2.mokabyte.it/cms/article.run?articleId=5JX-IVZ-HMT-L86_7f000001_18073931_43f34d02
In generale ti consiglio di seguire questa rivista che esce una volta
al mese solo in formato elettronico, e la cui consultazione è
gratuita. Ci scrivono professionisti del mondo java, e spesso i loro
articoli aiutano a trovare una strada nella jungla degli innumerevoli
standard, aspetti e argomenti.
Ciao
Daniele