PyDev of the Week: Andrew Knight

This week we welcome Andrew Knight (@automationpanda) as our PyDev of the Week! Andrew is an entrepreneur who co-founded Reformed Menswear and the site was created using Python and Django. If you have a moment, check out his Github profile to find out what Andrew has been contributing to. Andrew also has programming blog that you might want to see. Let’s take a few moments to get to know him better!

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

Professionally, I’m a software engineer who focuses on testing, automation, and CI/CD. My specialty is building test automation frameworks. I’ve worked at major software companies around Raleigh, NC, I run a software blog at automationpanda.com, and I also do independent consulting.

I’m originally from Baltimore, Maryland, USA. I first got into software in 9th grade, when I learned how to program math formulas into my TI-83 Plus graphing calculator. Coding was addictive! I went on to earn a combined BS/MS in Computer Science at Rochester Institute of Technology in 2010, and I have worked in the software industry ever since.

I’m a pretty busy guy, but I enjoy cooking, craft beer, and playing Nintendo games. Right now, I’m deep into The Legend of Zelda: Breath of the Wild. I’m very active in my local church: I once served as an usher, and I’m currently teaching a class in systematic theology. My wife and I like to travel, too. We’ve been all over the USA, China, and even Thailand, with plans for more fun trips to come.

Why did you start using Python?

Why not? Python is awesome!

I first started using Python as a high school senior for a computer science class. At that point, I was still a young programmer with experience primarily in Java and C++. Python impressed me with its concise and elegant code.

Fast forward to 2015, when I started working at MaxPoint: I picked up Python again for the first time since high school for test automation. MaxPoint had done a little bit with Python automation but not much. Their Thrift service framework also had Python bindings, which made integration even easier. I started developing automation modules for customized logging, services, databases, SSH, environments, and inputs. The modules could be used by any test framework: unittest, nose, pytest, behave, etc. I also developed a few Python command line tools to improve processes and assist manual testing. Python made it quick and easy to develop tests and tools.

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

My main four languages are Python, Java, C#, and JavaScript. Right now, C# and Java are for my day job, Python is for independent projects, and JavaScript pops up everywhere like whack-a-mole. I’ve used TypeScript with Angular. At NetApp, all I did was Perl. I’ve also used C/C++, AspectJ, Scheme, Haskell, R, and even COBOL (which was a scary past).

By far, my favorite language is Python. I strongly believe that good software design is as much art as it is engineering. Languages should help the developer express design efficiently without getting in the way. Pythonic code is great at being exact yet concise.

I also believe that Python is one of the best languages for test automation. Tests must be readable to be maintainable. And Python’s rich ecosystem of test frameworks, packages, and tools makes it easy to build automation solutions like LEGOs.

What projects are you working on now?

Currently, I’m developing two different websites using the Django framework. One is for Reformed Menswear, a suit company I co-founded. I built a backend system for client data and order processing. The only pages needed are Django’s automatically-generated admin because it’s a private backend site! When taking an order, we enter measurements, pictures, and style points through the admin. Since our tailors are in China, an admin action generates order specs as PDFs in both English and Chinese. The site is hosted in Heroku, with pictures stored in Amazon S3. I have plans to add an Angular frontend with a service layer using Django REST Framework so that customers can enter their orders directly. (That new frontend will ultimately replace our current Wix website.) The second Django site is a similar order processing system for one of my wife’s businesses.

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

Other than Django, I really like the test automation packages. My favorite Python test framework is pytest because it is so powerful yet so minimal. Packages like requests and Selenium WebDriver make testing a breeze. The standard logging module takes care of test logging. Virtual environments handle testing dependencies. And pretty much any other testing task likely has a package for it in PyPI.

Do you ever go to conferences or meetups?

Yes! I will be a speaker at PyCon 2018 in Cleveland, Ohio this May. I will deliver a talk entitled “Behavior-Driven Python,” in which I will show how to use Behavior-Driven Development with Python test automation. This will be my first time at PyCon, and I can’t wait.

I also spoke at PyData Carolinas 2016, where I delivered a talk entitled “Testing is Fun in Python!” I gave an overview of the major Python test frameworks. The talk was uploaded to YouTube. A few months later, I gave a similar talk to PyLadies RDU.

Is there anything else you’d like to say?

Thanks for taking the time to interview me. Python is awesome. Check out Automation Panda and look me up at PyCon 2018!

Thanks for doing the interview!