Interviu cu câștigătorii SEERC 2017

Posted on Leave a commentPosted in Informatica, Interviu, Performanta, Rezultate
seerc-winners

Anul acesta o echipă a Universității din București, formată din Andrei Popa, Alexandru Velea și Lucian Bicsi, s-a clasat pe locul 1 la concursul ACM-ICPC, etapa pe Europa de Sud-Est. Performanța este una cu adevărat remarcabilă întrucât nicio echipă românească nu a mai obținut locul 1 din anul 2004. Printre olimpici concursul ACM ICPC este deseori catalogat ca fiind mai greu decât olimpiadele internaționale de informatică. Am realizat un interviu cu ei pentru a vedea cum gândesc și cum se pregătesc niște oameni care au ajuns la cel mai înalt nivel în programarea competitivă.

Când v-ați apucat de informatică? Ați știut de dinainte că vreți să faceți asta sau a fost o persoană care v-a influențat alegerea?

Lucian Bicsi: Într-a 12-a mainly. Nu am știut decât când m-am decis să mă apuc de programare competitivă. Dacă aș fi știut, probabil aș fi început mai din timp. Decizia a fost personală.

Alexandru Velea: Ai mei o făcut Poli la Cluj și am avut destul de mulți programatori în familie. Am zis pe a 5-a că e mai ok sa încep să fac info decât să mă joc în continuu la calculator și cumva mi-a plăcut super mult.

Andrei Popa: M-am apucat în clasa a 6-a de informatică. Mă jucam destul de mult la calculator și părinții mei au considerat că ar fi bine să fac și ceva productiv și m-au trimis la Palatul Copiilor să învăț informatică. Din primele ședințe am observat că îmi place și că aș vrea să fac asta cât mai mult.

Cum v-ați hotărât să faceți informatică la un nivel înalt? V-ați setat un scop legat de cât se sus să ajungeți? Ați vrut de la început să ajungeți să vă bateți cu cei mai tari din lume, sau ați ridicat ștacheta pe parcurs?

Lucian Bicsi: Pur și simplu mi s-a părut interesantă. Am venit la facultatea asta cu dorința de a merge la finala ACM. Acum că am realizat asta, voi începe să țintesc mai sus.

Alexandru Velea: Pe a 5-a tot îmi arăta tata articole cu Cezar Mocan și am vazut că îți e răsplătită munca. Fiind o fire foarte competitivă am început să lucrez din ce în ce mai mult. Nu prea m-am comparat cu alții, tot timpul voiam să fiu bun.

Andrei Popa: Nu m-am gândit de la început să ajung atât de sus, dar progresam destul de mult și îmi stabileam obiective din ce în ce mai mari.

Andrei Popa
Andrei Popa

Cum arăta programul vostru de pregătire în liceu? Lucian, știu că de fiecare dată când ne-am întâlnit, discutai probleme cu cineva, făceai asta și în liceu? Alex, Andrei voi cât de des discutați soluții cu alți oameni? Ce făceați atunci când nu aveați chef să lucrați? Ce ați schimba în programul vostru de atunci și cum credeți că ar trebui să se pregătească un elev pentru olimpiadă?

Lucian Bicsi: Nu prea m-am pregătit decât în clasa a 12-a în liceu, deci nu pot spune că aveam un program de pregătire. În liceu am lucrat doar arhiva educațională de pe infoarena. Acum, mai mult din concursuri.

Alexandru Velea: Începand cu clasa a 10-a am început să fac pregatiri cu Wef (Andrei Grigorean). Nu pot să zic că discutam probleme cu multă lume. Începand din primul an de facultate am venit să lucrez la CS Academy și aproape în fiecare zi discut probleme, tot cu Wef, dar în general nu e un lucru pe care îl fac ad-hoc. Personal, mi se pare că am început să mă pregatesc mai serios după clasa a 10-a. Nu cred că aș schimba mai nimic, sincer. Nu mi se pare un lucru așa de sănătos ca lumea să înceapa de mică să programeze. Normal că ajută, dar mi se pare că “ți se face scârbă” destul de repede. Cred că fiecare are un moment când se schimba ca persoană, cand face “level-up”. La mine a fost clasa a 10-a, dar nu-s sigur dacă asta vine dacă lucrezi mult sau e pur și simplu scris undeva magic. Un elev ar trebui în general să lucreze. Și de preferat nu arhive de probleme, concursurile sunt mult mai bune. E super util dacă discuti cu cineva, cineva care știe poate un pic mai mult decât tine, să îți arate lucruri noi. E ca un lucru “selectiv” în care faci doar “chestii șmechere” 🙂

