[melbourne-pug] How do I become a python developer?

William ML Leslie william.leslie.ttg at gmail.com
Thu Sep 7 20:24:39 EDT 2017


On 4 September 2017 at 15:04, Dylan Pereira <perdylan at gmail.com> wrote:
> Hi,
>
> I just had a general question. I have used python before and have loved it.
> I would love to work as a python developer. I don't have any previous
> experience except for writing a few python scripts in a previous role. What
> would employers like to see when they hire a junior python dev. What does it
> take to break into the industry?
>

I've got a bit of a list of things I expect people to know if they say
they are a professional developer, and all in all it's a few days of
study to become familliar enough with all of this set.  You don't have
to know any of these inside out, but if they were bought up in an
interview you should be able to show some familliarity.

* Know how to use a DVCS.  The one you are most likely to be asked
about is ``git``; and both github and bitbucket offer free git hosting
so try to get good at managing and describing your changes.  Ideally
learn to manage feature branches, too.  Version control is a matter of
good hygeine.

* Know how to use a debugger, either in your IDE or editor, or PDB in
a python terminal.  You won't often need to use one (as writing tests
and printing stuff is usually so much quicker), but it will mean a lot
for your sanity if debugger commands are not something you have to
learn while frantically trying to figure out what went wrong.

* Oh yes. Tests! Know how to write a test, and run it using the test
runner. Do not get into the habit of running the test file directly,
it teaches you bad import hygeine. If you're on a posix system, Ctrl-R
in bash is a lifesaver for finding your last test command, modifying
it, and running again.  Mine often look like ``pytest
foo/bar/test/test_baz.py`` and pytest can figure out from the
``pytest.ini`` in the current directory where the package root is.
With unittest, use package names, like ``python -m unittest
foo.bar.test.test_baz``.

* Know at least one web framework. Even if you're not doing web stuff,
it's really handy to be able to go from "these two systems need to
talk" to working communication in a few minutes. And also requests.
For bonus points, lxml.html or BeautifulSoup if you must.

* Be familliar enough with some database library that you can spin up
a database for trivial tasks.  For small stuff, I tend to use
sqlalchemy.core on top of sqlite3.  Be able to declare a schema,
create a database, insert rows, query for them.  Some Pandas and
postgres knowledge tends to come in handy too.

* For bonus points, be able to build python packages.  Know how to
write a ``setup.py`` and upload your package to pypi.  It goes without
saying that you should understand how to lay out your source package -
understand how an import statement becomes a lookup in sys.modules and
a number of lookups on the filesystem, and then finally how paths are
mapped to module and package names.  Here's a really nice article on
that subject: http://blog.habnab.it/blog/2013/07/21/python-packages-and-you/

I want to thank you for the question, too.  When I got my first
programming job, the largest program I'd written was probably around
100 lines, to visualise something for a school project. Programming
was just something I did in the quiet hours.  So I give the above list
not to discourage you from applying for work already, but rather that
these are the things an employer will most appreciate not having to
teach.

-- 
William Leslie

Notice:
Likely much of this email is, by the nature of copyright, covered
under copyright law.  You absolutely MAY reproduce any part of it in
accordance with the copyright law of the nation you are reading this
in.  Any attempt to DENY YOU THOSE RIGHTS would be illegal without
prior contractual agreement.


More information about the melbourne-pug mailing list