From banking apps and social media to word processors and wearable fitness trackers, more and more of our lives rely on software. Behind that swipeable or clickable interface lurks line after line of symbols and letters—the programming language, or code, that make them work.
Like any language, computer code is unique to the individual using it—full of quirks, shorthand and even dialects developed over time and influenced by a person’s experiences. While there’s nothing wrong with individuality, it can create problems in a working document that might pass through multiple authors—like if John Grisham wrote the second half of a play started by Shakespeare.
To overcome this, Bryan Jones, an associate professor in the Department of Electrical and Computer Engineering, is working to make computer coding a more informed and thoughtful process to improve maintenance and further development software.
“There’s a lot of wasted time and effort in software development simply because one programmer might not understand the thought process of the person who started the project,” Jones explained. “A new team member might spend hours trying to understand why someone used the code they did, and often they’ll end up just throwing it out and starting from scratch.”
Jones said that through a practice called literate programming, software developers can explain their thought process—in plain language—alongside their code to make it easier for the next person to make adjustments or continue building the program. Think of it like showing your work when solving a math problem or creating an outline before writing a novel.
“Literate programming makes us better thinkers,” Jones said. “By asking programmers to explain their process, it encourages them to think through and add structure to their code. Not only are they making it easier for someone to follow their thinking, they’re also helping themselves have a clearer path forward.”
Jones said this practice is especially important as the software development industry continues to grow and encourage career mobility.
“Leaving a blueprint or recipe for the next programmer will really improve efficiency in the industry,” he said.
Jones is teaching literate programming through a new course in MSU’s Bagley College of Engineering. He is also enabling the practice through software he developed called CodeChat Editor, which allows users to embed not only notes but also visual aids that can be displayed like a webpage alongside the code to enable quicker development.