Andrei Popa: Programul meu de lucru în liceu a fost cel mai intens în clasa a 9-a și a scăzut treptat pana în clasa a 12-a. Nu pot spune că aveam un program fix. Când simțeam că vreau să lucrez, lucram. Participam la concursuri online (mai mult Codeforces pe atunci) și discutam problemele cu câțiva prieteni care participau și ei la runda, dar am avut și mai mulți profesori din clasa a 6-a până într-a 10-a, din clasa a 11-a m-am pregătit doar singur. Cred că un elev ar trebui să se pregateasca pentru olimpiadă lucrand probleme cât mai multe și mai diverse, în afară de asta cred că depinde foarte mult de nevoile particulare ale elevului.

Alexandru Velea
Alexandru Velea

Cum a fost trecerea de la concursurile școlare la cele studențești? Ce ați schimbat în felul în care vă pregătiți?

Lucian Bicsi: În liceu mă pregăteam singur, acum mă pregătesc în echipă.

Alexandru Velea: Mai nimic

Andrei Popa: Mă concentrez mai mult pe concursurile tip ACM, altceva nu s-a schimbat.

Cum este sa lucrezi în echipă și care este principiul pe care ați format echipa? Are fiecare domeniul lui? Exista un lider?

Lucian Bicsi: Am vrut să facem cea mai bună echipă din Unibuc. Sunt de părere că fiecare are punctele lui forte și nu există situația să fie vreunul un superset al altuia (să știe cineva tot ce știe altcineva din echipă n.r.), ceea ce mi se pare că ne ajută să acoperim o arie mai mare de probleme.

Alexandru Velea: Zice bine Bicsi. Sa lucrezi în echipă e tot timpul fun. De cele mai multe ori îți scapă bucăți mici din rezolvare, dar dacă sunt 2 e puțin probabil să le scape amândurora. E ca și cum ai pierde o bucată dintr-un puzzle dar o găseste celălalt. Clar gama de chestii pe care o putem rezolva e o reuniune mai bună a noastră, dar mi se pare că și reușim să rezolvăm tot ce am putea rezolva, în mare parte din cazuri.

Cât de important este ajutorul unui mentor? Aveți oameni care sunt modele pentru voi? Se schimbă importanța unui mentor în timpul studenției?

Lucian Bicsi: Ce înseamna mentor?

Alexandru Velea: Tot timpul e bine să ai pe cineva la care să aspiri, sau ceva în orice forma. Te ajută să îți canalizezi energia mai ușor. În general e bine să te pregătească cineva, mai ales dacă te înțelege. Îți prezintă lucruri pe care nu le știi și știe cum să ți le explice. E ca și cum ai lucra, dacă ai putea să stai o eternitate, să analizezi tot și sa scoti cele mai bune lucruri ca să dai randament maxim. În general e bine să te îndrepte cineva pe calea pe care vrei sa mergi, știi că o să dai randament maxim pe drum.

Andrei Popa: Un mentor este foarte important deoarece o persoană care cunoaște drumul te poate ghida mai bine decât dacă ar trebui să te descurci singur, dar progresul se poate realiza și pe cont propriu, în unele cazuri mai greu.

bicsi
Lucian Bicsi

Cât de importantă a fost constanța în muncă pentru rezultatele voastre?

Lucian Bicsi: Nu prea a existat o constanță. Mă pregătesc în tranșe și intercalez cu pauze.

Alexandru Velea: În general e bine să lucrezi destul de frecvent. Știu că jucătorii de Starcraft 2 profesioniști spuneau că simt cum sunt afectați dacă nu joacă o zi. La info nu cred că e totuși la același nivel. Eu în general n-am prea fost contant în munca pe care o făceam. Recent, de vreo 6 luni pregătim câte un concurs pe săptămâmă la CS Academy, concurs pe care trebuie să îl compunem (de obicei), să scriem soluții si teste la el. Nu e chiar modul în care se pregătește lumea în general, dar chiar e ceva de muncă și aici. Din punctul ăsta de vedere cred că am început să lucrez “constant” 😀

Ce rezultat v-ați propus să obțineți la ACM ICPC World Finals la care tocmai v-ați calificat?

