Come iniziare la programmazione competitiva? [chiuso]


17

Ho praticato la programmazione per un po ', ma il problema è che mi ci vuole molto tempo per scrivere una soluzione ai problemi. Voglio chiedere se la programmazione competitiva può aiutarmi a migliorare questo.

Se sì, come devo iniziare e da quali siti Web posso usare (come TopCoder )? Ovviamente non sarò in grado di risolvere problemi molto difficili per ora. Cosa dovrei fare?

Se no, cos'altro dovrei fare?

Ho anche un altro problema che voglio imparare a scrivere codice, ma il fatto è che non sono molto bravo a farlo. Cosa dovrei fare? È come infastidirmi dall'interno.

So che alcune persone potrebbero non trovare questa domanda istruttiva, ma per favore mi permetta almeno di ottenere una risposta.


1
Non sottovalutare neanche il valore della programmazione collaborativa. Abbiamo riscontrato alcuni problemi nel nostro team a causa della competitività eccessiva - oltre a problemi di ingegneria / interpersonali. Quindi una programmazione competitiva potrebbe aiutarti, ma così potrebbe prendere parte a un progetto open source o sviluppare un progetto con amici affini.
Gavin Howden,

Risposte:


19

[la programmazione competitiva può aiutarmi a migliorare [la velocità]?

Sì, può, e dato il tempo sufficiente, sicuramente lo farà. Tuttavia, la velocità non è l'abilità più importante che migliorerai. Dalla mia esperienza di partecipazione con TopCoder da oltre 10 anni, l'abilità più importante che acquisirai dalla programmazione competitiva è la capacità di scrivere correttamente semplici frammenti di codice la prima volta, senza utilizzare un debugger.

Come devo iniziare e da quale sito come TopCoder?

Usa le stanze di prova per la Divisione 2. Il Livello 1 della Div 2 è in genere un "concorso di battitura", nel senso che trovi una soluzione immediatamente, quindi il tuo compito diventa codificarlo il più rapidamente possibile. La maggior parte dei compiti nella vita reale è così. Ti accorgerai rapidamente che il debugger è il più grande "time drain", quindi tenterai naturalmente di completare il codice senza eseguirne il debug. Questo sarà frustrante all'inizio, ma migliorerà con il tempo. Ci vorranno alcune centinaia di problemi di livello 1 per riuscirci, quindi non arrenderti.

Il debugging nella tua testa è l'abilità che ti aiuterà nel tuo vero lavoro: mentre la velocità di codifica non è importante, la capacità di scrivere snippet di codice corretti senza debug ti aiuterà a passare da buono a eccezionale.


Grazie mille @dasblinkenlight!
Vaibhav Agarwal,

10

Come programmatore principiante, dovresti essere molto più interessato alla qualità del tuo codice che alla velocità di scrittura. Dovresti lavorare su progetti da solo per espandere le tue abilità. Potresti continuare con la revisione dei progetti open source per vedere come gli altri scrivono codice e magari iniziare a contribuire a un progetto open source.

Nei miei oltre 25 anni di sviluppo di codice su varie piattaforme e domini aziendali, non ho mai trovato un caso in cui la velocità della mia scrittura del codice fosse più importante della qualità e della stabilità del mio codice.


Ma quando partecipi a un concorso diciamo un po 'di competizione di codifica o un processo di intervista, allora la velocità è importante? E anche quello mi sento.
Vaibhav Agarwal,

@cdkMoose va bene, ma puoi anche suggerirmi come iniziare la programmazione competitiva significa da dove iniziare?
Vaibhav Agarwal,

@VaibhavAgarwal Project Euler problemi da 1 a 50: mentre non è competitivo (a meno che non si stia cercando di essere una delle prime persone a risolvere il problema più recente), è impegnativo e il tipo di domanda che ci si potrebbe aspettare in una competizione di programmazione o processo di intervista.

@Vaibhav, inizierei la programmazione competitiva come farei con qualsiasi altra competizione: Pratica, Pratica, Pratica.
cdkMoose,

1
@Vaibhav: hai pubblicato che desideri imparare la programmazione. Se questo è lo stadio in cui ti trovi, personalmente non penso che dovresti preoccuparti della programmazione competitiva. Ciò può accadere dopo aver sviluppato le tue abilità. Per quanto riguarda l'intervista, non chiedo ai candidati al mio colloquio di scrivere programmi completi. Sono più preoccupato per la loro comprensione e processi di pensiero. Sto cercando di sviluppare la fiducia che potrebbero risolvere il problema, non che lo risolverebbero in tempi record.
cdkMoose,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.