My Python Interview
I recently had discussions with some Python developers about opening a project. And I thought I’d share my unconventional methods of testing someone’s ability as an engineer using Python.
That’s different from “how well they know Python”. Because I don’t care how they can bark the details of the language.
Instead, I want to understand if they can balance the do-it-yourself-to-do-it-and-do-it-doing, in situations that are completely different from what I would pay them.
So instead of drawing a bubble on a white board or something, here are a few things I can do:
1) CSV data process
I tell them to bring their laptop to the interview, and make sure it is set up for Python upgrades.
I will give them a CSV file for some kind of interesting data. Details of nutritious foods with different foods, for example – something like that. And I will ask them to write a plan to import and answer questions on that data.
Simply starting: “What is the average number of” calorie “columns?”
So I know they can at least open the file and like the data.
Then there is something more interesting, such as: “Sort foods by the ratio of protein to calories”.
And so on.
I don’t care if they use Pandas, or a csv module, or some library I’ve never heard of. I don’t care if they use PyCharm or Vim or Nano. Unless it is basic, I don’t care if they search online during the interview to find you.
I just care that THEY CAN GET IT.
2) Speak JSON via HTTP
I wrote a small web app, which you can find and download and post over the network. And I give them an address, and a short document that fully explains its API …
How you create new jobs; write incomplete tasks; mark tasks as done; And cetera.
And I lead them by writing down a code that they use. Because in today’s world, we have to write the glue code for web services like this very much.
In case they haven’t done this kind of thing yet – maybe they just got jobs so far where they never needed to, for example – somehow, that’s much better.
Because I can give them a quick tutorial using the “Applications” module, and see if they can use it quickly to create a simple connection to the API.
And this allows me to test their ability to quickly read the library and use it with real code … ANOTHER important skill in today’s world.
3) Test Version Control
I will make them produce a simple library, using experimental development.
Emphasis on “simple”. I would not ask them to use a JIT compiler for a C-language.
Much like producing a number sequence. Something a little different, because I’m experimenting with something else at this point. And we don’t have a whole day to do an interview.
So I tell them the first requirement. They also asked them to write a code that met that requirement, using test-based improvements, and version control.
(Also, I don’t care if they use illegal or pytest or nose; git or mercurial or fossil or whatever. If they can do it with one of these, they can quickly learn to do it in the one I want.)
Once they have done that, I give them a new requirement. They should also write new unit tests, perhaps change some of the tests they just wrote, and then use the app code to make the tests pass.
And I repeat once or twice more.
This tells me a lot about how they develop software, their strengths and weaknesses.
There is more to the chat process than this. What I have written above are just some of the pieces I can use in a conversation.
And if you plan to attend an interview soon, consider practicing these questions beforehand. Maybe, it will help to prepare you to pass with flying colors.