Learn Something New Without Losing Your Head

A simple approach to learning the fundamentals of a new tool or programming language

(WOC in Tech)

Recently, after a few years of being perfectly comfortable sticking to Python and JavaScript, I’ve challenged myself to add two new tools to my repertoire: Django and R.

As a member of the Dallas Morning News’ data and news applications team, I do mostly data analysis and visualization. My other team members are heavily involved in making apps for the newsroom, and I wanted to be able to help them and contribute to these projects, as well as starting my own. To do that, I had to learn Django.

I found that going from Zero to Expert does not come as quickly as I had hoped, forgetting that it had taken years to learn the intricacies and oddities of Python and JavaScript, which I still learn—sometimes frustratedly—every day. I’ve learned some things from this experience that I’ll carry forward when learning my next programming language or tool.

Wait, But Why?

The number of different coding languages and tools used in the journalism community can be overwhelming, and many of us only have a strong grasp on one or two that we use most often. Why might you bother to learn more coding languages, aside from a boost on your resume?

One big advantage is to expand the variety of what you can produce. If you have mastery of just one language, it’s true that there are a lot of libraries and packages that will allow that language to mimic others, but there are many times when it makes the most sense (whether for presentation quality or production value) to use a particular language. A clear example of this is using the Django framework for web apps because of how easily this framework allows data to be connected across a platform.

Django was in fact created in the newsroom for the exact purpose of building web apps. As a Python framework, it beautifully handles structured datasets and facilitates clean design. It’s relatively quick to get set up (even for a newbie), while also allowing a more nuanced user to incorporate a variety of built-in extra features.

On the other hand, Python is great for parsing data, and SQL is a great way to answer questions from a large dataset. Both Python and SQL could be used for some level of data analysis and, with some patience in Python, quick data visualization. But this is where a language like R steps in and allows for easy execution of both simple and advanced analysis, as well as quick and simple or more elaborate data visualisation. R requires time to learn, but it could shave hours off your analysis and allow you to turn data stories quicker.

FiveThirtyEight frequently uses R for data analysis and keeps many examples in a public GitHub repo. For instance, you can browse the code behind Mona Chalabi’s column on the most common name in America. At an R user conference last year, Andrew Flowers outlined FiveThirtyEight’s general workflow in R, describing how their journalists use this tool for heavy but quick data analysis.

FiveThirtyEight Screenshot

Data as displayed in Mona Chalabi’s FiveThirtyEight column “Dear Mona, What’s The Most Common Name In America?” Analysis was done in R and is available to the public.

How To Get Started

Learning something new is always going to be easier if you’re excited about it, and the same goes for a new coding language, which leads to step one:

Check Out a Project You Wish You’d Done

What recent project have you seen that you were envious of? Was it an interactive map, data viz, or a public or internal facing application? Though I had heard and seen a lot about the the powers of Django from outside the newsroom, it was work from my colleagues that actually pushed me to finally see the benefits of Django. Reporters in our newsroom love the internal applications that my team members have made, such as a budget app and a FOIA tracker, in addition to larger public-facing apps like an app to track bills in the state’s legislative session, which was built and runs on Django. The variety of work that I saw my colleagues producing through Django made me more aware of its possibilities, and I knew it that familiarity with the Django framework would be a great skill to have when trying to emulate great projects.

FiveThirtyEight Screenshot

State Legislature Application as built by Andrew Chavez at the Dallas Morning News using Django.

When it’s hard for you to justify spending the time to learn a new skill, it can be helpful to show your boss examples of outside work created with that language so they can understand why it deserves your time.

Choose a Simple, Evergreen Idea

Come up with a pitch for a project or story idea that would let you learn a new language as you go. Without a specific project in mind, it can be hard to understand how tutorial or book examples will relate to you and the kind of work you want to make. Ideally, the project you’re pitching will have a lenient deadline, in case you get stuck.

Find a Clean(ish) Dataset

When learning new analysis tools, it’s helpful to have a large but relatively clean dataset that you’ll be able to play around with extensively. If you are building mostly a backend or frontend result, the simpler the better—the project is already going to be a challenge and stretch your brain a different way. There’s no need to add more complexity if you can avoid it.

So now you’ve decided what tool you’re going to learn and what project you’re going to apply it to—time to start learning it!

Ok, Go

The best tools for journalists are those which are written for journalists by journalists. If you can find online tutorials or book materials written with journalism in mind, that material is usually the most relatable.

Tutorials and step-by-step “how-to” guides may leave you feeling accomplished, but they can be misleading when it comes to how much you actually understand. I find that in some step-by-step guides, I walk away knowing only how to execute the skill in that contained environment, unable to apply it to my own project.

Here are some journalism-friendly tutorials that I’ve found helpful and recommended:

Trial and Error and Error and Trial

Ultimately, there is going to be a lot of trial and error when it comes to actually executing your project, and there were times when I found myself Googling for answers and working around things that I didn’t know how to do yet.

Fortunately I had coworkers who already knew Django well and were willing to help answer questions. Not everyone has another colleague available, so I’d recommend that when big problems arise, you find a journalism forum to ask, where the brainpower of the group is usually substantial enough to answer any question or help you work around a problem. Some helpful forums are NICAR-L, Stack Overflow, and the News Nerdery Slack group.

It’s great if you can identify colleagues or others in your professional life who are willing to help answer questions, but be sure not to use them as a crutch for every issue. Part of the learning process is troubleshooting. And definitely, most certainly, do not be afraid to read the official documentation!

The project I used Django to create was an internal corrections log for our reporters. The application allows reporters to submit information on corrections that they have had to make to published stories. Then, their editor receives a notification that a new correction was recorded. My greatest hurdle was taking the information from the tutorials and applying it to my own project. Specifically, I struggled with building Django relations, like the fact that multiple people could be responsible for one correction. I finished the project with a much better understanding of Django though, though I am still very much learning and fixing errors.

Do Try This at Home

Eventually, you’ll have a finished product! I’m willing to bet it looks a bit different than what you imagined and you had to make some sacrifices along the way, but hopefully you recognize your own accomplishment and take note of room for future improvements. You might use one programming language or library and try a different one the next time.

How do you approach learning new things on the job?

For more inspiration:



Current page