Tooling
Programming Language
Static typing helps, but only a little.
A statically-typed language like Java requires programmers to specify the data type of each variable; a dynamically-typed one like Python doesn't require them, though you can add them if you want, while TypeScript adds types as a layer on top of JavaScript. [Endrikat2014] found that declaring types does add complexity to programs, but it pays off fairly quickly by acting as documentation and by making auto-completion more accurate.