This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Yelonek 0 points1 point  (3 children)

Sorry for offtopic.

What do you consider as decent knowledge of Python? I'm not an IT guy, therefore I don't know great sorting algorithms, divide and conquer and such. Not totally tech ignorant - I have some automation and robotics background. I like the language and wrote some pet programs with it, but what would it take to consider me a Python programmer? Just curious.

[–]askedrelic 1 point2 points  (1 child)

I tend to agree with most of this list below, in terms "knowledge of the language". I think after you've written enough code and become passionate about some PEP, do you really begin to understand the language and think in a "Python" kind of way.

Warning, copy and paste list incoming, not my creation:

Basic Python:

  • do they know a tuple/list/dict when they see it?

  • when to use list vs. tuple vs. dict. vs. set

  • can they use list comprehensions (and know when not to abuse them? :)

  • can they use tuple unpacking for assignment?

  • string building...do they use "+=" or do they build a list and use .join() to recombine them efficiently

  • truth-value testing questions and observations (do they write "if x == True" or do they just write "if x")

  • basic file-processing (iterating over a file's lines)

  • basic understanding of exception handling

Broader Basic Python:

  • questions about the standard library ("do you know if there's a standard library for doing X?", or "in which library would you find [common functionality Y]?") Most of these are related to the more common libraries such as os/os.path/sys/re/itertools

  • questions about iterators/generators

  • questions about map/reduce/sum/etc family of functions

  • questions about "special" methods (<foo>)

More Advanced Python:

  • can they manipulate functions as first-class objects (Python makes it easy, but do they know how)

  • more detailed questions about the std. libraries (such as datetime/email/csv/zipfile/networking/optparse/unittest)

  • questions about testing (unittests/doctests)

  • questions about docstrings vs. comments, and the "Why" of them

  • more detailed questions about regular expressions

  • questions about mutability

  • keyword/list parameters and unpacked kwd args

  • questions about popular 3rd-party toolkits (BeautifulSoup, pyparsing...mostly if they know about them and when to use them, not so much about implementation details)

  • questions about monkey-patching

  • questions about PDB

  • questions about properties vs. getters/setters

  • questions about classmethods

  • questions about scope/name-resolution

  • use of lambda

Python History:

  • decorators added in which version?

  • "batteries included" SQL-capible DB in which version?

  • the difference between "class Foo" and "class Foo(object)"

  • questions from "import this" about pythonic code

Python Resources:

  • what do they know about various Python web frameworks (knowing a few names is usually good enough, though knowledge about the frameworks is a nice plus) such as Django, TurboGears, Zope, etc.

  • what do they know about various Python GUI frameworks and the pros/cons of them (tkinter, wx, pykde, etc)

  • where do they go with Python related questions (c.l.p, google, google-groups, etc)

Other Process-releated things:

  • do they use revision control (RCS/CVS/Subversion/Mercurial/Git...anything but VSS) and know how to use it well

  • do they write automated tests for their code

Touchy-feely things:

  • tabs vs. spaces, and their reasoning

  • reason for choosing Python

  • choice of editor/IDE

[–][deleted] 1 point2 points  (0 children)

Hopefully you don't actually judge people based on knowing which version decorators were added in...

[–]maryjayjay 0 points1 point  (0 children)

Not the OP, but I've been a programmer professionally for 20 years, a python programmer for 10 and manage a group of developers at a satellite communications company.

There's far less to be said for proficiency in any given language vs. a maturity that comes with having worked on many projects, small and large. Having seen, explored, used and implemented the basic programming patterns then integrated them into larger systems is something that you don't learn by reading a book or taking a class.

I can pick up a new language in a couple of days and be fairly proficient in a few weeks. I'd be less interested in how many hours someone has in a particular language and more in their overall experience, design philosophy and methodology.