user-interface-software-and-technology
user-interface-software-and-technology copied to clipboard
Programming Critiques
- Include critiques for the end-user programming interface examples, since, while they do offer improvement from traditional ones, they’re by no means perfect. +1 CoCo, for example, introduces a large gulf of evaluation by using natural language. Illustrate why end-user programming interfaces are so hard to make
- Introduce more mainstream and modern examples of making coding easier, like Microsoft’s MakeCode, Webflow, Wix editor, Adalo +1
- When a programming interface is designed to remove indirect manipulation, notations, and abstractness, does it still classify as a programming interface? The chapter talks about these three being the key attributes that define a programming interface. Is the Whyline a programming interface? Or is it an interactive interface? What do we make of interfaces like Microsoft’s MakeCode? Or makeymakey?
- Add videos for Sikuli, Vega, and Mavo
- “none of these people are writing code for the code itself (as professional software engineers do)” – software engineers don’t write code for code itself either. The framing doesn’t give a good reason why some should use traditional programming interfaces and why some shouldn’t
- Saw examples of end-user interfaces, but missing how HCI research has shaped programming at a larger scale
- Would people be able to create an advanced game using these new interface innovations without learning how to code? Or do these innovations act more like stepping stones to help users learn coding logic before they learn the syntax/language? Are there functions that are lost from using an interactive interface rather than a programming interface?
- Add images to explain programming terms for those unfamiliar with programming
- Put some overlay on the video so people know where to look, since it goes fast and it’s hard to see what has changed on the screen
- Which is more important to solve–bridging the gulf of execution or the gulf of evaluation? Does solving one solve the other?
- What other challenges do programmers commonly come across when programming?
- Why have these new simplified interfaces not gotten widely adopted in companies by now?
- How have new interfaces helped bridge the API gulfs?
- First paragraph of “Simplifying Programming Interfaces” doesn’t seem fully justified. Why can’t we create, customize, and automate using interactive interfaces?
- How to end-user programming interfaces relate to programming languages? Can several end-user programming interfaces be used for the same programming language and vice versa?
- Grammar/typos:
- “Some of the gulfs that reuse impose include:…”
- “Use gulfs. Once someone find an API that might be useful for creating…” (I think this should be “finds”).
- “a programmer users to write computer programs:” -- uses
- Tense switches from past to present halfway through the sentence: “CoCo allowed a user to write a command like “get road conditions for highway 88,” which the system then translates…”
- "Its rare, therefore, that a person might just poke around an editor or programming language to learn how it works." – should be “it’s”
- “This gives a a similar sense of immediacy” -- two "a"s
- "which is a particular notation for executing the cd command (standing for “change directory” and specifying which folder to navigate to (myFolder)" -- left parenthesis not in code block, also missing right parenthesis
- "Again, a major goal of all of these systems is to help bridge the gulf of evaluation between a user’s goal and the program necessary to achieve it" -- does it mean execution?
- "These debugging skills are similar to the troubleshooting skills required by in interactive interfaces" -- choose "by" or "in", not both
- "but at least in the case of interactive interfaces, the functional affordances is are explicitly presented in menus. "
- You may already be aware of this, but the Whyline video linked in this chapter has your old name in its intro
- Why can’t we create interactive interfaces to do everything we want a computer to do? Didn’t feel like this question was answered. What makes code work? What determines how code gets executed? +1 student pushes back on the idea this is impossible
- Discuss generative coding and new opportunities it brings
- Why do programming interfaces have so many gulfs of execution? Why have we still not found more accessible ways to program? Why are we not making it easier to program if there is a shortage of programmers?
- Should maintenance of APIs and updates be added as a gulf? Updating an API might cause compatibility issues
- How does understanding how to simplify programming interfaces help designers design interactive interfaces?
- Terminology:
- End-user programming–how is traditional programming not end-user programming?
- Explain the new gulfs with more concrete examples. Students struggled with the concept of an API, so probably why the need for more concreteness with this part
- Maybe also introduce the concept of libraries since non-programmers aren’t familiar with what they are and how they differ from languages
- Explain what a “notation” is (from Use of Notation paragraph)
- “No direct manipulation” seems like not the best name since by programming, programmers are directly manipulating the code. “No immediate feedback” might be a more appropriate name +1
- Too many technical terms and references for non-programmers. More analogies and digestible definitions (some definitions are too wordy/technical)
- Terms to define: Programming languages, Editors, No direct manipulation, Use of notation, Use of abstraction
- Include this to explain frontend vs backend: https://francescolelli.info/software-engineering/front-end-development-back-end-development-and-full-stack-developers/
Include a class activity with an intro to coding before assigning this reading!
Talk about designing programming interfaces for different age groups
Include examples of when high-level languages are not enough for user needs, such as using Scratch vs Python or JavaScript
The different types of gulfs are easy to mix up and hard to remember, provide an example with a metaphor or something to solidify the differences
Talk about programming for hardware interfaces, like smart home devices