Newsgroup: it.lavoro.informatica
Titolo: [Pareri autorevoli] Sul test in Brainfuck

Signore e signori, ecco a voi il parere sull'argomento nientemeno che di... 
Joel Spolsky (
www.joelonsowtware.com
)! :-)
Per ovvie ragioni, la discussione è in inglese... a voi.
Massimo
----------
Il mio messaggio:
----------
Hi Joel,
I'm a frequent reader of your blog, and find it quite useful and 
interesting.
I just want to submit you a little question that arised in an Italian
newsgroup about I.T. jobs ("it.lavoro.informatica"), on which I'd really
like to hear your thoughts; feel free to answer when you have some spare
time... I know you're quite a busy guy ;-)
The question: a person reported in the newsgroup she'd been asked, during a
job interview, to write a program to compute Fibonacci's numbers using the
infamous Brainfuck language (
http://en.wikipedia.org/wiki/Brainfuck
); the
job she was applying for was programming-related, but, of course, had
actually nothing to do with using Brainfuck, or even assembly, to which it
bears some resemblance.
Now, as you probably know, Brainfuck is a deliberately unusable language,
yet it's actually Turing-complete, so it can (theoretically) do the same
jobs any other programming language can do. Most people on the newsgroup
dismissed the test as stupid and/or useless, and said they'd never work for
a company which asks similar stupid tests to potential employees.
I have the opposite point of view (along with a few other people): I think
having to write a program in such an awkward language can actually be a good
test for a programmer, because 1) you don't have to a priori know the
language, which has only a few instructions that can be easily learned, so
no prerequisite is needed, 2) using that awful language requires exactly the
same logical skills you need to use any assembly language, which in turn are
(in my view) skills a programmer *must* have, even if he/she uses
higher-level languages, and 3) a test like this can verify the ability of a
potential employee to adapt to something new/different and quickly grasp
enough about some new tool to be productive in it. This is also the same
reason why "useless" languages like ML are taught in universities: to expand
students' minds about what "programming" is and can be.
I'd like to hear your thoughts about this; if you think this could be an
interesting topic for an article, feel also free to talk about it as long as
you wish :-)
Bye
Massimo
----------
La risposta di Joel:
----------
Hi Massimo!
I think you're absolutely right and I agree with you.
My memory is that brainfuck is not really assembler, it's more like a turing
machine, so someone who had studied computer science and learned about
turing machines might have a slight advantage on this over someone else.
Do you think there is a cultural difference that makes people say, "I would
never work for a company that makes people do such a stupid test?" I have
found very, very few American programmers who object to being tested in an
interview. Occasionally, someone rather middle-aged will say that they
refuse to do programming in an interview, and that they would walk out
before doing that, but honestly it just seems like they are scared of being
discovered as incompetent. However maybe there is a strong difference
culturally between Italians and Americans on this matter?
Thanks for writing!
Joel
----------

 Joel
