PyDev of the Week: William Cox

This week we welcome William Cox as our PyDev of the Week. William is a data scientist who has spoken at a few Python conferences. He maintains a blog where you can catch up on what’s new with him

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

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

I’ve always loved building things. I spent most of highschool building robots and running a blog about robots. I got a degree in electrical engineering thanks to this, and then went on to get a PhD in signal processing and digital communications. Outside of work I enjoy wood and metal working and being outdoors. Mostly though, I’m a full-time parent.

Why did you start using Python?

I first used Python in graduate school when I needed to automate reading from a serial input device connected up to one of our sensors. I’d been programming for a long time at that point and Python was a pretty easy jump from Perl. My computer science friends were telling me Python was great so I saw it as an opportunity to branch out again.

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

When I was 12 my dad dropped “Teach Yourself Perl in 21 Days” on my desk and said, “you should learn this.” It took me much longer than 21 days, but I’m glad he did that. I dabbled in several languages (PHP, Java, C) but spent many years in graduate school honing my MATLAB skills, due to its powerful plotting and data analysis capabilities. My first job was at a military contractor and they all used MATLAB. This was the early 10’s and Python was really taking off as the language of scientific computing so I was able to convince my boss that it was something I should be learning – he was especially attracted to how much money they could save over thir massive MATLAB bills. I got my 2nd job with my impressive iPython Notebook skills! It was, however, till I started my 2nd job that I finally started learning what it means to write software with a team. It’s a lot different than dabbling on your own.

What projects are you working on now?

During the start of the Pandemic I brushed off www.makeamaze.com, which is Python-based and hosted on Heroku. Lately I’ve been spending more time on http://www.remotedatascience.com/, a newsletter for remote data science and machine learning jobs. Promoting remote work is a favorite hobby of mine and I’ve worked fully remote for many years now. I’m both pleased and skeptical of everyone’s newfound love of remote! I’ve also been doing some 1-on-1 coaching for folks wanting to transition from engineering jobs into Data Science/ML roles. That’s been especially rewarding to teach. In my day-job I write Machine Learning jobs to predict demand for my employer. That’s all Python-based too.

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

I work as a machine learning engineer for a big food ordering and delivery company and I use Pandas daily. `Black`, `isort` and `flake8` make my job easier. We distribute all of our machine learning jobs with Dask and its family of packages. I really love what the Dask community is doing and I gave a talk on how we’re using it last year at PyColorado.

Can you describe your journey from electrical engineering to data scientist?

Data science is a fairly new field and as such there isn’t much of an established path to this career. There certainly wasn’t when I came into it. I’d encountered – and avoided – Machine Vision and so-called AI classes in undergraduate, thinking they were too esoteric and not useful in the real-world. It wasn’t till after I’d finished my PhD and was taking Sebastian Thrun’s “build a self driving car” MOOC for fun that I had the realization that I’d seen all of his equations before in my electrical engineering curriculum, just with different names or applications. I also took Andrew Ng’s machine learning class at the same time and experienced building predictive models for the first time. Subsequently I had the advantage of a fantastic mentor at my first job who encouraged exploring all the new topics around machine learning and deep learning that was happening at the time. I’d also had plenty of experience dabbling with computers, running websites, administering Linux machines, etc. while in high school and college (no parties for me!). That all combined together to let me convince a CEO to hire me as a data scientist at a startup. Being active on Twitter, speaking at conferences fairly regularly, and seeking out like-minded machine learning practitioners have accelerated my career dramatically.

Do you have any tips for people who would like to get into data science from another discipline?

First off, the grass isn’t always greener. Data Science is a hard job – just like most jobs – and only a small portion of it is fun and exciting data analysis or training ML models. Significantly I would focus on being a good *software engineer* first, and a data scientist second. The SWE aspects of the job – dealing with computers, writing tests, anticipating failure modes, and writing repeatable analysis – are the parts that are difficult to learn without spending the hours on it. They also don’t make for great blog posts so there is less written about it than some fancy analysis. All that said, the best way to move forward is by finding a mentor who can steer your learning and keep you from wandering off the track too much. https://www.sharpestminds.com/ would be one such place to find one. Joining some Slack/Reddit/Twitter communities and explicitly asking for a mentor would be another avenue. Start conducting informational interviews (my friend Matt has a good podcast on the topic: Informational Interviewing – Learn Cool Stuff, Meet Amazing People, and Stack the Deck in your Favor — Life Meets Money) to find out if you *really* want to be a data scientist and then narrow down the areas of business you’d like to work in. Make a plan and write down *as you learn*. Documenting your learning helps solidify the concepts in your head and makes a good resource to show potential employers *and* people you’ll mentor in your future. Finally, as I mentioned above, don’t forget careers are long things. Be kind and don’t get burnt out!

Is there anything else you’d like to say?

Be kind to your coworkers! Careers are long.

Thanks for doing the interview, William