John Strickler is an Accelebrate instructor, Python guru, and got into technical training in a twist of fate. He also makes good chili. John sat down with Accelebrate's Julie Prince to discuss teaching, how he stays up to date with Python, advice to anyone getting into programming, and more.
Q: How did you get into programming and technical training?
A: Both of those were a fluke and both of them were largely because of my lovely wife. I was actually at one point an English major and because of that I was working in a bar and my wife said, "Hey, they are doing some computer classes over at the community college," where she happened to work as an information specialist. And I'm like, "No, computers are terrible. I'm an English major. They dehumanize humanity and everything." I was a little bit resistant and then I, of course, because I trust my wife, she's a smart person, I went over and took whatever it was, microcomputers 101 and even though it was on an Apple 2E and we peaked and poked our name on the screen and it was not anything like a modern computer experience, I'm like, "Hmm, this is kind of cool." As far as how I got into training, like so many people who change careers abruptly, it was because I got fired from my day to day programming job. Laid off is what they say because they were reducing the size of the company but fired is fired, the way I go.
And so, anyway, I was kind of unemployed and coincidentally a friend again of my wife's, who was in the non-technical training biz, my wife was in the non-technical training biz, a friend of hers who was in the technical training biz called her and said, "Do you know anybody who could teach some Unix classes?" And Claire said, "Huh. I think John could," and that's how I got started. So, it was a fluke all around.
Q: How did you get into Python?
A: Well, another friend. I've always depended on the kindness of strangers. A friend of mine and I were talking, and he was like, "You know there's this language, Python, that you should learn because a lot of people are using it." This was many years ago, I'd say '93, '94, just guessing. "There's this language, Python, a lot of people are using." So, I got Python installed on my computer and started using it and I hated it. There were two or three things in Python that I just didn't care for that everybody stumbles over and I'm like, "Yeah, this is, I don't know. It's kind of weird." At the time, I was using a lot of Pearl and so I put it aside. But then a few months later, I'm like, "My friend is really smart. I should give it a try." The second time, for whatever reason, I had the right attitude, jumped right in and I've never looked back and I've programmed almost exclusively in Python since that day. It was a big deal.
Q: As a Python veteran, what are some of the main things to start out with if you're, say, a JavaScript or a Java developer that wants to get into Python, are there any tips and tricks or something that you'd recommend starting to look at?
A: Well, like any programmer, the right thing to do is to install Python and just start writing some scripts. Now if you're a JavaScript programmer, you're going to be very web app front end oriented and that is not Python's strong suit. So that's going to be more of transition. If you're a Java programmer then you can do a lot of things you can do in Java in a lot less code, although I find that Java programmers who take my classes find that Python's version of object oriented programming is if not wrong then is very dissimilar and they're like, "Why doesn't it do it this way like Java says?" And I always have to say, "Well, there's more than one way to do it and Python happens to do it this way."
Q: What are some pet peeves around Python that people struggle or have problems with?
A: One of the things that everyone struggles with, including me, when they're first learning Python is the fact that unlike most languages nowadays which use curly braces to delimit a block of code, Python uses indentation. Most of us Python programmers think it's the best way once we learn it and get over that road bump. But a lot of people come in are like, "Uh, you mean I can't line up my curly braces to delimit a block?" It turns out that in Python it means that you always indent things correctly, which means they're always correctly indented or it won't run, which turns out to be a big bonus but it's a big roadblock for people to get over. The other bump there in Python that people coming from especially Java, C++, C Sharp, is that it is a dynamically typed language. This gives you a lot of freedom, but some people are uncomfortable with that freedom.
Q: How do you stay up to date on Python? Do you have any favorite learning resources?
A: Well, of course, on the web there are too many resources but basically, I subscribe to a couple of news groups, list serves, for Python. But the main thing that I use is probably Reddit area of R Python.
Because that's used for announcements so whenever anything is new in the language, a new library's released or a new feature or if people are mad about something or happy about something, it usually gets posted there pretty quick. So that's kind of my go to and also of course keep up with Python's homepage, python.org because announcements will show up there. And I tend to, once in a while, just go browse the documentation because you always can pick up something you hadn't seen before.
Q: What are some of the most frequently asked questions in your Python classes?
A: That's a really good question because I have such a wide variety of students across a wide variety of locations and disciplines. I was trying to think of if there was any particular frequently asked question and I don't know if it's a specific question but usually it's something along the lines of, "But why does Python do this?". Sometimes there is a very specific answer and sometimes it's just because Guido said so, Guido being the creator of Python 20 some years ago. Or, "Why is it this way? Why didn't they do it that other way?" And I just have to say, "Sometimes they just did. We just have to live with it."
Q: How about teaching Python with data science, what have you been doing around that?
A: Well, Python has what's usually called The Python Scientific Stack and it is a set of libraries that work together for data science and these include NumPy, SciPy, Pandas, Matplotlib and Jupiter Notebooks and this is the toolkit that most people use. And then there are some extra toolkits built on those toolkits such as Scikit-learn for machine learning. So yeah, I think a lot of people who are super smart scientists, who are working with huge amounts of data and just want to make some sense of it and Python's a great language for that.
Q: Are you using any specific technologies or tools that are more popular than others?
A: I would say Pandas is very popular because it serves as kind of a front end for some of the other tools and makes them a little easier to use.
Q: What advice do you have for kids or teenagers who want to get into the technology sector when they grow up?
A: Put some language on your language on your computer. Doesn't really matter, I highly recommend Python not just because I live in the Python world but because I think it's an easier language to learn as your first language. C, on the other hand, would be terrible because it's really hard. JavaScript not too bad. Ruby probably okay. Java, probably in the middle but Python's really easy to learn so I would say install Python on your machine, learn as much as you can but also you may not want to be a programmer. You might want to be a network engineer or a sys op or something so in addition to Python I would make sure I had access to Linux, which is cheap and plentiful and just start playing around with Linux, learn how to use Linux, which are really generic Unix commands and tools and get really comfortable with that because if you move on to a serious tech job they're going to want things beyond PCs.
Q: Are there any specific projects that you recommend for people getting started with Python to kick things off?
A: That's a tough call. It depends on your interest. I would say that if you don't know any other languages maybe start with something simple. There is a module called Pygame that lets you make simple games so that's a good thing for maybe a teenager, maybe even a younger person, to put together. You can make action games and Whack-a-mole type games and so forth.
If you want something a little more serious I would recommend maybe the Django framework, which is kind of overwhelmingly huge but if you read the tutorial you can get a website going with not too many steps and by the time you work through that tutorial you'll have good ideas about how Python pieces work together. And then I would pick something that's interesting to you and make a little website, make a game. If you're working on computers, maybe do some little replace some of your shelve scripts or batch files with Python. But, of course, if you're just getting started you don't have any of that so I would just write some little utility. Go through all of your pictures on your machine, go through your machine, find all of your pictures and find the oldest and newest picture. Just make up some tasks for yourself.
Q: What do you do for fun outside of work?
A: I was thinking about this earlier and I was going to say leaf blowing or something but really, I like to cook very much, it's one of my passions. I make pretty good chili. And apple pie. Those are two I could say that I'm pretty good at. There's probably some others but those are good.
Also, traveling including traveling in our camper, getting out in the woods, bicycling and canoeing, kind of outdoorsy things.
Q: Thank you so much. It was really good talking with you again and thank you for all of the amazing work you've done with Accelebrate over the years.
A: Well, it's my pleasure. It's a wonderful place for an instructor to work. So thanks a lot.
Our live, instructor-led lectures are far more effective than pre-recorded classes
If your team is not 100% satisfied with your training, we do what's necessary to make it right
Whether you are at home or in the office, we make learning interactive and engaging
We accept check, ACH/EFT, major credit cards, and most purchase orders
Alabama
Birmingham
Huntsville
Montgomery
Alaska
Anchorage
Arizona
Phoenix
Tucson
Arkansas
Fayetteville
Little Rock
California
Los Angeles
Oakland
Orange County
Sacramento
San Diego
San Francisco
San Jose
Colorado
Boulder
Colorado Springs
Denver
Connecticut
Hartford
DC
Washington
Florida
Fort Lauderdale
Jacksonville
Miami
Orlando
Tampa
Georgia
Atlanta
Augusta
Savannah
Hawaii
Honolulu
Idaho
Boise
Illinois
Chicago
Indiana
Indianapolis
Iowa
Cedar Rapids
Des Moines
Kansas
Wichita
Kentucky
Lexington
Louisville
Louisiana
New Orleans
Maine
Portland
Maryland
Annapolis
Baltimore
Frederick
Hagerstown
Massachusetts
Boston
Cambridge
Springfield
Michigan
Ann Arbor
Detroit
Grand Rapids
Minnesota
Minneapolis
Saint Paul
Mississippi
Jackson
Missouri
Kansas City
St. Louis
Nebraska
Lincoln
Omaha
Nevada
Las Vegas
Reno
New Jersey
Princeton
New Mexico
Albuquerque
New York
Albany
Buffalo
New York City
White Plains
North Carolina
Charlotte
Durham
Raleigh
Ohio
Akron
Canton
Cincinnati
Cleveland
Columbus
Dayton
Oklahoma
Oklahoma City
Tulsa
Oregon
Portland
Pennsylvania
Philadelphia
Pittsburgh
Rhode Island
Providence
South Carolina
Charleston
Columbia
Greenville
Tennessee
Knoxville
Memphis
Nashville
Texas
Austin
Dallas
El Paso
Houston
San Antonio
Utah
Salt Lake City
Virginia
Alexandria
Arlington
Norfolk
Richmond
Washington
Seattle
Tacoma
West Virginia
Charleston
Wisconsin
Madison
Milwaukee
Alberta
Calgary
Edmonton
British Columbia
Vancouver
Manitoba
Winnipeg
Nova Scotia
Halifax
Ontario
Ottawa
Toronto
Quebec
Montreal
Puerto Rico
San Juan