Learning Enough Python to Land a Job

shutterstock_244148398

If you want a job programming in Python, prepare to do a lot of work beforehand. The language is easy to pick up, but you need to do more than just learn the basics; to get a job, you need to have a strong understanding of some pretty complex processes.

Python is a general-purpose language, which means it isn’t used for just one purpose such as Web development. Rather, it’s used in many different industries, and the industry in which you choose to work will determine how you actually learn the language.

For example, if you’re hired to write apps that interact with operating systems and monitor devices, you might not need to know how to use the Python modules for scientific and numerical programming. In a similar fashion, if you’re hired to write Python code that interacts with a MySQL database, then you won’t need to master how it works with CouchDB.

Check out the latest Python-related jobs.

Therefore, I’m going to suggest that there are three levels to learning the basics of Python:

  • Learn the core language itself, such as the syntax and basic types; learn the difference between Python 2 and Python 3.
  • Learn the commonly used modules, and familiarize yourself with other modules.
  • Learn the bigger picture of software development with Python, such as including Python in a build process, using the pip package manager, and so on. This involves learning about different databases and other technology, depending on where you want to work.

True Beginners

At a basic level, Python is an easy language to learn and use. You can quickly learn how to create variables and loops, for example, and expand beyond that to tuples, lists, and dictionaries. Any Python newbie needs to know which types are immutable, which means an object of that type can’t be changed (answer: tuples and strings). With immutable types, the object’s value itself can’t change, but the variable containing the object can:

[python]a = ‘abc’

a = a.upper()

[/python]

In the above example, the original string “abc” did not change, as strings can’t change; instead, we calculated a brand new string, “ABC,” and stored that back into the original variable. Knowing that sort of thing should be second nature to anyone who seeks to understand how Python works.

In addition, anyone learning Python should know how the language deals with object-oriented programming, and how to create classes and instantiate objects. It’s also important to know how to use exceptions and exception handlers, and how modules interact. (For key insights, I recommend you read and understand the Python Language Reference; if you’re ever unsure about syntax or how the language works, or are arguing with a coworker, that website will have the final word.)

The Python beginner must also know how Python 2 and Python 3 are different. Python 3 has been out for quite some time, but there are still a lot of projects that rely on Python 2. If you’re interviewing for a position, you’ll want to ask which Python they’re using; if you’re knowledgeable, you can then speak about the differences.

Slightly More Advanced

Once you’ve mastered some basic concepts, you can move on to slightly more advanced concepts. If you’re familiar with languages such as JavaScript, Python’s strong typing might surprise you; for example, you can’t just add “hello” to “10” to get “hello10.” (You’ll get an exception.) This is meant to prevent bugs in your code, and it means you’ll need to become very familiar with dynamic typing, strong typing, duck typing, and how Python implements all three.

C++ programmers coming to Python might be surprised that you don’t need to provide an interface for a parameter in a function; if the object passed in has the required methods, you’re good to go. This makes polymorphism easy.

From there, it’s important to know about closures and “first class objects.” Python supports both, which leads to a concept called decorators, which this article explains very well. Here’s an interesting example of closures, modified from one offered in the linked article; this is entered from the interactive shell:

[python]

>>> def outer(x):

…     y = x * 2

…     def inner(z):

…         return y + z

…     return inner

>>> q = outer(5)

>>> r = outer(6)

>>> q(2)

12

>>> q(3)

13

>>> r(2)

14

>>> r(3)

15

>>>

[/python]

The function outer creates a closure with the variable called y, and returns a new function that you can call. I called the outer function twice to create two such functions; then I called those two functions each twice.

Last but certainly not least: Read “The Zen of Python,” which is funny and real, and check out this thread on Stack Overflow for some great suggestions about how to master the language. Go to GitHub and find any of the many popular Python projects; study the code as much as you can.

Side Note: Learn the Modules

The modules are your libraries, your helpers. Know what’s available in the standard library; you don’t have to memorize every member of every class, and every class of every module, but you do want to know what’s available so that when you need something, you don’t go rewrite one from scratch.

Familiarize yourself with each module. Many, such as file I/O, have access in almost every application; know these inside and out. For example, know how to open a file with different access, how to read a file, how to write a file, and how to determine if a file or directory exists. Know how to use the os.path module for file-path joining and normalization, rather than writing your own string routines to handle file paths. Finally, understand the cross-platform implications.

Next: Learn Software Development With Python

There are many tools for integrating Python into a software development cycle. If you want to master the language in a real-world context, learn how to obtain Python packages using pip. You should also learn how to do unit testing, which is fundamental to software development in Python; many people get turned down for Python-related jobs because they can’t answer interview questions in this area. (The Hitchhiker’s Guide to Python includes some great information on unit testing.)

You should also know how to package up Python programs for distribution, and know your way around both the Windows command prompt and Linux bash shell. Any developer worth their salt can use the tools for general software development, from editors and IDEs to git for source-code control.

Targeting an Industry or Technology

Once you’re familiar with all the above, you can begin to move into industry-specific knowledge.

If writing C or C++ extensions to Python interests you, check out this resource. If Web development tickles your fancy, you’ll need to understand the difference between a Web server written in Python that you can extend, and a Web framework that allows you to write your own server software in Python. If you go the Web route, you’ll need to become proficient in Web technologies—not only other languages such as JavaScript, but how to develop Web-scalable software.

There’s also some crossover between specializations. For example, if you’re building Web server software in Python that runs on a cloud, you might need to know how to build cloud-monitoring and management tools (possibly in Python as well). Those tools include Amazon AWS SDK for Python, or the OpenStack’s official clients, which are also written in Python.