BE scusa non fa una piega.
Non ho seguito il 3d del BF, ma ce ne e' uno oggi analogo su un test in c++
mi pare normale e legittimo fare tutti i test che ritengano necessari.
Assumere uno non e' una passeggiata.
Se all'Azienda piace il BrainFuck ben venga. Alcuni assumono con la
calligrafia o la forma del cranio, meglio un test in C++ o in BrainFuck
Che poi non siano sufficienti, siano aggirabili eccetera affari loro
Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 culturally between Italians and Americans on this matter?
Sulla conclusione sono quasi d'accordo. In taluni si dice "non lo voglio
fare" proprio perchč non lo si sa fare. Ma č una faccia della medaglia,
non significa che tutti quelli che non lo vogliono fare non lo sanno
fare. Inoltre sarebbe interessante sviluppare l'ultima domanda in cui ti
chiede che potrebbe esserci una grossa differenza culturale tra Italiani
e Americani (che secondo me c'č).
-- 
Lawrence - 
http://www.oluyede.org/blog
"Nothing is more dangerous than an idea
if it's the only one you have" - E. A. Chartier

culturally between Italians and Americans on this matter?
Secondo me per come hai impostato la domanda non poteva che rispondere
cosi'.
Non motivando il perche' qualcuno non ritenga dei test come uno
strumento valido, e' sottinteso insinuare che chi non accetta i test
sia un incapace.
Ritengo non sia possibile generalizzare i motivi per cui qualcuno
ritiene i test non idonei a scegliere persone.
Ogni persona puo' avere motivi diversi, sia pro che contro, quindi
generalizzare come hai fatto te e' molto limitante e la risposta non
puo' che tenerne conto.
Ad esempio, io ho detto che a me (quindi un'opinione decisamente
personale e non mi sogno nemmeno di ritenerla esportabile a qualcun
altro) una ditta che si basa sui test per assumere non fa per me, e
molto probabilmente io non faccio per questa ditta.
Il perche' e' basato su tantissime MIE personalissime valutazioni ed
esperienze personali e che vanno applicate caso per caso.
Diciamo che fino ad ora non sono riuscito ad immaginare un motivo (per
me) valido per richiedere un test, basandomi sulla mia esperienza e
tipologia di lavoro.
Ditte diverse possono usare i test per motivi diversi cosi' come ci
sono persone diverse che la pensano in modo diverso.
Per esempio, ci puo' essere una ditta megagalattica con milioni di
impiegati, che sceglie di scremare i possibili candidati con dei test,
per puro spirito pratico.
In un posto del genere mi sentirei un numero (ammesso di passare il
test ed accedere al vero collocquio), non vedo come potrei avere un
ambiente di lavoro "piu' umano" (anche qui, sensazioni/idee/esperienze
personalissime, non esportabili .. se mi metto a spiegartele facciamo
notte :-) ).
Ma una ditta cosi' e' per me incompatibile con il mio carattere, mi
troverei male e sicuramente (a causa di cio' ) potrei "rendere" meno
di quanto possa effettivamente fare.
Oppure puo' esserci una ditta dove chi deve scegliere qualcuno non ha
la piu' pallida idea di come valutarlo.
Ecco che allora ricorrono a test e psicologi, sperando di trovare la
persona giusta.
Non mi troverei bene in un ambiente dove, ammesso di passare i test,
nessuno sarebbe in grado di capire cosa sto facendo, nessuno in grado
di apprezzare il mio lavoro.
Ho visto qualche realta' simile ... ti vengono chieste cose
impossibili, in tempi impossibili, se provi a chiedere informazioni ti
guardano come se fossi scemo ... no grazie.
Altre ditte magari vedono (come te) nei test uno strumento per
valutare le persone.
In quel caso non mi troverei bene perche' mi sentirei inquadrato come
una macchina e io sono una persona.
Altro personalissimo motivo, magari ad altre persone non succede, ma
non tutti i giorni ho le stesse prestazioni mentali.
Se ti trovi a fare un test quando magari sei meno brillante, puo'
essere che non lo passi. Non vali nulla allora se non hai un
rendimento costante al 100% come una macchina ?
Come potrei trovarmi bene in una ditta che ti considera una macchina e
che si aspetta da te il massimo indipendentemente dal fatto di essere
una persona con bisogni e problemi ?
E' una scommessa allora passare il test.
Si', immagino tantissimi replicheranno sulla loro superiorita', ma il
vantaggio di invecchiare e' di vedere che non esiste babbo natale e
che tutti possono avere dei problemi prima o poi e che questi ANDRANNO
ad incidere sul rendimento.
Fare i fighetti e i superiori in effetti e' gia' un problema, che
nessun test potra' mai rivelare.
Ma continuiamo.
Un test lo si fa per valutare il rendimento della macchina, ritengo
sia riduttivo applicarlo ad una persona.
Ed e' inutile che mi aggiungi che dopo il test ci puo' essere un
collocquio di approfondimento.
Se non passi il test (e il non passarlo non e' detto che indichi una
totale incapacita') hai chiuso.
A livello personale potrei capire un test fatto DOPO un collocquio, ma
continuo a non ritenerlo uno strumento affidabile se non in casi
specifici, ma fare un test prima di un collocquio lo ritengo
totalmente sbagliato.
E ovviamente non mi sentirei a mio agio in una ditta che imposta il
primo incontro in questo modo.
Se il buongiorno si vede dal mattino ...
E via dicendo ...
Capisci che scrivere "qualcuno si rifiuta di andare a lavorare in una
ditta che richiede il test" senza motivazione, non puo' ottenere che
una bocciatura della persona che fa tale affermazione ?
Specie da un americano :-)
L'americano tipo ama le statistiche, le medie, i test .. fa parte
della cultura del provare, del risolvere i problemi.
Secondo me ci sono enormi differenze di mentalita' tra europei e
americani su questo punto e per come gli hai presentato la domanda,
direi che come minimo si sia scandalizzato possano esistere delle
persone che si rifiutano di fare il test o (orrore) considerare una
ditta non seria se chiede dei test.
Anche perche' semplicemente, non hai tenuto conto di un particolare
microscopico : per me il posto di lavoro e' incredibilmente
importante.
Non e' vero che uno vale l'altro.
Ci passi almeno 2/3 della tua vita, vivi a contatto con altre persone
e in un ambiente sbagliato ti rovini la vita.
Se una ditta sceglie di usare test per assumere qualcuno, la mia
impressione e' che cerchino un robot, non una persona.
Attento. Ho detto "mia impressione" da cui "mia decisione".
Per me il vero e unico test, che per inciso e' quotidiano e costante,
e' il lavoro stesso e non c'e' nessun altro surrogato per vedere se
una persona e' in grado o meno di fare il proprio lavoro.
Giorno dopo giorno, con problemi diversi da affrontare.
Se ti piacciono le statistiche, nel caso ti interessi saperlo :-), non
ho mai fatto nessun test nelle ditte in cui ho lavorato fino ad oggi.
Solo collocqui tecnici, a volte in piu' giornate, con i diretti
responsabili che sapevano perfettamente chi cercare e cosa chiedere.
E mi sono sempre trovato bene, come le ditte con cui ho lavorato,
almeno stando alle referenze :-)
Ciao
	Steve
