Updating software can be a pain. Maybe you can't find a feature you depend on. Or maybe that feature is gone for good. Other software you use might not work with the new version. Or maybe the new version is just flat-out broken. And yet, with few exceptions, most of us stay on the technology update treadmill.

Usually it's because the old version of the software is no longer supported, meaning it won't receive security fixes and might not run on new operating systems. I addition, the new version includes features that make the pain of switching worthwhile. In the age of the app stores, the updates might happen automatically with no way for you to roll back to the old version.

Coders have to deal with their own version of this headache: updated versions of programming languages.

Those new versions typically add features, and may change a language's syntax. In some cases, those changes make code written in old versions of the language incompatible with code written in the new language. Programmers then have to decide whether to start using the newer version, which often means rewriting old code.

Coders make the shift for the same reasons consumers and businesses adopt new versions of software: to access new features, as well as to maintain compatibility with modern hardware and common tools. But the updates can be more complex than installing a new version of Office or Quickbooks.

For users of the popular programming language Python, the issue is coming to a head next month. The developers who maintain Python, who work for a variety of organizations or simply volunteer their time, say they will stop supporting Python 2 on January 1, 2020—more than a decade after the introduction of Python 3 in December 2008. That means no more security fixes or other updates, at least for the official version of Python. The Python team extended the initial deadline in 2015, after it became apparent that developers needed more time to make the switch.

It's hard to say how many organizations still haven't made the transition. A survey of developers last year by programming toolmaker JetBrains found that 75 percent of respondents use Python 3, up from 53 percent the year before. But data scientist Vicki Boykis points out in an article for StackOverflow that about 40 percent of software packages downloaded from the Python code management system PyPI in September were written in Python 2.7. For many companies, the transition remains incomplete. Even Dropbox, which employed Python creator Guido van Rossum until his retirement last month, still has some Python 2 code to update.

Dropbox engineer Max Belanger says shifting the company’s core desktop application from Python 2 to Python 3 took three years. "It wasn't a lot of absolute engineering work," Belanger says. "But it took a long time because stability is so important. We wanted to make sure our users didn't feel any effects of the transition."

The transition from Python 2 to 3 is challenging in part because of the number and complexity of other tools that programmers use. Programmers often rely on open source bundles of code known as "libraries" that handle common tasks, such as connecting to databases or verifying passwords. These libraries spare developers from having to rewrite these features from scratch. But if you want to update your code from Python 2 to Python 3, you need to make sure all the libraries you use also have made the switch. "It isn't all happening in isolation," Belanger says. "Everyone has to do it." Today, the 360 most popular Python packages are all Python 3-compatible, according to the site Python 3 Readiness. But even one obscure library that hasn't updated can cause headaches.