Python is a general-purpose programming language used for both web development and big data processing. It steadily occupies a prominent niche in the fields of data engineering and data science. Python has a low entry barrier as its syntax is straightforward and concise, making it appealing to new programmers.
Python developer interviews are held by the NIX United team within two specialties: web and data engineering. In this article, Alexey Novikov, Team Lead of the Python Department, and Evgenia Bogomaz, Group Lead of the Python Department, discuss what will help you pass the interview for a Python developer position. We’ll pass it to them.
The key points of a resume we are interested in depend on which position the applicant is applying for. It stands to reason that a junior specialist wouldn’t have a long track record of working on a variety of intriguing and challenging tasks. Therefore, we pay more attention to the education in novice developers’ CVs, whether he or she is studying now, and if so, what year he or she is in.
Often, first-year students come to us, and not all of them can envision how they will balance studying with working on a project. For our part, we provide the option to take a study break during exam weeks, and we also attempt to create a flexible timetable so that the newcomer has enough time to study at his or her university and dedicate time to IT projects.
It’s also vital to determine from a junior candidate’s resume what expertise and resources he or she holds before training. If there are any runtimes in CVS (GitHub, GitLab, etc.), we inspect the code and, during the interview, ask the applicant why he or she adopted a certain technique.
Don't be too hesitant to include a few personal words about yourself in your CV. Knowing a person's aims and aspirations, as well as his or her hobbies, is quite beneficial.
After all, we understand that the first few months of a junior position consist of active skill development, which necessitates frequent communication. It’s impossible to build effective communication without getting to know the person.
For this position, we have other priorities. We should ensure that the person in front of us is an experienced specialist, understand areas in which he or she has worked, as well as technology used and responsibilities held. In this scenario, we also consider how many jobs the applicant has had over a period of time.
Exaggeratedly, "five firms in a year and a half" may already be a red flag that the candidate won’t be able to establish a foothold with us.
Then we check to see if the candidate is currently employed or has recently left a previous project. If the candidate completes the interview successfully, we will know when to expect him or her to join us.
During the interview, we focus on specific technologies as well as decision-making experience, application architecture development experience, and soft skills. Professionals at this level frequently stand as a project's lead role and thus need to be able to effectively build team communication, explain goals and objectives accurately, resolve conflicts, and be ready to teach newcomers.
I'd like to call attention to those who come to us for freelance work. For them, the most important reason is to get experience engaging with other team members, and as a result, they are able to grow as specialists. Typically, freelancers’ code is not often evaluated, and they have no one to consult or receive feedback from. However, if you’re new to our team, a mentor will always assist you, and more experienced developers will share their knowledge and offer advice on how to tackle new problems. We also appreciate seeing seasoned pros as everyone can bring their own unique experience and perspective to projects—this is how we learn from each other.
A Python developer position, like any other backend programming language, assumes:
Confident knowledge of the language
Comprehension of client-server architecture
Familiarity with the HTTP protocol
Ability to work with a version control system
SQL expertise
Knowledge of database design principles
At the interview, our goal is not to fail the person, but to help them understand what they already know and can apply to the project right away, as well as what they need to learn. We understand that you will never be able to know everything.
Furthermore, candidates are frequently apprehensive during interviews and may forget something important. This is something we are aware of. Therefore, the most important thing for us is to see how the person thinks.
We also present cases that can be solved verbally, without creating code, by simply talking through the solution strategy. In these exercises, there are frequently multiple possibilities, and we are always curious to see which one the candidate chooses. At this point, it’s usually clear how well the candidate knows the base points to solving problems. These are our unique signature tasks, which you won't find anywhere online.
Many are interested in the Data Engineer and Data Scientist professions, which employ Python to process big data and machine learning.
Being a specialist in this field is swag, yet applicants often have no understanding of what they'll be dealing with or what basic technology stack they'll need.
Our advice: don’t be lazy, and read in advance about the position for which you apply.
One of the most prevalent subjects that new Python developers are unfamiliar with is relational database architecture. Many concentrate on database syntax and queries when preparing for interviews; however, while speaking with applicants, it becomes clear that they don't completely comprehend what tables are required to develop an effective data warehouse, nor how to link them or implement restrictions.
We frequently meet people who have only used ORM to deal with databases. However, for real-world projects requiring complicated queries and database optimization, this knowledge is frequently insufficient, and in our line of work, the ability to properly build a database is critical.
We don't have a magic question that tells us whether to reject a candidate or invite him back for a second interview right away. Our process helps us assess how much the applicant has demonstrated, how he/she views his/her own professional development in the future, and whether he/she is ready to work with us.
We frequently grant second chances. Following the interview, everyone receives feedback (at the end of the conversation or a few days later). We strive to give credit for what we've accomplished while also highlighting areas that need to be improved. Occasionally, the preparation after these second chances exceeds our expectations. A candidate for a Data Engineer position, for example, came to us once. He didn't have enough knowledge at the time of the first interview, so we advised him to study and return better prepared. We shared with him self-study resources developed by our professionals for such situations, as we do with all candidates, and we sent him home.
The candidate returned to us and proved his worth but for a different position as a web developer. He has now completed the server portion of one of the applications and intends to become a full-stack developer. As you can see, there exist various scenarios and outcomes for our applicants.
As experience has shown, the technical component of talents is not always the most important. The applicant's potential, whether seen or unseen, plays a critical role.
If a candidate can think logically and discover the best answer to a problem, and if he has an analytical mind, he or she will have a major advantage over other applicants.
This is true even if the applicant lacks a thorough understanding of technology. Learning to think technically comes with experience, but training someone to think logically and rationally is considerably more difficult.
Python is a beginner-friendly programming language that is very simple to learn for more experienced programmers. It will be extremely useful if you want to work on the backend or want to pursue a career in big data. With Python, each of your projects will be unique. Each one has its own set of challenges and tricks that you may overcome with off-the-shelf or custom solutions.
Are you interested in learning the fundamentals of Python theory? To assist you in preparing for your interview, we've put together some helpful resources below. Take advantage of these and check them out!
Mark Lutz “Learning Python” - The Python Developer's “Bible". Readable at all levels of Python learning; Python Tricks: The Book - a fantastic small book about the many Python tricks; Grokking Algorithms - in simple terms, this is a book about algorithms using Python examples; Django Admin Cookbook - the book covers the fundamentals of working with Django Admin; Django Book - an e-book with examples.
Introduction to Computer Science and Programming Using Python - MIT course; Python for Everybody Specialization - the course for everybody from the University of Michigan; Crush Course on Python - simple and offered by Google.
Real Python - many useful tutorials; Django: The Web framework for perfectionists with deadlines - learn about Python's finest framework.
An Introduction to Database Systems by C.J. Date - don't let the book's length deter you; it contains both theory and practice on databases; MySQL. Notes for Professionals book covers almost all major operations; PostgreSQL. Notes for Professionals book using Postgres as an example for understanding relational databases.
Pro Git - you don't need anything else but practice;
We recommend getting to know Apache Spark, one of the most popular tools for big data processing and analysis, if you wish to learn not just the foundations of Python but also delve deep into big data & data engineering.
There's no better place to learn about Spark's basic components, what distributed computing is, what data structures it uses, and the meanings of terms like Lazy Evaluation, Fault Tolerance, Catalyst Optimizer, UDF, Transformations, Actions, Wide & Narrow Operations, Partitions, Shuffle, Broadcast, and more than the official documentation:
https://spark.apache.org/; https://spark.apache.org/docs/latest/quick-start.html; https://spark.apache.org/docs/latest/api/python/
Big Data Fundamentals: Concepts, Drivers & Techniques - it's an excellent place to start learning about such a fascinating topic as Big Data; Learning Spark: Lightning-Fast Data Analytics - for massive data processing and analysis, Apache Spark has become the de-facto standard; High-Performance Spark - is a book about how to get the most out of Spark; Hadoop: The Definitive Guide - the Hadoop ecosystem is introduced as a crucial tool for storing and processing massive data in this book.
Databricks - Apache Spark's primary contributor; PySpark Tutorial for Beginners - Edureka's PySpark course.
Big Data Zone; Medium selection; Data Engineering Podcast.