Purely Fabricated Interview Expert Pattern

Posted in Slagare internationale, Stand-up philosophy on February 21st, 2011 by Mihnea

Am aflat de la Andrei Ignat ca Scott Hanselman a publicat o noua lista de intrebari de interviu pentru programatori. Cred ca Hanselman asta e un fel de Ovidiu Cucu international, ca vad ca tot publica liste d-astea. Ca orice programator care se respecta, si eu sint constient ca pot deveni somer peste noapte, deci fac eforturi mari sa ma tin la curent cu ultimele evolutii in domeniul intrebarilor de interviu. Atasez mai jos raspunsurile mele la intrebarile lui, pentru cei 3 cititori din totalul nostru de 5 care nu sint membri pe programare.org. Scuzati limba lu’ Shakespeares, am zis sa nu break character.

What is SOLID?

YABA.

Why are patterns important?

Patterns are important because people who cannot program must be able to project importance by wielding pompous words.

Who are the Gang of Four? Why should you care?

The Gang of Four, also known as The Alpha Wankers, are four non-programmers who understood what power words are and applied the concept to programming. I care because Aurelian Popa told me that today it is more important to be “social” than to know how to program, and using pretentious jargon like “singleton” instead of “global variable” is a guaranteed way of improving one’s social status. They are not to be confused with the Wang-Zhang-Jiang-Yao group, whose name they borrowed in a spectacularly ill-advised stab at self-irony.

Explain the concept of Separation of Concerns and it’s pros and cons.

Separation of Concerns means that when you concern yourself too much with design patterns, you can stop being concerned about grammar. No man can understand the singleton pattern AND remember the basic rules of languages with immensely complex grammars such as English, so once you embrace the teachings of the Gang of Four, grammar becomes Somebody Else’s Concern. The first sign of this transcendence is putting an apostrophe in the possessive pronoun “its”.

Discuss the concept of YAGNI and explain something you did recently that adhered to this practice.

YAGNI is something YAGN, as it’s related to XP.

Are you still writing code? Do you love it?

No, I’m too busy calling my global variables singletons and speaking at conferences about it.

What do you do to stay abreast of the latest technologies and tools?

Hahaha you said breast!

How do you react to people criticizing your code/documents?

I punch them, fire them and/or write inflammatory posts about them on forums or blogs.

Whose blogs or podcasts do you follow? Do you blog or podcast?

Are blogs and podcasts design patterns? Never heard of them. Anyway, I like the color fuchsia, I am an open-minded person focused on self-improvement and my hobbies include hiking, music, reading and taxidermy. I hope this helps you determine if I’m a good programmer or not.

What is the last programming book you read?

I only ever read one, “Design Patterns”. I memorized every word. I don’t need to know anything else.

What’s so great about <cool web technology of the day>?

<generic answer>

How can you stop your DBA from making off with a list of your users’ passwords?

I didn’t know such sexual deviationism is so common among DBAs and anyway, why is that my problem instead of HR’s? Oh wait, you said “making off”, not “making out”. My bad.

What do you do when you get stuck with a problem you can’t solve?

The Design Patterns book is a complete list of solutions which are just waiting for problems. Unenlightened people approach programming the wrong way: they see problems and look for solutions. I use the sure-fire method of picking solutions from The Book and inventing problems for them. That way, I’m never stuck. Any feature or system which cannot be implemented in this way is ill-defined and not worth my concern in the first place. See also the “Separation of Concern” principle.

What’s the difference between a web server, web farm and web garden?

Wait, what? Web garden?

When do you know your code is ready for production?

When I have at least 157 design patterns in it.

What’s YAGNI? Is this list of questions an example?

Didn’t you ask this already?

Noile mele cuvinte favorite: Information Expert (a nu se confunda cu Code Expert), Pure Fabrication, Protected Variations.

LE (adica Later Edit, Ovidiu): hahahaha am aflat ce-i ala web garden. Redefinirea cuvintelor limbii engleze, in pula mea.

LLE: GoF au incercat sa si cinte la un moment dat. Punk, pentru ca si la muzica se pricep la fel de bine ca la programare. Iata-i aici prezentind pattern-ul “Old Grey Whistle Test”:

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Interviu cu un MVP

Posted in Premiul n00bel, Regula 0 on January 10th, 2011 by Mihnea

Cindva pe la jumatatea lui 2010, un rus a insinuat pe blogul propriu ca daca nu stii sa inversezi o lista simplu inlantuita, nu esti “programator adevarat”. Blasfemia a ajuns pina la urechile lui Andrei Ignat, care a propus dezbateri pe aceasta tema in citeva forumuri autohtone de programare. Indignarea s-a raspindit ca focul printre uscaturile acestor forumuri si au urmat discutii interminabile intre tabara celor care sustineau ca sint totusi programatori, desi nu-s in stare sa rezolve aceasta problema de clasa a 5-a, si tabara celor care intrebau “cum pula mea ba?”. Mai curios e ca pina si pe forumurile fara legatura directa cu programarea s-a discutat erezia lui Vyacheslav, de exemplu aici.

