Imparando facendo (e programmando per tentativi ed errori) [chiuso]

5

Come si impara una nuova piattaforma / toolkit mentre si produce codice funzionante e si mantiene pulita la base del codice?

Quando so cosa posso fare con la piattaforma e il toolkit di base, di solito faccio questo:

  1. Creo un nuovo ramo (con GIT, nel mio caso)
  2. Scrivo alcuni test di unità (con JUnit, ad esempio)
  3. Scrivo il mio codice fino a quando non supera i miei test

Finora, tutto bene. Il problema è che molto spesso non so cosa posso fare con il toolkit perché è nuovo di zecca per me. Lavoro come consulente quindi non posso avere la mia lingua preferita / piattaforma / toolkit. Devo fare i conti con qualsiasi cosa il cliente utilizzi per il compito a portata di mano.

Molto spesso, devo fare i conti (spesso di fretta) con un grosso toolkit che so molto poco quindi sono costretto a "imparare facendo" (in realtà, programmando per "tentativi ed errori") e questo rende me ansioso.

Si noti che, ad un certo punto del processo di apprendimento, di solito ho già:

  1. leggi uno o più libri a cinque stelle
  2. ha seguito uno o più tutorial Web (scrivendo codice di lavoro una riga in a) tempo)
  3. ha creato un paio di piccoli progetti sperimentali con il mio IDE (IntelliJ IDEA, al momento. Uso Eclipse, Netbeans e altri, pure.)

Nonostante tutti i miei sforzi, a questo punto di solito posso solo avere una conoscenza grossolana della piattaforma / toolkit che devo usare. Non riesco ancora a cogliere ogni singolo dettaglio. Ciò significa che ogni nuova funzionalità che implica la preparazione di alcuni dati e un algoritmo non banale è un problema da implementare e richiede un sacco di tentativi ed errori.

Sfortunatamente, lavorare per tentativi ed errori non è né sicuro né facile. In realtà, questa è la fase che mi rende più ansioso: sperimentare un nuovo toolkit producendo codice funzionante e mantenendo pulito il mio codice base.

Di solito, in questa fase non posso usare Eclipse Scrapbook perché il codice che devo scrivere è già troppo grande e complesso per questo piccolo strumento. Allo stesso modo, non posso più utilizzare un piccolo progetto indipendente per i miei esperimenti perché ho bisogno di provare il nuovo codice in atto. Posso solo scrivere il mio codice e contare su GIT per un salvataggio sicuro. Questo mi rende ansioso perché questo tipo di codice intrecciato e mezzo maturo può diventare rapidamente incredibilmente difficile da gestire.

Come affronti questa fase del processo di sviluppo?

Come si impara facendo senza fare casino con la base di codice?

Qualche consiglio o trucchetto, best practice o qualcosa del genere?

    
posta AlexBottoni 21.11.2012 - 20:06
fonte

4 risposte

1

Trovo che la soluzione migliore sia quella di non imparare facendo in questo modo.

Invece di cercare immediatamente di risolvere il tuo problema, isolare ciò che non capisci e capirlo prima.

Fai un esempio banale, non sai come Nullable funzioni nel framework .NET. Piuttosto che tentare di scrivere codice usando questo, crea un'applicazione di esempio e giocaci.

Ad esempio:

public static void Main(string[] args)
{
    var test = new int?();
    Console.WriteLine("new int? - {0}", test);
    test = 0;
    Console.WriteLine("0 - {0}", test);
    test = 1;
    Console.WriteLine("1 - {0}", test);
    test = null;
    Console.WriteLine("null - {0}", test);

    Console.WriteLine("test == null - {0}", test == null);
    Console.WriteLine("test.HasValue - {0}", test.HasValue);
    Console.WriteLine("test.GetValueOrDefault() - {0}", test.GetValueOrDefault());
    Console.WriteLine("test.GetValueOrDefault(2) - {0}", test.GetValueOrDefault(2));
}