If you want to land a job in a scientific industry, you’ll need to know the various scientific and numerical modules inside and out, and have strong skills in writing tight algorithms. For jobs in high-performance computing, you need skills such as concurrent algorithms, SIMD vectorization and multicore programming. For a full list of how to use Python in a work context, check out the dedicated page for applications for the language.

Image Credit: jannoon028/Shutterstock.com

Comments

13 Responses to “Learning Enough Python to Land a Job”

June 12, 2015 at 4:33 pm, Clued beginner said:

There is little to no reason NOT to use Python 3 unless you are working on legacy code.

Most python pros like david beazley, Raymond Hettinger, and Miguel Grinberg are using Python 3.

Reply

June 12, 2015 at 5:00 pm, Nightcrawler said:

This sounds like it could take months, if not years. What if you’re flat broke and need a job now, not six months to a year from now?

Reply

June 13, 2015 at 1:58 am, Practitioner said:

@Nightcrawler – your comment sounds unrealistic. If you don’t know Python you can either try for a job using the programming language(s) you DO know, or you can try interviewing for Python after just a little study and cross your fingers. If you don’t know any other programming languages then either find a family member to work for, or go into another line of work – you can still study up on Python in your copious spare time.

Reply

June 13, 2015 at 5:34 pm, Nightcrawler said:

I do not understand why you felt my comment was “unrealistic.” I do have another, non-tech related job, but I earn only $10.00/hour. It’s not enough to live on, and if I don’t find a way to earn more money, I’m going to end up with no place to live.

I have no living family.

I’m working on a master’s in MIS; I already have an MBA and a BS in Math/CIS. Between work (because I earn so little, I work seven days a week) and finishing my MS, I don’t have “copious” spare time. I’ve been exposed to Java, C, PHP, C++, HTML, CSS, and SQL, but I’m not an expert in any of these languages.

I’ve been studying Python because I read the language was very easy to master, and it is, on a basic level; after less than a week, I was able to write a little Fizz Buzz program. However, this article took me aback; it made it sound as though one needs to be an expert to find a minimum-wage, entry-level Python job.

If I sound frustrated, it’s because I’m in a desperate situation. I just want to fix the problem and find gainful work. I’ve got a massive amount of education, and it’s baffling to me that employers consider me on the same level as an unskilled laborer with a GED. I don’t expect six figures. If I could earn $15.00/hour, it would be enough for me to continue living indoors.

Reply

August 02, 2017 at 5:41 pm, Joe Mellem said:

Quit school already. If your other degrees have only enabled you to make $10.00 per hour why continue down that road. Pick what you love to do and just do it. Specialize! Pick a programming language or database or operating system, etcetera. Become proficient at it and you will make six figures easily.

Reply

June 19, 2015 at 9:24 am, Elise said:

Nightcrawler, I suggest you try substitute teaching during the school year. Contact at least three local school districts and ask them how you can start substitute teaching.

Reply

June 20, 2015 at 4:15 am, rateryed said:

Interesting piece. However, when you say “you can’t just add ‘hello’ to ’10’ to get ‘hello10.’ (You’ll get an exception.),” the phrasing/styling is a bit misleading. It is, as you know, perfectly valid Python to write “a = ‘hello’; a += ’10’; print(a)” and end up with the result “hello10.” I assume you meant that you cannot write “a = ‘hello’; a+= 10; print(a)” and end up with “hello10.” In brief, your use of quotation marks around both the string and the presumably intended integer may confuse.

I also think you overstate the importance of closures–while a Python programmer should know they exist, even a brief review of a Google query on the topic indicates they are hardly an essential part of the toolkit Python provides. I have yet to find a compelling use case for them, though the web is awash in trivial examples of how they work.

@Clued beginner: if you’re supporting an enterprise environment running the latest RHEL/CentOS (as of right now, 7), the base Python install is still 2.7. Technically, it would be preferable to install the Python 3 SCL and write to that, but depending on the way the environment is run, you may well have to develop against the base.

Reply

September 26, 2015 at 7:28 pm, Quincy said:

@Nightcrawler
How has situation changed since your last comment?

Reply

December 04, 2015 at 10:09 am, Thomas Roberts said:

Most companies require you to pass a coding test as part of the screening process. It might be a good idea to take some of these tests to get familiar with what they are looking for. TestDome has a good one: http://www.testdome.com/Programming-Tests/Python/45

Reply

September 12, 2016 at 4:19 pm, guy said:

I recommended getting a job as a front end developer. All you need to know is HTML, CSS and Javascript and I am sure you can land a job as a front end developer. You will get a livable wage sooner or later and you can study python on the side for a better pay check later down the road.

Reply

December 07, 2016 at 6:06 pm, Raja ram Mummadavarapu said:

@rateryed
You could write
print ‘hello’+str(10)

https://repl.it/Ejvh/0
Please click on run.

Reply

August 27, 2017 at 1:16 am, @vas said:

Comparatively which would be a better option for a beginner – studying python basic+advanced for data science or doing an oracle OCA and OCP certification just to get the entry into IT.I finished my masters in information and communication technology 5 years back , since then i have been working in a totally different field and would like to get back into IT.@thank you

Reply

October 23, 2017 at 7:54 pm, EC said:

Question for Nightcrawler: Did you resolve your issue? If not, you should be targeting something related to general technology as a support person, then focus on Python after you land something concrete. Systems Administration/Support would probably be more along the lines of your educational level. Depending on which state are you located in, will determine how successful you’ll be with your search for PyDev work. California, NY, Chicago IL, TX, etc. are your best bets.

Reply

Post a Comment

Your email address will not be published.