Learning Enough Python to Land a Job


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()


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:


>>> def outer(x):

…     y = x * 2

…     def inner(z):

…         return y + z

…     return inner

>>> q = outer(5)

>>> r = outer(6)

>>> q(2)


>>> q(3)


>>> r(2)


>>> r(3)




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.

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

  1. Clued beginner

    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.

  2. Practitioner

    @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.

  3. Nightcrawler

    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.

    • Joe Mellem

      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.

  4. 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.

  5. rateryed

    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.

  6. 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.

  7. 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

  8. 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.

  9. Wow, what an interesting read.
    @all posters/commenters, my case is quite similar to nightcrawler’s own.

    Well, I’m a graduate of Medical lab science and lost interest totally while in school. I picked up interest in computer related stuffs (eg programming) even before I gained admission but had to choose MEDICAL course because I had no option and that was what was expected of me..

    Well, like I stated earlier at the start of my post, I’m done with MED lab science. I have picked up python as the last resort of all the programming languages I have worked on. Need I add that I’m quite familiar with basic syntaxes of PHP, and JAVA.

    Now, I’m also much balanced with python to a greater extent. Although I’m having some difficulties with OOP in python as I have come to realise I will actually need it to become satisfied with python so I could get a job.

    I need you all to help me out on the following pls.
    1. Recommend good books I could use to master and perfect OOP in python.
    2. Recommend good websites where I could actually test my python efficiency.
    3. How long will it take me to be a real time python developer.
    4. I need people who I can reach out privately, who will guide me and motivate me along this path that I have chosen.

    • Hi Peter,

      Having been a professional coder in Cobol and Delphi from 1998 to 2016, I quit to take a year out, and rather than get into the rather dull world of corporate programming again (I’m 43 now so I’ve got a longing to do something more meaningful) I decided to try to get into Bioinformatics, helping out with analysis of DNA, finding cures for diseases and so forth.

      Python seemed like the language of the science world so I chose that. I kicked it off by completing the Python 2 course on codeacademy.com (Python 3 course wasn’t available when I started – it is now but it’s not free whereas the Python 2 course has always been free).

      I read the (free) book on Javascript called “Javascript Succinctly” and watched a few youtube videos on HTML and CSS, then put together a program to test vocabulary in foreign languages (I’m trying to learn German). That program uses the Flask framework, so it’s Javascript client, Python server.

      The program is not finished but it is usable.

      Next up I joined (recently) the codewars website, where you can complete little challenges writing algorithms set by other users. Free too and while some of the instructions on some of the challenges are slightly difficult to understand, once you get into it it’s really quite interesting.

      I live in London so I’m hoping that Bioinformatics will be easy enough to get into (plenty of jobs here apparently) once I’m up to speed with Python (I’m also reading a book on Genomics so that helps me but of course is no use for someone who just wants to learn Python!).

      There are 3 main documents that I’ve seen on the official Python website – a Tutorial (which is a nice intro to the basics of Python), a Reference Guide (which is a precise but horrible document to read if you’re trying to learn the language, because of the way it’s written) and a Library Reference (about 900 pages explaining the built-in libraries available in Python) . All free. I’ve read the tutorial, about half of the reference guide, and very little of the library reference (I just use this to read about specific topics rather than spending another decade reading the whole thing!).

      The main thing is to actually start practising programming, and the best way to do that is codeacademy (NB that it IS Python 2!) and codewars (nothing to do with war!). The nice thing about codewars is that after you solve a problem, you are allowed to see how other coders solved the same problem which can be a very useful way of picking up new techniques.

      There are also some very good tutorials on YouTube for Python. Search for Socratica for example, but there are some others presented by Americans who speak clearly. I say that because there are quite a few videos by people with a strong Indian accent (speaking in English) and while these videos are helpful and often well made, they can be difficult to understand just because of the accent!

      Good luck with it all !! 🙂

  10. Well @nightcrawler you got a hell of attention from so many people
    Well I started python 1 week ago and I am able to make basic program .
    I would like you to give me some guiding how to go on.

  11. hey guys, mine not far from all of you completely.
    my own challenge right now is how do i learn this python fast and adapt to it. Everyday i open python, IDEL, and pycharm but i’m not happy with the level i’m right now cause i still feel like i don’t know what am doing reading and practicing at home on my own without internet.. everyday bi wake up with the hope of something new to pop up in my head but i just cant help out… i will really appreciate to have someone to reach out at anytime and help me i need a friend or rather someone to guide and help out all through this time i really want to learn python but i’m just stock and i believe maybe i’m not doing it the right way… please guys help me.

    how can i really learn python and get acquainted easily…

    i have this books at my disposal
    1. Beginning python from novice to pro
    2. Python by Andrew Johnson
    3. Head first python
    4. How to think like a computer
    5. Learn python the hard way
    6. Programming python 4th edition
    7. Python cook book
    8. Python crash course
    9. Learning python

    if you know all these: which do you recommend i start with?
    and how can i be a good programmer learning python with all this books and please let me know if i need more than this book to be a pro on Python programming.

  12. Anyone can learn python relatively quickly. It’s like learning any syntax.If you were learning Spanish, you’d likely learn the basics first, but immediately you could start saying sentences.

    If you know anything about coding, most coders are not completely fluent. Most of the job is looking things up on a coding forum like github since most other people have figured out the solution to a problem and posted it there. The same way you might know Spanish but still use google translate for the stuff you don’t know.

    Learn how the basic logic works, then try to build something that you want. Most coders learn because they want to create something, not because they want a job. Also, many coders who are making top bank have garbage code. I know people making tens of thousands of dollars per DAY with apps they made themselves. You’ll never get that working for an employer, but coding jobs do pay well.

    Most coders did not go to university to learn it. There are 12 year olds coding their own scripts and programs. It’s like going to the gym. It’s not that difficult to do, but it can be difficult to stay committed. I’d also recommend learning javascript simultaneously and focus on web coding.

    html – 1 hr to learn
    css – 10 hrs to learn
    javascript – 60 hrs to learn
    python – 60 hrs to learn

    You don’t need to be an expert to make the things you want either. Just like the gym. You don’t have to be the huge guy on steroids with 2000 hrs to look good. You can look good after 3 months. The main thing is that it’s easy and you don’t need to know everything. Do you know the entire English language? Unlikely, but you can still get your point across and learn more as you go. Same in coding.

  13. We are living in very strange times. 31 years ago I did a COBOL programming course for 4 months. I immediately found many jobs to choose from after just that 1 course. Nowadays everything has changed for the worse. You can have a university degree or 2 in Computer science and because you have no real work experience, you can struggle endlessly to find any job at all. I have been retrenched from my company and started doing Python, Javascript, HTML, CSS a year ago. Can I find a job now with all my years experience and 1 year in the newer technologies – NOWHERE AT ALL !!!

  14. Sumbul K.

    Hello, the article is very useful but I have a question. I’m a final year student (CS) and I’ll be moving to Germany next year in February. The thing is, I’ve been familiar with C, C#, C++, and Python. But to make a living in Germany, I have to master in any of one them. What do you guys suggest for a newbie?
    P.s: As for now, I have a keen interest in Python but I don’t know If I can embark on my professional journey?

  15. I am in a somehow similar situation that Nightcrawler described. I soon finish my diploma thesis in Philosophy on ba level. I have the disadvantage of not being a native English speaker. Though I study in that language.
    A friend advised me to get into SQL. But… I do not want to stay stupid and just get a job as I believe it is required to think in the vast scope of tools and constantly progress with your knowledge to get ANYWHERE
    How would you advise me? To master my SQL understanding and only after that maybe to develop in other languages?
    Or work with few languages simultaneously so I can progress slowly nonetheless understand many processes and think with the senior developers for instances in a bigger picture? If the latter, then what would be a big picture in a timeline? What is the advantage of taking a single SQL path? What soft skills are required to feel at home in IT?