Lanciare in tutti gli esempi che trovi e vedi cosa succede. Ciò ti consente di eseguire lo stile di esplorazione dell'unità a cui sei abituato senza dover eseguire una base di codice complessa tramite gli strumenti.

Si noti che a volte può funzionare con basi di codice esistenti. Tuttavia, fai attenzione alle ipotesi sull'ambiente in esecuzione. Se chiami una DLL che si aspetta di essere in esecuzione in un ambiente IIS da un EXE potresti incorrere in alcuni errori dispari.

    
risposta data 21.11.2012 - 20:17
fonte
1

Supponendo di aver letto alcuni libri e documentazione, l'unico modo per andare avanti da lì è praticare. Sei fortunato nel fatto che quando sei un consulente hai già un progetto che deve essere fatto, quindi puoi iniziare a farlo.

In generale, penso che il tuo approccio attuale sia corretto.

a) Impara lo sfondo e la teoria.

b) Crea test per TDD.

c) Inizia a lavorare.

L'unica cosa che vorrei aggiungere è

d) Refactor quando impari / scopri un modo migliore di fare qualcosa che hai già fatto.

Quanto sopra è IMHO sempre il giusto approccio ai nuovi framework. Non puoi aspettarti di leggere libri e documenti finché non sai TUTTO e solo dopo inizi la codifica. La mente umana non funziona così, e anche se lo facesse sarebbe probabilmente non ottimale.

    
risposta data 21.11.2012 - 20:28
fonte
1

Beh, non sono affatto un professionista, ma imparo man mano che il processo procede, apprendendo e implementando nuove funzionalità come sono necessarie, tuttavia ho il lusso di essere ed essere uno studente.

Per quanto ne so, stai facendo un ottimo lavoro nel tenere il passo con tutte le modifiche.

L'unico suggerimento che posso dare come principiante è quello di scomporlo in bit consumabili e imparare le funzionalità necessarie parallelamente alle basi del toolkit / piattaforma in modo da poter codificare il codice banale più velocemente e essere soddisfatti con il tuo codice generale.

    
risposta data 21.11.2012 - 20:35
fonte
0

Stavo per suggerirti di realizzare un progetto a perdere per familiarizzare con lo strumento ma l'hai già coperto. Ci sarà sempre più lo strumento su cui possono mostrare libri, tutorial e progetti di esempio tu. Tutte le sfumature escono solo con esperienza. Ma se non ti senti di avere una presa sufficiente su uno strumento, lo farei semplicemente dedicare più tempo a questi tre passaggi.

Il tuo piano mi sembra solido.

I work as a consulant

Oh. Bene, in tal caso, FALSO . Consegna tutto ciò che puoi schiaffeggiare insieme in modo approssimativo che sembra funzionare, conto il cliente per aver soddisfatto l'obbligo contrattuale, e lasciare . Se non è il più bello, questo è il problema di qualcun altro. O semina per un impiego futuro. Così è la vita di un imprenditore. Se hai una conoscenza specifica del dominio su qualunque cosa, sii sicuro confidarlo in un comodo documento o strumento o codice di esempio, perché è quello per cui stanno pagando davvero. Ma se hanno solo bisogno di un code-monkey per un fine settimana, e non ti permettono di usare gli strumenti che conosci, allora questo è il tipo di risultati che dovrebbero aspettarsi. Scusate, ma è così che funzionano i pasti da pasto risulta. Se fai uno sforzo in più, un altro consulente ti indebolirà. Se il tuo cliente stava assumendo per la qualità, avrebbero ASSOLUTAMENTE qualcuno.

Non fraintendetemi, i consulenti possono essere mandati da Dio quando avete bisogno di un superuomo di SQL o di un guru di gnu per bandire gli insetti che vi affliggono. Ma assumere un consulente che deve imparare gli strumenti? Naw.

    
risposta data 21.11.2012 - 20:53
fonte

Leggi altre domande sui tag