As a software developer, you&#x27;re actually manipulating abstract concepts about the future movement of data over time. The best way we&#x27;ve come up to do that is to describe those concepts using textual languages, and then build ourselves tools for manipulating text in the belief that that gets us closer to manipulating those concepts.<p>This has the effect that we actively reject some really good tools as being &#x27;unsuitable for programming&#x27; because they are hard to work with with our text based tools.<p>I think there&#x27;s a lesson in both directions here: the fact that often the kinds of tools software developers use could actually be of use in some other domain (lawyers could get a lot of benefit out of distributed version control and markup languages, for example), but also software developers can sometimes get caught up in text editors and command lines and forget that sometimes a nice graphical visualization or interaction is really helpful.