-- 
Legge di Flon
Non c'e' linguaggio in cui sia difficile scrivere cattivi programmi.
FAQ del gruppo : 
http://www.sen.it/faq/it.lavoro.informatica.faq.html

 rispondere cosi'.
Taglio su tutto il resto del tuo messaggio, dove (come tuo solito ;-) ) 
offri un bel po' di spunti di discussione interessanti.
Però voglio farti notare che la mia domanda non era "c'è gente che si 
rifiuta di fare i test, ti sembra strano?". Era "c'è gente che ritiene 
*questo specifico test* una stupidaggine, che ne pensi?" :-)
Massimo

*questo specifico test* una stupidaggine, che ne pensi?" :-)
Che e' una stupidaggine ... la domanda, non il test. :-)
Avevo gia' esplicitato fin dall'inizio che il problema, per me, e' il
concetto di test, non lo specifico test, applicato a livello
lavorativo.
Poi la tua domanda cosi' non significa nulla.
Test stupido o intelligente dipende da cosa vuoi verificare, non dal
test in se stesso.
Un test come quello proposto IMHO puo' avere un senso a livello
scolastico, per vedere se una persona e' portata o meno a un
determinato corso di studi.
Non come prerequisito lavorativo.
Quindi il test applicato a livello scolastico lo ritengo estremamente
intelligente, a livello lavorativo non stupido ma quanto meno
inconcludente.
I motivi rientrano in quelli generali di test che ho discusso prima.
Just my 2 cents


 being tested in an interview. Occasionally, someone rather
Fermo, Massimo! Il tale (che io non conosco, colpa mia) ha dato una
risposta sensata ma... sbagliata, perché le premesse per come la vedo
io sono sbagliate. Io non ho contestato i test, io ho contestato l'uso
di uno strumento del genere per sapere se sono un buon programmatore o
no. C'è una certa differenza. Mi avessero detto "questo è il problema,
risolvilo", un po' come ha fatto Anna con la storia dei tronchi, e non
avrei fatto una piega.
-- 
Ciao!
Luca

 Che poi non siano sufficienti, siano aggirabili eccetera affari loro