Pe masura ce mintile lor greu incercate supurau cu nesimtire crescinda justificari penibile, autointitulatii “programatori practici” au pus-o de o miscare de solidaritate si in curind s-a nascut si un gest simbolic prin care simpatizantii cauzei isi proclamau apartenenta. Ca intr-un film american cu oameni ordinari care fac lucruri extraordinare, unii stilpi ai comunitatilor au facut un pas in fata si au declarat raspicat: NICI EU NU SUNT PROGRAMATOR (I broke the dam!). Din pacate, stilpilor nu le-a zis nimeni ca gesturile astea merg atunci cind declaratia e falsa, ca in cazul alora care si-au pus ecusoane cu “tiganca imputita”, sau al vacilor cu bloguri care s-au ras in cap ca sa vindece cancerul la par; in cazul de fata, declaratia nu se cheama luare de pozitie, se cheama truism.

Lunile au trecut si revolta s-a stins, dar un om a ramas marcat de evenimentele din Iunie-Iulie: Ovidiu “MVP” Cucu. La inceputul ostilitatilor, el se intreba (intr-o engleza demna de protejatul sau) la ce ar putea folosi inversarea unei liste:

Clar, baietii nu au nevoie de “kernel developers”, de “compiler designers” sau de “Ph.D. candidate” ci de inversatori de liste simple inlantuite,.Normal, ar fi destul de periculos sa angajeze unul din categoriile de mai sus pentru ca la un momentdat ar putea intreba “What the heck reversing a singly-linked list is good for?”.

Gardianul Ovidiu traieste in concret, unde lucrurile au scopuri evidente: cosorul lui Moceanu este pentru impletit cosuri, sedintele comisiei politice sint pentru critica si autocritica, iar bombeurile sint pentru pupat. O intrebare care testeaza daca subiectul e in stare sa descompuna o problema banala in pasi logici, adica daca gindeste ca un programator, nu e o chestie practica, relevanta intr-o meserie din care cineva ar putea sa se hraneasca pe sine. Codexpertul fondator nu e in stare sa scrie un while cu 4 linii in el care sa umble printr-o lista, deci intrebarea lui Vyacheslav e o deviere de la doctrina politica si o incalcare a Regulii 0, ce i s-ar fi trecut in dosar daca ar fi lucrat in uzina lui Ovidiu.

O parte insemnata din discutiile codexpertilor ajung intr-un fel sau altul la subiectul interviului de angajare, despre care atit Ovidiu, cit si ortacul pe care-l creste au opinii puternice. Mai deunazi, intr-o polemica despre ordinea invatarii limbajelor (amuzanta in sine, de altfel), Courage a venit sa-si descrie viziunea sa asupra insemnatatii C-ului, dar si esecurile personale in lumea interviurilor si gramaticii:

Pentru mine a stii C inseamna sa stii pointeri si cum sta treaba cu memoria.Si pentru asa ceva trebuie anumite carti mai speciale care studiaza in detaliu asa ceva.Zic asta pt ca unu din interviuri l-am picat ca nu am stiut anumite “smecherii” cu pointeri si unu din ele,l-am picat ca nu am stiut cum sunt asezati in memorie si cum pointeaza,era mai complicat exemplu.

Vazind aceasta, Ovidiu a simtit cum ii revine in gura gustul amar de acum 6 luni si a purces la a deplinge abuzurile savirsite in interviuri:

Din pacate in ceea ce priveste testele/interviurile, Courage are dreptate. Poti de exemplu sa dai un test pentru “experienced C++ programmer” si sa trebuiasca sa rezolvi probemutze de C-chior cu pointeri de diverse tipuri fatzaiti prin tot felul de structuri ciudate, hacker style. […] In incheiere, o inversare de lista simplu (/dublu/triplu :) ) inlantuita si alte probeme scoase de prefesori fara simt practic (ca sa pice studentii netocilari la licenta), pune cireasa pe tort. ;)

Nu conteaza ca Courage e un incepator care cu putin timp in urma intreba cum se implementeaza c_str() (si primea un raspuns magistral de la ortacul specialist in C++ si STL). Nu conteaza ca problema din interviul sau e descrisa foarte vag, dar intr-un mod care ne asigura ca dinsul nu este tocmai stapin pe subiectul foarte complicat al pointerilor. Courage n-a picat la interviu pentru ca habar n-are chestii de baza, ci pentru ca i s-au dat probleme pentru tocilari. Ca si alt dobitoc care-si dadea cu parerea pe programare.org, Gardianul Ovidiu crede ca cacatul asta trivial cu inversarea listelor e ceva ce trebuie invatat pe de rost. Fiind un imbecil sinistru, el nu vrea sa accepte ca motivul pentru care nu poate rezolva problema e incompetenta, ci incearca sa ne explice ca problema e proasta.

Ovidiu Cucu este MVP pe Visual C++.

Tags: , , , , , , , , , ,