What makes a great Python Developer?
What makes a great Python Coding Challenge?
Python Coding Challenges
At Geektastic, we try to craft coding challenges that go beyond the contrived algorithm tests that are commonplace elsewhere, and actually try and simulate writing production level code to solve realistic problems. Our Python coding challenges are no different in that respect. A candidate taking a Python challenge with us will get to demonstrate generic skills such as solution design and architecture, problem solving and computer science fundamentals. But every Python challenge also rewards those candidates who are familiar with the language and its standard library ecosystem. A strong Python developer knows what parts of a problem can be delegated to an existing function, and when it is time to actually go ahead and invent the wheel.
Our Python programming challenges contain high-level requirement specifications and some skeleton code to get the candidate started. Leaving it up to every individual to choose a solution approach that they feel best fits them. This not only matches many real world requirements, but also allows candidates to show off their knowledge of Python conventions and the Python standard library.
Bulb hired 70 developers in 12 months using Geektastic’s assessments, saving 58 days of engineering resource
- 70Engineers hired in the last 12 months
- 44Hours per week of engingeering time saved
- 50%Reduction in time to hire
- 408Technical assessments outsourced
Would you like to license a Python code challenge to analyse the Python skills of your candidates?
Python is known as a multi-paradigm programming language, meaning it is capable of everything from highly specialized procedural scripts, to large-scale object-oriented applications and even functional programming. As such, Python is largely associated with a wide variety of vastly different domains. The most notable domains include scripting and tooling for developers, web applications using frameworks such as Django, and the realms of science and machine learning through Numpy, SciPy and scikit-learn, to name the best known examples.
Would you like to test your Python skills and take a peer reviewed Geektastic code challenge?
Given this variety of use cases and demands that exist for Python applications, good Python programming challenges should try and identify and acknowledge concepts that are shared between all of these domains, without demanding that a challenge taker must rely too heavily on either. But regardless of whether a challenge-taker prefers a functional style or an object-oriented approach, there are a number of qualities that can be found in any strong Python programmer:
Follows instructions and communicates intent
This is obviously a general quality and not something unique for Python challenges. Nonetheless, it remains an area where we see some of the biggest discrepancies between weak and strong applications. Specifically for Python, this incorporates things such as using comments and docstrings well, and utilizing code that is supplied with the challenge, rather than re-writing the skeleton code at one own’s whim.
Efficiency and performance in a Python context
Any developer strong in computer science fundamentals has a good understanding of common data structures and a well-equipped toolbox of algorithms and algorithm paradigms. A Python developer strong in CS fundamentals makes good use of some of the modules in The Python Standard Library, such as collections, itertools, heapq and bisect. Furthermore, familiarity with language constructs such as generator expressions and other lazy features, list comprehensions and an understanding of mutable vs immutable objects will prove very helpful in most Python coding challenges.
The Zen of Python and the concept of “Pythonic”
By virtue of having existed for more than a quarter of a century, the Python programming language and the community surrounding it has developed a common sense of style and ideals. The Zen of Python are words of wisdom written down by long time Python programmer Tim Peters. It encapsulates a philosophy of writing clean, succinct code in a manner that will be familiar to most other Python programmers. The concept of “Pythonic” gets thrown around a lot, and was explained like this by Martijn Faassen. Neither the Zen of Python, not the concept of Pythonic should be thought of as firm rules, or even very detailed specifications. But rather of as a set of half-joking (but more serious than you first might think!) pointers that identify a philosophy that a large portion of the Python community will agree with.
A history of Python
The history of Python dates back to 1991, when Dutch computer scientist Guido van Rossum released the first version of what had been a hobby project up until that point, its name being a reference to perennial programmer favourites, Monty Python. Since then, van Rossum has released Python as an open source project, with himself serving as BDFL, or benevolent dictator for life, as is typical in many open source computer science projects, and representing a status similar to that of Linus Torvalds in the Linux project, or Larry Wall for the Perl programming language. Unlike many other programming languages of similar age, Python has yet to see a decline in popularity. It oftentimes ranks as a top 5 language in terms of popularity in various cross-language rankings.
The version 3 split
The third major version of the Python programming language was released in 2008, and marked a split not only in terms of syntax and language compatibility, but also in the community as a whole. The Python team had come to the conclusion that certain things in the 2.x branch of Python needed to be changed in such ways that maintaining perfect backwards compatibility was no longer possible, for instance with regards to how text and unicode is treated by the two branches of the language.
The release of Python 3.0 did mark the coming end of any major language feature updates to the 2.x branch, even if it has seen quite a few important improvements in the time since. However, for a long time, a prevalent problem and frequent source of headaches in the Python community was the fact that many industry-standard tools and libraries were built for Python 2.x and were simply not available for the 3.x branch. It is only lately that reality has begun to catch up to Python 2 and the community is starting to see something that is at least approaching unity behind Python 3.
For any language as versatile and ubiquitous as Python, it is bound to be found in a large number of high profile applications and websites. Among those web sites whose front or back end have been built largely with Python, we find Youtube, Quora, Pinterest, LinkedIn and Reddit.
Django and Flask
While these two web frameworks are probably the two most used for Python, a reminder is in place that there are several other frameworks that serve similar purposes. Of the two, Django stands out as the fuller featured, more frequently used, but also somewhat bulkier alternative. While it is highly configurable, Django comes with a lot of features, such as a full-fledged MVC framework out of the box, and gladly takes care of any of the mundanities that every web application faces.
Flask is a bit different in philosophy, in that it weighs in at far less in terms of scope and size, and is also less opinionated on how you approach things, and is thus more built towards configurability. Ultimately, they represent two battle-tested frameworks, capable of serving just about any type of web based application, utilizing developers’ Python proficiency.
Python in science
Python has a long standing tradition as a language used for scientific purposes. Over the past decade or so, following the release of first NumPy and later SciPy that position has been successively strengthened to the point where Python is the de facto go-to language for science, superseding older languages such as Fortran. Most users of these libraries would interface directly with SciPy, which in turn relies heavily upon NumPy.
With the explosion of interest in and applications for machine learning in recent years, Python has proven to be a popular and powerful language in this field, largely due to scikit-learn. Built at Google on top of SciPy and released as open source, scikit-learn is being used by such technology giants as Spotify, Booking.com and Evernote.
The list of languages at least in part inspired by Python is long indeed. The following is a non-exhaustive list of what has followed in trails blazed by Python:
The Go language
Released by Google in 2009, Go was described as follows in the initial communiqué.
Go combines the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++.
The offside rule
One aspect of Python that will prove to be puzzling for newcomers from languages such as C++ or Java, is the Python notion of indentation carrying syntactical importance, and not merely existing for readability purposes. This is colloquially known as “the offside rule”. In practice, this means that for Python to understand that a set of lines belong to the same code block, they need to share the same indentation level. In practice, this type of indenting usually happens in traditional languages too, but Python’s way of imposing this as a requirement means it can do away with symbols such as curly braces and semicolons as a means to increase readability. Among the notable languages that employ a similar scheme are Julia, F#, Nim and Haskell.
Would you like to license a Python code challenge to analyse the Python skills of your candidates?
Looking to find out more about take-home code challenges and what makes a good challenge?