Io lo trovo un buon test, anche perché non sarà sicuramente l'unico 
metodo utilizzato nell'assunzione.
Una volta feci un colloquio tecnico per un'azienda di automazione molto 
seria, durò 3 ore. C'erano domande di varia natura, dimostrazioni 
matematiche, codice C da scrivere per risolvere problematiche "semplici" 
in tempo ottimo o utilizzando memoria ottima, come operazioni su 
stringhe, byte ecc... i soliti problemi da 1 anno all'università che 
però una volta laureato o se non hai fatto l'università o non ci hai mai 
lavorato dietro se hai cmq esperienza ti spiazzano, soprattutto per il 
poco tempo che ti danno.
Per una valutazione tecnica, se devi fare il programmatore di un certo 
tipo di applicazioni come scientifiche o automazione, li trovo 
fondamentali i test, lì si capisce chi sa ragionare in fretta e chi 
risolve i problemi un tanto al chilo o chi cerca di risolverli 
ottimamente in tempo e spazio, magari dimostrandoti anche la 
complessità. Idem per la conoscenza di problematiche matematiche.
Lo trovo stupidissimo da fare per chi deve programmare qualsiasi cosa 
che non necessiti di abilità logico/matematiche.
Poi non è mai l'unica forma di valutazione, se non risulti il candidato 
tecnicamente più preparato ma cmq il più adatto per quel lavoro a meno 
della prova tecnica ti assumono, generalmente. Chiaro che a parità di 
impressioni prendono quello tecnicamente più in forma.

 almeno stando alle referenze :-)
anche io non sono stato assunto dove ho fatto test e anzi, o rinunciavo 
alle candidature perché non mi piaceva l'ambiente o venivo scartato 
perché non sembravo, giustamente, motivato.
I posti migliori li ho trovati con colloqui lunghi e senza test o 
domande tecniche.
Aggiungo, in tali posti ho anche trovato persone tecnicamente molto ma 
molto preparate.

 inconcludente.
Non sono d'accordo. Ho visto troppe persone, me compreso, essere fra i 
meno bravi e veloci a risolvere test scolastici ma avere il massimo dei 
voti nelle materie tecniche, sia alle superiori che all'università.
Non a caso mi sono laureato con gli stessi voti (alti) di chi era un 
fenomeno a risolvere test di qualsiasi tipo e si classificava molto bene 
anche alle varie olimpiadi (matematiche, informatiche ecc...) però io 
sono sempre stato negato.
Se avessi deciso di intraprendere un percorso di studi per i test non 
avrei fatto questa strada. Soprattutto se avessi ascoltato i prof delle 
medie che a fronte di test ti indicavano il percorso di studi più 
idoneo, io avrei dovuto fare 3 anni di istituto professionale e poi 
l'operaio.
Va considerata una cosa, che poveretto il test solitamente ha poche 
colpe nel suo essere test, sono le persone che li scelgono e che li 
interpretano che cannano tutto!

 sono sempre stato negato.
+1
anche se nella diatriba tra i sostenitori e i denigratori del test col 
Brainf*ck, io sono tra i primi.
Ciao,
Giulio

 Valutare subito col test è davvero offensivo!
No diciamolo, e' da pezzenti, se non hanno neanche una persona
disponibile che non sia una segretaria ad attenderti e a presentarti
l'azienda, sono solo dei pezzenti.
IMHO
;-)))
-- 
--------------------------------------------------------------------
Non system disk or disk error, replace and strike any key when ready
--------------------------------------------------------------------

 ha scritto nel messaggio 
news:ee2vuu$arg$1...@area.cu.mi.it...

Sì, ovvio.
Ma ha anche detto di essere d'accordo con me sull'utilità di quel test per 
valutare un programamtore, la digressione sui test in generale è stata sua 
:-)
Comunque, se non sai chi sia, puoi dare un'occhiata al suo blog; è piuttosto 
interessante, in generale.
Massimo