Junior Python Software Engineer, co umieć

1

Cześć,

co powinienem umieć, żeby dostać pracę jako junior programista Pythona? Na początku rozmowy powiem wprost, że nie znam żadnej technologi poza Pythonem (bardzo dobrze, wersję 2.7*) i obsługą gita**. Jest to lista z jednego z pytań na Quora, i zastanawiam się, co może w niej brakować, by się przygotować na rozmowę "na maksa". Jakie dokumenty PEP powinienem przeczytać, a które powinienem znać na pamięć? (poza PEP8 of course - gdy widzę jakiś kod bez PEP8, to dostaję czkawki, nawet jeżeli jest to kawałek kodu w pytaniu na StackOverflow). Czy wystarczy znajomość algorytmów w sensie "który zastosować na co, i jaką ma złożoność". Jeżeli mam kilka lat doświadczenia w innym języku, ale naglę aplikuję jako junior Pythona, to jaką reakcję to może wywołać?

Wrzucam listę:

  • You should know basic file processing, since that comes up in so many entry level positions.
  • You should know how to write unit tests.
  • You should know that PDB exists and how to debug with it.
  • You should know how to pass functions as arguments to other functions, and you should know how to do it with "lambda" anonymous functions.
  • You should know how to write nested list comprehensions with filters.
  • You should know what list comprehensions cannot do, and how to use loops in their stead when necessary.
  • You should know how to parse command line arguments either with sys or much better, argparse.
  • You should know how to adapt python 2 code to run in python 3 and vice verse. (Even print is different.)
  • You should know the asymptotic run times of all basic operations on basic python data structures like strings, lists, dictionaries, tuples, and all the things I am forgetting about.
  • You should be able to explain why you pick a dictionary or a string or a tuple etc. to your technologically challenged aunt Murdle.
  • You should know a little regex, since that's one of the great standard libraries of python and it makes scripting much nicer.
  • You should know how to use printf, since older developers will have used it a lot in their code.
  • You should know how to ask clear questions.
  • You should know how to use a virtualenv.
  • You should know how to use pip.
  • You should know how to comment well.
  • You should know the difference between a docstring and a comment.
  • You should look at the sphinx documentation page, but you don't need to know all the knitty gritty details of it.
  • You should know what numpy is, and how its pronounced.
  • You should know what's in OS and what's in sys.
  • You should know why the python import system sucks.
  • You should know when to nest functions and when not to.
  • You should know how to use keyword arguments, because they are self-documenting and lovely.
  • You should know how to set default parameters.
  • You should know about underscre and double underscore variables.
  • You should know how to use an object, and how to fake one with tuples, and dictionaries.

* czy jest sens uczyć się Python 3? Tego jest za dużo. Czy wystarczy znać pakiet "six"?
** jako Pythona traktuję też takie rzeczy jak pip, easy_install, pickle, virtualenv, itd. Ale już Django, Docker, itd - nie. Może trochę inaczej - znam Pythona, ale nie znam technologi webowych, poza muśnięcia np. Flask'a w mini projekcie

1

Przy przygotowaniu się na rozmowę powinieneś kierować się przede wszystkim wymaganiami pracodawcy. Jeżeli pracodawca jest poważny, to przedstawi swoje wymagania w ogłoszeniu, przeczytaj je uważnie i wyobraź sobie o co mogą pytać. Niektórzy pracodawcy podczas rekrutacji bardziej skupiają się na znajomości frameworków niż samego Pythona, inni wymagają ogólnej wiedzy z zakresu programowania webowego np. znajomość protokołów sieciowych. Nie ma problemu jeżeli programowałeś wcześniej w innej technologii. Języków jest tyle, że nie sposób znać i programować we wszystkich. Rozsądny pracodawca skupia się na innych rzeczach np. dotychczasowe doświadczenie, wiedza biznesowa, umiejętności miękkie - szczególnie w sytuacji gdy szuka juniora.

Niestety małe firmy nie potrafią przeprowadzać rekrutacji, kopiują ogłoszenia od innych firm przez co wymagania z ogłoszenia, są inne niż ich rzeczywiste wymagania. Poza tym często rekrutację przeprowadzają niekompetentni pracownicy. Z tego względu radzę unikać małych firm i wysyłać tam CV tylko w szczególnych przypadkach np. znamy dobre opinie. W innym wypadku szkoda czasu na firmy krzaki.

0

Tu masz ogólne informacje, co programista powinien umieć: http://4programmers.net/Forum/1032925

1 użytkowników online, w tym zalogowanych: 0, gości: 1