PyDev of the Week: Haki Benita

This week we welcome Haki Benita (@be_haki) as our PyDev of the Week! Haki is a contributor at Real Python. You can also see some of Haki’s work over on their own website or by checking out their GitHub profile.

Let’s spend some time getting to know Haki better!

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

My name is Haki Benita, I am a software developer and a team leader living in Tel-Aviv. I have a BA in economics and computer science and an MBA (but don’t hold it against me). In my spare time, which is scarce these days, I like to write and spend time with my family.

Why did you start using Python?

I started my professional career as a DBA in a large organization. The technologies I used there were what you would expect from a big corp. There was no Python.

When I left this organization I joined a small company. They developed an Android app and they needed a dashboard and an API. Back then I didn’t know anything about web development, so I picked Django because it seemed like a good choice. This is how I got started with Python and Django, and the rest is history…

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

In any team, I’ve ever landed in I was always the “data guy”, so obviously, I write a lot of SQL. Throughout the years I’ve worked to some degree with many languages including PLSQL, SASS, R, C, C++, C#, Java, JavaScript and Go. However, most of my professional work nowadays involves Python, SQL, and TypeScript. Luckily (but not accidentally), these are my favorite languages!

What projects are you working on now?

For the past few years, I’ve been leading the development of a large ticketing and payment platform for public transportation. Public transportation is often called “Mass Transit”, and for a good reason. There are massive amounts of data flowing in and out and it has to be accurate, fast and reliable. Most of my writing is inspired by challenges my team and I faced while building and scaling this system.

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

This has always been my favorite question in PyDev of the week, but my answer is going to be pretty boring. Over the years we’ve managed to stay up to date with latest versions of operating systems, databases, programming languages and frameworks mostly because we use very few 3rd party libraries and packages.

Having said that, there are a few libraries I often use or pip install on new environments. Mypy for type annotations, pytest and coverage for testing, functools, itertools and collections for some lightweight data wrangling, requests for HTTP, Django for web development, django-otp for securing login to Django admin and iPython and iPdb for local development.

How did you get involved with Real Python?

I started writing more than 5 years ago for no particular reason. Lucky for me, my first article did very well and it motivated me to keep writing. I really liked interacting with readers and I enjoyed the feedback, so I kept publishing new articles every month. Some articles did very well and got great feedback, and some didn’t, but I got better at writing.

When I felt I was ready to take my writing to the next level I applied to become a writer for Real Python, and they accepted my application. The first article took some time because I was new, but I was very impressed by how serious the review process was! After going through the pipes myself I have full confidence in the content coming out of Real Python.

What are the top 3 things you’ve learned as an author?

Many talented people shared their writing tips, so I’ll try to provide some non-trivial ones from my own personal experience:

1) Storytelling is not just for magazines: If your readers wanted just the technical details they would have read the documentation. Readers read your blog because they want your take on a subject. Technical articles that tell a story convey a message in a much better way. I mean, everybody loves a good production story…

2) Writing is a craft: Just like programming, the more you write the better you get. Crafting a story that keeps readers engaged and educates them along the way is hard. Over the years I have tried to come up with original ways to introduce technical subjects to my readers. For example, my article about dependency injection starts with an interview question, and my article about how to add text filters to Django admin starts with an imaginary conversation between a developer and a support engineer.

3) What’s trivial to you may not be for someone else: Many developers want to start writing but they struggle to find a topic to write about. One of the things I’ve learned is that many things you consider trivial, may not be for someone else. For example, I recently wrote about a little find in a production system that helped clear up a lot of data. I thought the find was trivial and was somewhat embarrassed to write about it, but after publishing, I was surprised at how many people found it useful.

Is there anything else you’d like to say?

You can find my writings at hakibenita.com

Thanks for doing the interview, Haki!