Lucian Bicsi: Locul 1. Dar ne mulțumim și cu primele 3.

Alexandru Velea: Măcar top 20

Andrei Popa: În loc să răspund la intrebare, prefer să precizez faptul că mi se pare foarte important să îți stabilești un obiectiv cât mai ridicat, peste limita posibilităților aparente (pe care majoritatea persoanelor le consideră imposibil de atins), pentru că te obligă să lucrezi mai bine, să ajungi mai sus. Chiar dacă nu îți atingi obiectivul, probabil o să ajungi mai sus decât dacă ți-ai fi stabilit un obiectiv mai mic.

Cu ce vă ocupați pe lângă facultate și pregătirea pentru concursuri?

Lucian Bicsi: Cânt la chitară și îmi place să ies cu prietenii în oras.

Alexandru Velea: Ce e aia facultate?

Ați fost angajați undeva până acum? Dacă da, cum vi s-a părut ce aveați de făcut acolo comparativ cu pregătirea pentru concursuri?

Lucian Bicsi: Am avut un intership de 3 luni, vara aceasta, la Bloomberg. Ambele sunt interesante, dar în mod evident prefer programarea competitivă ca și hobby.

Alexandru Velea: SRE la Google Dublin în anul 1. A fost interesant, chiar mi-a placut. Acum lucrez la CSA și nu pot spune că nu fac programare competitivă în mare parte din timp, pentru că o fac. E super fun în general să faci ce îți place și la ce ești bun. Dar era fun și la Google. Mi se pare că am un impact mai mare asupra oamenilor lucrând la CSA comparativ cu Google.

Andrei Popa: Am lucrat puțin la CSA și mi s-a părut destul de diferit de ce fac la concursuri.

Ce planuri aveți după terminarea facultății?

Lucian Bicsi: Cel mai probabil ori mă voi angaja ori voi face un master.

Alexandru Velea: Prima oară vreau să termin facultatea, apoi o să fac multe copii ale diplomei și o sa îți tapițez camera cu ele.

Andrei Popa: Momentan nu am planuri atât de îndepărtate.

Ce sfaturi aveți pentru cineva care vrea să înceapă acum să învețe informatică?

Lucian Bicsi: Să aibă de la început un minim de standarde în materie de coding. Este trist să vezi atâția oameni buni la info care nu codează corespunzător.

Alexandru Velea: Să încerce tot timpul să înțeleagă ce se întamplă. Să își pună întrebări legate de tot ce se întampla, să nu lase lucrurile să treacă pe lângă ei.

Andrei Popa: Depinde foarte mult de cum vrea să învețe informatica și pentru ce. Sfaturi generale nu am, cei care participă la olimpiadă o să găsească opiniile mele în alte întrebări de mai sus.

Ce v-ar plăcea să se zică despre voi peste mulți ani? Cum v-ați caracteriza și care sunt lucrurile pe care le-ați realizat până acum de care sunteți cel mai mulțumiți?

Lucian Bicsi: Nu știu să răspund.

Alexandru Velea: Pas

Andrei Popa: Prefer să nu ma gândesc la asta. La a doua întrebare nu știu să răspund.

De ce nu mai facem meditații pentru “la clasă”

Posted on Leave a commentPosted in Cum sa inveti, Informatica

Începând de anul acesta școlar, am decis că nu vom mai face pregătiri pentru “clasă” deși mare parte dintre cererile pe care le avem sunt de acest tip. Acest lucru nu înseamnă că nu mai lucrăm cu elevi care nu știu să programeze, ci că vrem să lucrăm cu cei care sunt pasionați, care vor să știe mai mult decât fac la școală și care vor să facă performanță în domeniu.

Am decis să facem acest lucru din mai multe motive:

Se strică dinamica grupei

În general lucrăm cu grupe de câte 5 elevi grupați în funcție de nivel. Facem acest lucru pentru că având mai mulți elevi, ei vor discuta între ei, explicându-și neclaritățile. Explicându-le colegilor cum se rezolvă diverse probleme, ei vor înțelege și vor asimila mai bine informația nouă, dar își vor dezvolta și spiritul de echipă. În plus elevii din grupă sunt mult mai harnici deoarece nimeni nu vrea să fie singurul din grupă care nu-și face tema. Nu în ultimul rând, mare parte dintre elevi își fac prieteni din alte școli, prieteni care au aceleași pasiuni cu ei și cu care au multe lucruri în comun.

