PyDev of the Week: Matthew Makai

This week we welcome Matthew Makai as our PyDev of the Week! Matthew is the creator of Full Stack Python and he also works with Michael Kennedy on his Python for Entrepreneurs video course.  You might also want to check out what he’s been up to over on Github. Let’s take a few minutes to get to know him better!

Can you tell us a little about yourself (hobbies, education, etc):

My name’s Matt Makai and I’m the creator of Full Stack Python as well as a software developer currently working for Twilio. My wife and I live in Washington, D.C., although we just moved to D.C. from San Francisco a few months ago.

My education ran through the Virginia-based public university system: James Madison University B.S. in Computer Science, Virginia Tech Master’s in Computer Science and then University of Virginia for a second Master’s degree in Management of Information Technology (essentially an MBA applied to software).

Computer science and programming are my main passions, but I earned the business degree so I’d be able to hold my own in discussions on marketing, finance, corporate strategy, etc. UVA’s program was a really enjoyable curriculum for becoming a more well-rounded software developer.


Why did you start using Python?

It’s now been 10 years of loving to code in the Python ecosystem for me! Back in 2007 I was a Java developer by day but would hack on Python side projects at night. Over time I found I was getting more built in a couple hours at night using Python than in a full work day working in Java land.

A big “thank you” to the fine folks working on the Django web framework for the amazing documentation that allowed me to teach myself Python development and move into working with Python full-time.


What other programming languages do you know and which is your favorite?

I have some experience with Swift for iOS development. My Java is a bit rusty but it’s been fun working with some of the new Java 8 features in the Spark framework, which I used to write a fun tutorial earlier this year. Python is by far my favorite language but setting that aside Swift has a lot of potential.


What projects are you working on now?

My primary side project since 2012 has been Full Stack Python (source code repository). I push Full Stack Python updates almost every day to pages that describe topics ranging from Object-Relational Mappers to Template Engines, and to the tutorials blog.

It’s been a real pleasure working with Michael Kennedy of the Talk Python to Me podcast on the Python for Entrepreneurs video course. I’ve also been working on updates to my Guide to Deployments book, although it’s harder to find large blocks of time for side projects as my wife and I just had our first kid.

Which Python libraries are your favorite (core or 3rd party)?

The answer to this question could have its own blog post! I discussed some of my favorites in the PythonBytes podcast episode #38, including Pelican and Bokeh. Ansible and Fabric are also high up on my list of favorites as well because I do lots of web development and deployments work.

How did Full Stack Python come about?

Back in 2012 I was going to the DC Python meetup every month and was talking to junior developers who were struggling to understand the Python ecosystem. After a lot of emailing with folks I decided to put what I wrote about the Python web stack online. I picked the name “Full Stack Python” because was an available domain name. Little did I know the name would stick and I’d still be working on the project many years later.

I put up a link on the /r/python subreddit after working on the site from late 2012 until early 2014. Developers on there were really supportive of the effort so it gave me motivation to keep working. Then that summer the site got another big boost with a front page Hacker News hit. The traffic and feedback from both events helped me to the site’s future directions. I also realized the time I was putting into the project was valuable to the broader Python community so I’ve kept working on it daily since then.

What are some of the things that you learned while running the site?

The fragmented nature of open source can make it difficult for beginner developers to know what they don’t know. To be a productive programmer you need to know more than just a programming language’s syntax. You have to understand what open source projects in an ecosystem can solve the problems you’re working on. For example, if you’re a Ruby developer who uses Sidekiq and then work on a Python project, you’d want to know what equivalent task queues to use, such as Celery, RQ or Huey.

Also, I’ve found that experienced developers understand the difference between concepts and tools, just like how I group topics on the site. Concepts, such as web frameworks, are generic and have different types of implementations. Tools are the implementations of a concept. For the web framework concept, a few example tool implementations are Django, Flask, Pyramid. Within a concept there are many ways to implement a tool. Every tool comes with its own implementation philosophy, advantages and disadvantages.

Many junior developers often discover a shiny new tool and say “cool, I’ll use this on my project!”. However, without understanding the concept behind the tool and what problem it solves, you just added a bunch of complexity to your project without a clear understanding of the trade offs.

Is there anything else you’d like to say?

I feel so fortunate to be part of our amazing Python community. I want to give a huge shout-out to the folks who run organizations such as the Python Software Foundation, Django Software Foundation, NumFOCUS and many others like it that allow open source projects to flourish. It’s difficult, important work but the people behind those organizations often don’t get enough credit for making the community great. So thank you!

Thanks for doing the interview!