PyDev of the Week: Kirk Byers

This week we welcome Kirk Byers (@kirkbyers) as our PyDev of the Week! Kirk teaches several different courses about Python and network automation. Kirk also has a short video on that topic over on O’Reilly Media.

Let’s spend a few moments getting to know Kirk better!

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

I studied Electrical and Computer Engineering at Oregon State University. This was in the early nineties, so the programming languages were Pascal, C, and assembly. Since we were “sparkies” (electrical engineers), we did quite a bit of assembly programming.

Right out of college, I worked for a few years for Intel, testing and designing motherboards for personal computers. I then moved into being the main engineer for a small Internet Service Provider in New Jersey. I managed their modem pools, servers, and network. I was very much a jack-of-all-trades. I dabbled with Perl quite a bit as part of this work.

Eventually, I decided to focus on network engineering and dove into the Cisco certification process. At that time, this was a pretty standard path for someone interested in network engineering.

I then spent a longtime doing network engineering work. I ran my own consulting business for several years.

For hobbies, I am very into running, so hopefully, I will be somewhere running around on Marin trails when you read this.

Our family also loves playing board games; we typically will play at least one big board game each weekend. A couple of our current favorites are: Terraforming Mars and Caverna.

Why did you start using Python?

At a certain point, I became tired of network consulting and wanted to try to build a business that scaled more easily (or at least didn’t scale in a dollars-for-hours manner). Consequently, I became pretty interested in trying to build a cloud-based network automation service.

As part of this process, I realized I needed to expand my programming skills and that I also needed to learn a new language.

At the time, I debated between using Ruby and Python and decided that Python was more me so I dove into learning Python and Django. This was about a decade ago.

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

Over time, I have tinkered with various languages: Pascal, C, Perl, Go, Ruby, Python, PHP, JavaScript. Realistically, I only know one language, Python, with a meaningful degree of depth.

If you only have one horse in a race–you tend to prefer that horse, so I will have to go with Python as my favorite language.

What projects are you working on now?

I run multiple online courses every quarter and use automation to build out and manage the required lab environments. Consequently, I have a lot of internal automation. This involves Ansible, Nornir, Terraform, and miscellaneous Python scripts. I also manage and maintain the website for my business, so I tinker here as well. The site uses Django.

I am also the maintainer of a Python library named Netmiko, so I spend quite a bit of time working on issues, pull requests, and improvements for this library. Netmiko is an automation library that makes it easier to automate legacy network devices.

Besides Netmiko, I also do some amount of work on both the NAPALM and Nornir open-source Python libraries.

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

Relatively recently, I have started using the Rich library and quite like it (especially for printing out complex data structures). I also like using Pdbr as a Pdb/iPdb replacement. The debugger code listing is a lot more visually attractive.

In the networking world, I like Nornir. Nornir is an automation framework that provides concurrency and inventory management. It is largely used for network automation.

How did you get started doing technical training?

At a certain point, I knew my SaaS network management business was not going to succeed and I really did not want to continue consulting, so I needed an alternate plan.

At the time, I could see that network automation was going to be much more important than it historically had been (i.e. that network automation was going to be more broadly used and that consequently many network engineers were going to need some programming skills).

Consequently, early in 2014, I started a free course on Learning Python for Network Engineers and this course was very successful. In mid-2014, I then expanded upon this free course and started offering paid training courses in Python network automation. I eventually added additional training courses on Ansible, Nornir, and Netmiko.

What are the top three things you’ve learned from your students?

The students who ask the most questions invariably are the ones who get the most value from a course.

It is such a strong pattern that you could probably invert it. In other words, when you are learning something new, make sure that you are the one who is asking the most questions. Obviously, they would need to be genuine questions and you would also need to be diligently working on trying to find the answer to them.

A second thing I have learned is that complex data structures can be very challenging for many people. Since these people can be relatively new to Python and potentially new to programming itself, seeing an enormous combination of lists and dictionaries can paralyze them.

They just don’t know how to handle this and really need a systematic way of approaching this type of problem.

A final thing I have learned (or at least that has been strongly reinforced) is that programming is about actually writing code. You can read books and listen to Python videos all day, but if you aren’t actually typing code, you ultimately won’t learn and retain much that is of long-term value.

Once again, this will be another big indicator of who will learn the most in my courses, i.e. the people who spend the most time working on the exercises. Which students go through the process of solving the exercises and figuring out the problems therein.

Thanks for doing the interview, Kirk!