Another Standard Model
Back in 2004 I summarized the new Standard Model of computing. I was taught its predecessor, which included:
- a character-oriented editor (usually Vi or Emacs);
- C (which mutated into C++);
- Unix command-line tools like
cat
andgrep
; - lines of text as a data exchange format;
- Make for task automation;
- CVS for version control; and
- “power tools” like Yacc and Awk for more complex tasks.
By 2004, that had become:
- Eclipse and its many plugins for editing;
- Java;
- XML as a data exchange format;
- Ant for building and JUnit for testing;
- reflection and things it enabled, like JavaBeans; and
- an online project dashboard that includes a ticket manager and a searchable mailing list archive.
So what’s in the standard model of the early 2020s? Based on my experience over the last four years, my first stab is:
- Python and a relational database (SQLite or Postgres);
- HTTP and JSON for data exchange;
- JavaScript and a front-end framework (e.g., React);
- Docker and [name of cloud goes here] for deployment;
- Slack for communication;
- Git for version control;
- GitHub as a project dashboard;
- GitHub again for linting and testing; and
- Stack Overflow as an external brainspace expander.
Lots of substitutions are obviously possible, like Mongo instead of a relational database or Linear instead of GitHub for issues, but I think this is the baseline against which variations are defined. If I’ve missed anything or included anything that you think people don’t now take for granted, please let me know.