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