Din experiența noastră din anii trecuți, elevii care doreau pregătire doar pentru a fi mai buni la clasă renunță să mai lucreze sau încep să lipsească în momentul când și-au atins scopul. În schimb cei care care doresc să facă performanță continuă să se pregăteasca intens. Se creează un decalaj atât de mare între aceste două categorii încat nu mai este posibil să se lucreze cu ei în aceeasi grupă pentru că fiecare ar avea de pierdut.

Ca să ajungi un programator bun, trebuie să lucrezi în plus

Încă de când am fondat Learnhouse, scopul nostru a fost să facem pregătire de calitate. Nu ne-am dorit niciodată să fim doar un ajutor pentru a scăpa de corigență sau pentru a lua o notă mare la test. Ne dorim ca elevii noștri să ajungă niște buni informaticieni care să inoveze și să ajute lumea în care trăim, având impact asupra a cât mai mulți oameni. Nivelul la care se predă la clasă este unul foarte scăzut deoarece trebuie ca toată lumea să facă față, inclusiv cei care nu își doresc o carieră în domeniu și au ales să dea la mate-info pentru a fi într-o clasă “bună”.

Pentru cineva care se mulțumește cu informatica predată la clasă, cred că este imposibil să se angajeze ca programator. Chiar dacă lucrezi puțin mai mult și reușești să te angajezi, tot timpul vei fi printre cei mai slabi din echipa în care vei fi, vei avea un salariu mic și vei fi ușor de înlocuit. Ca să eviți situația neplăcută, este important să începi să înveți lucruri în plus.

Ca programator trebuie să înveți de multe ori singur

Dacă nu vrei să îți dedici prea mult timp pentru a lucra în plus, totuși este important să începi să înveți singur. Într-adevăr primii pași în programare sunt foarte grei, dar am creat platforma WellCode unde poți să înveți lucrurile de bază în programare și unde poți să ceri ajutor de la oameni din toată țara. Mai mult, atunci când vei lucra, nu vei mai avea un profesor care să-ți explice toate lucrurile și de cele mai multe ori va trebui să te descurci singur să înveți și să înțelegi cum funcționează lucrurile în proiectul tău. Colegii tăi de echipă vor avea și ei lucruri de făcut și nu vrei să îi întrerupi prea des și să devii o povară pentru echipă.

9 Reasons to learn how to code

Posted on Leave a commentPosted in Informatica
This article was originally posted on We ❤ Swift one of the first sites dedicated to the Swift Programming language.
About the Author
Andrei has been programming since he was 10.  In the past 6 years he has helped in making over 100 iOS apps for companies and organizations around the world. He also wrote a book that teaches you programming from scratch that helped over 100.000 people learn how to code.   Regular people see us as aliens and clients/bosses see us as wizards. In this post I’m going to try to convince you to learn to speak computer and change the world.

#1 We’re living in an amazing time

Most of the world is now connected to the internet, and computers are all around taking care of more and more of our needs. There really aren’t many fields where computers haven’t changed the status quo. This gives us, developers, a huge amount of power at our fingertips. You write the rules that other computers and people will follow. You can have a great impact on the whole world. For example a Googler helped ban the sale of ivory products via the search engine in a 20% project.

#2 Financial Stability

The number of available tech jobs is growing faster than the number of developers. There will be an estimated 1 million open positions by 2020. Tech salaries will remain high because of high demand. Until 2050 when we have AI that writes code this trade is a save choice.

#3 Half of tech workers are juniors

Just like computers get two times cheaper every couple of years the number of developers in the world doubles every 5. That means that half of all tech workers have less than 5 years of experience. Most people who join the tech sector learn programming at bootcamp, classes or online. This is one of the few domains where having no experience is not a problem.

#4 Machine Learning

