Step successivo

di il
41 risposte

Step successivo

Salve a tutti. Sto studiando da autodidatta la programmazione, in particolare java. Ho realizzato prima un tris che permetteva di giocare 1vs1 oppure contro il COM(per l'intelligenza artificiale ho implementato un algoritmo trovato su wikipedia) ora ho finito un progettino di un'assistenza clienti(aiutato molto da un utente del forum) che permette di salvare clienti e prodotti nel database, nella schermata principale permette di visualizzare tutti i clienti e filtrare i risultati su un campo di testo. Cliccando su ogni cliente si apre la propria scheda con l'anagrafica, i prodotti acquistati e si può modificare l'anagrafica oppure mostrare i dettagli dei prodotti con la quantità acquistata,costo totale ecc e inoltre si può chiedere anche assistenza per un dato prodotto andandolo a scegliere tra la lista dei prodotti acquistati generando una chiamata con data,codice cliente e codice prodotto. Poi ho una schermata per visualizzare tutte le chiamate in cui ho messo una textfield che filtra in base a quello che scegliamo da una combobox(se filtrare tutti i campi,solo per nome, per codice cliente oppure per data, e in questo caso il campo di testo diventa un data picker da cui selezionare la data). Mi piacerebbe anche mostrarvi l'applicazione però ho voluto a tutti i costi utilizzare un database client-server e l'ho salvato in locale(ancora non so come gestire un db in remoto).
Tutta questa premessa per farvi capire più o meno il mio livello; ora, vorrei diventare un programmatore(penso di aver studiato solamente la grammatica, per creare dei temi ce ne vuole) e voglio chiedervi come devo muovermi ora. Vorrei imparare a programmare bene e a scrivere codice pulito e iniziare a fare un qualcosa di più complesso. Consigliate di acquistare libri di ingegneria del software e algoritmi, oppure passare a studiare qualche altro linguaggio? O buttarmi in qualche altro progetto che includa tecnologie web e affrontare i problemi man mano che mi si pongono? Scusate se sono stato un pochino confusionario, ma realmente non so come fare e non sono neanche all'inizio

41 Risposte

  • Re: Step successivo

    Bah.. io quando iniziai mi buttai sul primo posto di lavoro disponibile come programmatore Junior, sul posto impari in poco tempo quel che ti serve. Poi al limite ti specializzi come credi
  • Re: Step successivo

    Proprio autodidatta non sono. Sono diplomato come perito elettronico e sono uscito con 100/100 esimi quindi elettronica sto bene. Avevo iniziato informatica solo che dopo mezzo anno ho dovuto abbandonare per mancanza di fondi e ora dopo tre anni mi sono stancato di andare e ammazzarmi per lavoretti che non mi danno niente e mi voglio concentrare sulla programmazione perchè è una cosa che mi piace tanto solo che non ho mai avuto tempo per dedicarmici neanche da solo a casa. Avevo sostenuto matematica con 28, programmazione 30(ho fatto il c ma non lo ricordo), linguaggi di programmazione 30 e lode e sistemi di elaborazione con 28.
    Come libro di algoritmi ho algorithms 4 e anche altri libri. Per java uso java 5 di de sio e documentazione oracle.
    Solamente che volevo affiancare tutto lo studio a qualche progetto e imparare javascript html e altre tecnologie
  • Re: Step successivo

    @wrugg25: imparare un'altro linguaggio di programmazione (C++/C oppure assembler) e' utile ma NON COSI' UTILE.
    Certo, un buon programmatore mastica diversi linguaggi, ma un buon programmatore NON E' TALE perche' conosce molti linguaggi di programmazione. Conoscere molti linguagi di programmazione NON FA di una persona un buon programmatore!!!

    Quello che serve a @squizzi e' imparare le BASI della programmazione che' RIPETO, NON E' la conoscenza di molti linguaggi di programmazione!

    Questi sono alcuni argomenti FONDAMENTALE, la cui MANCATA CONOSCENZA e' evidente nella qualita' del codice scritto da una persona che non ha fatto l'universita':

    - automi a stati finiti e grammatiche
    - teoria relazionale dei dati
    - programmazione parallela
    - algorimi e strutture dati (ovviamente)
    - teoria dei grafi
    - design patterns, ed enterprise design patterns
    - algebra lineare
    - reti di calcolatori
    - sistemi distribuiti
    - sistemi operativi
    - calcolo numerico
    - complessita' computazionale
    - ricerca operativa
    - crittografia
    - intelligenza artificiale

    (nell'ordine: quelli in grassetto, in italico e normali)

    Per quanto riguarda i linguaggi, e' abbastanza inutile imparare a programmazione in C++, C#, PHP, Python o altri linguaggi ad oggetti se si conosce gia' Java. Quello che serve sono le conoscenze generali di diversti tipi di paradigmi di programmazione:

    - programmazione ad oggetti
    - programmazione funzionale
    - programmazione logica
    - programmazione distribuita
    - programmazione client/server
    - programmazione di rete

    Non sto dicendo che si deve conoscere la materia alla perfezione, ma avere chiari i principi che sono alla base si, perche' durante la propria vita lavorativa capitera' di prendere spunto da tutti questi argomenti, ANCHE se ci si limita a fare App per android o siti Web!

    Nota: questo e' un elenco di argomenti trattati all'universita' e spalmati su 3/4/5 anni di studi!
    Ed e' SOLO UN PARTE di quello che un BUON PROGRAMMATORE DEVE conoscere!!!!
    Perche' poi ci sarebbero:

    - appunto, MOLTI linguaggi di programmazione
    - l'intero framework .NET, J2EE, Android, le architetture Web
    - centinaia e centinaia di librerie
    - protocolli di rete (HTTP, FTP, ... TCP/IP ...)
    - elaborazione di immagini
    - elaborazione video
    - grafica 3D
    - animazione
    - reti neurali
    - algoritmi genetici
    - pattern matching
    ...

    ed altri ZILIONI di argomenti ...

    Volevi il PASSO SUCCESSIVO?

    Qui di passi ne hai abbastanza per arrivare alla prossima galassia
  • Re: Step successivo

    Grazie mille..inizierò a studiare da subito. Posso reperire tutto in rete o ci sono dei testi(in inglese) che consigli di acquistare? Poi lavorare a qualche progetto penso possa fare bene o no?
  • Re: Step successivo

    Per ora avevo pensato di iniziare con architetture e assembly(ho già un libro che non ho mai aperto), un pò di teoria dei linguaggi(inclusi automi a stati finiti e grammatiche) e naturalmente fare qualcosa per esercitarmi con java e andare avanti, dopodichè algebra lineare e analisi(faccio giusto un ripasso visto che faccio ripetizioni di molte cose) e algoritmi. Come primo periodo penso possa andare. Dovrei avere anche un libro di sistemi operativi.(Purtroppo la carriera universitaria si è interrotta prematuramente e non ho avuto neanche tempo di vedere per fatti miei perchè cercavo lavoro). Influenzato da un film ho deciso di fare tutto per conto mio, tirare un po la cinghia e investire su di me.
  • Re: Step successivo

    Ah.. ok, poi però il curriculum invialo alla NASA
  • Re: Step successivo

    I tuoi sono ottimi consigli wrigg25, ma ioho fatto tutto il percorso programmatore/analista/project manager senza mai studiare i testi da tè consigliati, e tutti i colleghi che ho conosciuto idem
  • Re: Step successivo

    LucaM ha scritto:


    I tuoi sono ottimi consigli wrigg25, ma ioho fatto tutto il percorso programmatore/analista/project manager senza mai studiare i testi da tè consigliati, e tutti i colleghi che ho conosciuto idem
    Consiglio gratuito: evita di raccontarlo in giro, non ci fai una bella figura

    Poi, come ha detto il mio predecessore, bisogna andare a vedere nel dettaglio di che ti sei occupato: scrivere la procedurina per la stampa su carta bollatta non e' esattamente la stessa cosa che realizzare un software di simulazione di un satellite .

    Uno si puo' accontentare di aggiustare biciclette, dove un'altro puo' trovare decisamente piu' divertente progettare motori nucleari per andare su Marte

    Servono sia gli uni che gl altri
  • Re: Step successivo

    LucaM ha scritto:


    I tuoi sono ottimi consigli wrigg25, ma ioho fatto tutto il percorso programmatore/analista/project manager senza mai studiare i testi da tè consigliati, e tutti i colleghi che ho conosciuto idem
    Può darsi ... ai tempi di COBOL/mainframe non era necessario leggere/studiare alcune cose per assumere certi ruoli.

    Ma sicuramente adesso non potresti farne a meno, se smettessi di fare il commerciale ...
  • Re: Step successivo

    migliorabile ha scritto:


    @wrugg25: imparare un'altro linguaggio di programmazione (C++/C oppure assembler) e' utile ma NON COSI' UTILE.
    Metti "inutile" per l'assembler, mentre invece pressochè indispensabile per C.
    Un po' come l'inglese: devi averne comunque un'infarinatura (il parallelo è col C)
    Questi sono alcuni argomenti FONDAMENTALE, la cui MANCATA CONOSCENZA e' evidente nella qualita' del codice scritto da una persona che non ha fatto l'universita':
    mah... non sarei così perentorio...
    - automi a stati finiti e grammatiche
    Pressochè inutili
    - teoria relazionale dei dati
    Non c'entra un granchè con la programmazione, ma è un "jolly" ubiquo. Purtroppo normalment è insegnata malissimo
    - programmazione parallela
    Pressochè inutile in gran parte dei casi
    - algorimi e strutture dati (ovviamente)
    Pressochè inutile per linguaggi con strutture (o librerie standard) evolute
    - teoria dei grafi
    pressochè inutili
    - design patterns, ed enterprise design patterns
    pressochè inutili, perchè nel 99% dei casi spiegati male, ed applicate peggio
    - algebra lineare
    Pressochè inutile
    - reti di calcolatori
    Estremamente utili
    - sistemi distribuiti
    Pressochè inutili
    - sistemi operativi
    Vagamente utili (per il livello ridicolmente basso), poco utili per programmatore
    - calcolo numerico
    Infarinatura utile
    - complessita' computazionale
    Infarinatura utile
    - ricerca operativa
    Pressochè inutile
    - crittografia
    pressochè inutile per il programmatore junior, e normalmente insegnata poco e malissimo
    - intelligenza artificiale
    pressochè inutile
    - programmazione ad oggetti
    Utile almeno infarinatura
    - programmazione funzionale
    pressochè inutile per il livello normale
    - programmazione logica
    Pressochè inutile
    - programmazione distribuita
    - programmazione client/server
    - programmazione di rete
    Oggi hanno una loro utilità
    - l'intero framework .NET, J2EE, Android, le architetture Web
    Sono "mischioni diversi". Per qualcuno NET è fondamentale, per altri del tutto inutile
    - centinaia e centinaia di librerie
    per la maggior parte inutili
    - protocolli di rete (HTTP, FTP, ... TCP/IP ...)
    Questi invece oggi ci vogliono
    - elaborazione di immagini
    - elaborazione video
    - grafica 3D
    - animazione
    dipende dall'ambito di lavoro, direi pressochè inutili per ambiti non grafici
    - reti neurali
    - algoritmi genetici
    - pattern matching
    pressochè inutili, sono troppo specialistici per l'infarinatura che viene data nell'università. Come insegnare a usare i numeri in colonna immaginando di essere diventati dei matematici.
    Volevi il PASSO SUCCESSIVO?
    Te lo dico io.
    Andare nel mondo marketing, e trovarti un buon impiego lì.

    Un markettaro bravo con un'infarinatura tennica (ribadisco tennica) vale tanto oro quanto pesa, 10 volte più di un programmatore.
    Quasi quanto una brava segretaria direzionale, insomma
  • Re: Step successivo

    wrugg25 ha scritto:


    O almeno: io, uno che si presenta senza determinate competenze di base non lo assumo (se non per ruoli di livello al più medio-basso).
    E' sempre interessante capire quali siano le "determinate competenze", perchè ad esempio NON le hanno (secondo te)
    Bill Gates
    Larry Ellison
    Mark Zukerberg
    Steve Jobs (attenzione, mondo marketting)
    Steve Wozniak
    Michael Dell
    Jack Dorsey
    Sean Parker

    Solo per citare i più noti
  • Re: Step successivo

    wrugg25 ha scritto:


    ...
    1 - Procurati un testo di architettura dei calcolatori ed uno di assembly x86, e studia queste due cose INSIEME
    1.bis - Studia bene l'elettronica digitale
    1 e 1.bis ad esempio sono pressochè inutili oggi, livello di importanza modesta
    2 - Procurati un testo di sistemi operativi (che comprenda un capitolo sulla programmazione concorrente, preferibilmente)
    Ed a cosa servirebbe, per un programmatore? Per uno java, ad esempio, che utilzza una virtual machine?
    3 - Procurati un testo (non per forza complicatissimo) di reti di calcolatori
    Questo invece è fondamentale oggi, nel mondo internet.
    4 - Scegli un linguaggio di interrogazione database (anzi, lo scelgo io per te: MySql), procurati un testo e studialo
    Direi che "linguaggio di interrogazione database" va benissimo SQL (nelle sue varie versioni).
    Se poi ci si vuol specializzare molto meglio mariadb di mysql
    Come avrai notato, non ho assolutamente parlato nè di ingegneria del software nè di tanto altro... bene, è voluto: l'ingegneria del software è una di quelle cose che, secondo me, un autodidatta non può ragionevolmente fare.
    Certo che può farlo, e spesso moooolto meglio dei vari "guru"
    Perchè "ingegneria del software" non significa essenzialmente nulla, è un "ombrello" che viene usato per far riparare sotto ingegneria anche il software (qui si aprirebbe il cuttone sull'università italiana, informatica, ingegneria informatica, le varie facoltà in competizione, come viene ordinata all'estero etc.etc).

    Comunque in breve: sono "spacciati" come il Santo Graal delle emerite... ehm... mi vien da dire "gigantesche, strepitose... cazzzaaateeeee..." (il jingle delle iene, chi lo ricorda?).

    Solo che se a uno studentello bimbominkia gli dici "si fa così perchè si fa così, questo è bene" lui, che non ne sa nulla, riceverà un "marchio" a fuoco
  • Re: Step successivo

    wrugg25 ha scritto:


    A me, +m+, sembra che tu dia un taglio troppo "praticone" alla didattica... mi sbaglierò, ma partire dal presupposto che "se è indispensabile, va bene; tutto il resto è inutile" mi sembra la via più breve per il fallimento, almeno in un campo dove la capacità di adattarsi sembra contare quasi quanto l'estrema specializzazione.
    Può darsi, certo che consigliare l'assembly a un programmatore niubbo mi pare una grande perdita di tempo.

    Utile? Certo, sproteggevo videogiochi per C64 un millennio fa, ma oggi ?

    Così come l'elettronica: serve a qualcosa un'ottimizzazione ai mintermini, o sapere cosa succede a un certo tipo di transistor?

    Data una quantità di tempo limitata mi concentrerei sugli argomenti davvero indispensabili, utili e rapidamente spendibili.
    Per la filosofia c'è sempre il tempo libero
  • Re: Step successivo

    Appunto..di un aspirante programmatore niubbo stiamo discutendo. Io la vedo come +m+
Devi accedere o registrarti per scrivere nel forum
41 risposte