Cosa significa ‘forti capacità di programmazione’?

Significa che possono metterti davanti una lavagna bianca e chiederti di scrivere codice e tu scrivi buone risposte, e non scrivi codice a caso quando non sai come risolvere un problema, ma rispondi onestamente che non sai come farlo, cerchi consigli, usi una libreria, guardi su wikipedia, e vai avanti.

Significa che sai come scrivere codice usando modelli ben definiti, che capisci la necessità e sai come scrivere casi di test, che conosci l'architettura della macchina e come il codice interagisce con essa. Che siate più di una scimmia da codice, che sappiate hackerare e che non significhi scassinare le cose. Che conosci il sistema operativo, come i buffer interagiscono a diversi livelli, come il tutto è più grande della somma delle parti quando una buona mente mette insieme i pezzi.

Significa che non conosci solo un linguaggio di programmazione, o due, ma che sai come pensare in codice, che sei un pensatore computazionale, e che sai che ogni linguaggio è buono come un altro e puoi capire il codice scritto in uno, a meno che tu non sia familiare con il tipo di linguaggio di programmazione. Il che significa che dovreste conoscere la differenza tra un linguaggio dichiarativo, un linguaggio imperativo, un linguaggio funzionale, e dovreste essere preparati a parlare dei punti di forza e di debolezza di ciascuno.

Essenzialmente dovreste conoscere davvero il vostro culo da un buco nel terreno, e qualcuno alla ricerca di un programmatore veramente forte può rapidamente estirpare il grano dal caos.

In altre parole, non si cercano stagisti con forti capacità di programmazione. La disciplina necessaria per una forte capacità di programmazione è ciò che si dovrebbe insegnare agli stagisti!