Machine Learning is a technique of teaching computers to do stuff by showing examples and letting them figure out the rules. Its the secret sauce behind the top apps/services we use on a day to day basis. Using these kinds of algorithms has only been possible recently due to a combination of factors like advances in research, availability of cheap computational power and big collections data. We have barely scratched the surface of what applications it can have. All jobs and activities will be enhanced by AI in the following years. Big tech companies are doing most of the heavy lifting and offering platforms and general solutions to developer who want to make applications, not research. Here I have to mention a few:
  • api.ai (purchased by Google) – this web based platform will help you make really cool chat bots without programming. They can talk with users in the most common chat platforms and extract information from them – there is support for the most common languages and more are coming soon.
  • Microsoft Cognitive Services – they offer a complete suite of APIs that handle things like speech recognition, emotion analysis, face detection/recognition, recommendations and much more.
  • IBM’s Watson is a special piece of software. It can learn from unstructured documents and can then answer questions using what it learned or discover things from that data. The cool thing about Watson is the way it’s setup – You rent the algorithm and hardware running Watson from IBM and you keep your data. There are a lot of applications powered by Watson that are changing the world in domains ranging from travel, finance to medicine and even retail.
  • TensorFlow – is a a state of the art open source machine learning framework made by Google. It’s good for rapid prototyping and learning and also good for hardcore applications that require multiple GPUs or machines or even if you want to export a model and use it on your iPhone. You can find a list of links to help you get started with Tensor Flow here.

#5 The world needs you to be a hacker!

We can easily compare software with art. And our world needs artists of all kinds. Software replicates a view of the world, the view of the team that implemented it. But not everyone’s world is the same, for this reason we need diversity among developers. If you think you are not fit to be a programmer you can’t be more wrong – most people like you thought the same thing and this is why your lookalikes vision of the world (and daily activities) are not represented in software. Imagine it! If more young mothers will learn to code, there will be more apps on AppStore that will make all young mothers lives easier by being there first you will notice what needs to be done to make your life and theirs better.

#6 Happiness

Employers spend a lot of resources to keep their developers happy. That’s because happy people write more and better code. Many tech companies are famous for perks like awesome food, massages and other good stuff.

#7 Learning Never Stops

New tools and technologies appear all the time. You will spend a bigger part of your time than you would expect learning stuff. Even if you just stick to your tasks you will have to learn a lot to be able to execute them. This is a good thing! Unless you work in a underground secret code factory where people have to do the same ting over and over you will always be able to find new things to get exited about at work. And bonus: learning also keeps you mind healthy.

#8 Work anywhere you like

Freelancing has become more and more common as more people take matters in to their own hands, in the US freelancers make over a third of the workforce. There has been a significant increase in remove work opportunities in recent years. This allows new career paths. For some this means being able to stay at home and not move to a bigger city in order to get a good paying job. For some this means quite the opposite – they identify themselves as digital nomads – people who travel and work online. Nomad List is a good place to find places to travel and work.

#9 It’s easier to start than ever

There are thousands of tutorials on any topic you want to learn. If you are willing to put in the time nothing can stop you from getting the job of your dreams. With an hour or two of practice each day you can become a developer in less than a year. If you want to make iOS apps or websites you can use swift. Although the web community is not as matured as others like javascript or ruby there are clear signals that this will change soon. There a lot of good teams working on different parts of the ecosystem moving swift forward at an ever growing pace. We’ve helped over 100.000 people learn how to code with our Swift Programming from Scratch book and training platform that is available on both macOS and online. The book teaches you the most important programming concepts with the least amount of theory and lots of practice. Each chapter has a few pages that explain new concepts using a simple language and leaving out a lot of technical details. By solving the challenges you will get to write your first 1000 lines of code in about one month.

Bonus: #10 Special calling for the next lady that will get us to the moon

Women have been in the field since it’s inception. The first programmer was a woman and we got on the moon thanks to one. Please consider computer science as a career path!
Yep, she wrote that code and it got us on the moon.
Women make up about a quarter of all developers. I’ve worked for a few companies and so far I’ve noticed that there are companies where there are actually a a lot of female employees and companies that barely have any (and usually that’s a bad signal). So don’t get discouraged – just keep searching until you find the right company/job for you.   If you liked reading this article please take a second and share it with your friends! :)

10 motive pentru a învăța informatică

Posted on Leave a commentPosted in Informatica

1. Vei avea un loc de muncă asigurat. Cererea de forță de muncă în industria IT e foarte mare și depășește cu mult numărul absolvenților. Pe lângă asta se preconizează o creștere de până la 20% a numărului de programatori până in 2020. Pe lângă asta, locul tău de muncă e mult mai sigur. Avem deja automate care vând produse, roboți industriali și în curând vor ieși pe piață mașinile care se conduc singure. Din ce în ce mai multe meserii se automatizeaza, iar domeniul care le automatizează e programarea.

(more…)