<@UL3CJ7YKC> My ideal project tools would be one w...
# thinking-together
z
@Pezo - Zoltan Peto My ideal project tools would be one where I don't know if I have any of those things in the list. My ideal tool would be something that would allow me to watch Netflix at the same time as building a system
i
My ideal tool is something where the fun parts of building a system are foregrounded, and the not-fun parts are diminished, to the extent that I would rather build a system than watch Netflix. For an example of the plausibility of this: give me a polyphonic musical instrument, and I'd rather write a song than watch TV.
❤️ 6
z
@Ivan Reese Yeah great point, I would love it to be so fun that I would rather build than watch Netflix at the same time. Maybe that says how bad the state of tooling is today, or it may say something about me not being able to focus on any task for more than a few minutes! 🙂
s
This is interesting. If you both had to describe “fun” more precisely — what makes it fun?
z
@Stefan I guess one definition of Fun for me is that it doesn't feel monotonous (basically like a good video game), and making something useful at the same time (basically NOT like a video game)
🍰 1
i
I think the definition of fun itself is self-evident. Determining what can be done to make something more fun.. that's interesting. The things that could make a text-based language fun are different from the things that'd make a data-viz tool fun, different from fun mobile app development. Sure, fun can be found in the problem domain — coding music in Tidal is probably always going to be more fun than coding a forgot password form, even if you're using basically identical tools — but that fun is coming from the music, not the coding. What would it take to make all coding more fun? I also look to video games. What does it take to make coding-like tasks fun when they're presented as a game? Here's just a few. • Carefully crafted problems that have a specific difficulty curve. • Joyful aesthetics, like subtle animations and sound effects and music and a narrative. • No pressure — you can stop whenever you want. • Artificial pressure — if you don't solve this puzzle quickly, the opposing team will win.
👍 3
What would it look like to make a FoC tool that knew enough about what you were trying to do that it could sort your tasks according to a difficulty curve? For example, when confronted with a handful of test failures, order them based on the difficulty of the needed fix. How about aesthetics? Hello, 3d visual programming tools with path traced rendering and depth of field. How do you avoid pressure? I'm a proponent of injecting our tools with an explicit politics. GNU and GPL is probably the easiest example, but I also see a political motivation behind Urbit and IPFS and federation. It's not inconceivable that one could design an FoC tool that resisted the kinds of usage that breed misery. Plus, you can do what Jason Fried and DHH have done, and create a culture around your tools that promotes a certain way of working. By the same token, you could build the tool to give the sort of feedback that encourages besting oneself — performance graphs across revisions, autocomplete-from-the-community where brevity or clarity or stability or performance are championed.
👍 3
s
@Stefan “This is interesting. If you both had to describe “fun” more precisely — what makes it fun?” It’s been said that the major motivations are: agency, mastery, and social connection. For me, fun is feeling agency - to be able to quickly move from intent to functional artifact. For those motivated by mastery, it may have more to do with feeling one has mastered a given development tool, even if that tool isn’t ideal wrt agency. Zubair’s Netflix suggestion makes me think that a social connection motivation might be involved.
z
@Steve Dekorte My Netflix suggestion actually meant that I don't want social interaction at those times, as I want my brain off. I use Netflix as a way to cool the pressure that builds up while coding so that I can continue. Like the Steve Jobs quote “_TV turns_ your brain off, PCs turn your brain on.”
o
Very interesting how the discussion is now focussing on fun! 🙂 I guess it is very subjective. For me, as the act of programming is a mix of building and problem solving, I have fun in doing this when it is a bit tricky (i.e. not boring) but not so much. And yes the parallel with game is excellent. Good games keep you want to solve/do/build stuff in it but not too difficult. And this frountier is different for each person. Hence the notion of level in games. I guess tools for programming activity should embrace this notion of level. It is in some way in the editor landscape: gedit, geany, vs code, vim (choose your favorite ones here). But mabe a well crafted tool has this kind of deifferent level mor integrated. Of course, this is very difficult to do it right as there is a great variety of how people percieve a task as easy/difficult.
Another one: what is defenitly no fun is accidental complexity. So at least, fun tools are those with no acc complexity and the ones that help you manage it well in what you are working on.
s
So many great thoughts on fun. When I asked I was hoping for the discussion to move towards learning, as the two examples seemed to be connected to (a) you know how to use it (assuming @Ivan Reese already knows how to play that polyphonic instrument) and (b) you know how to get somewhere (I don’t want to say result, because it’s not that goal-oriented, but whether or not you’re going for composing a new masterpiece you’d like it to sound good at least). There are countless videos about game development specifically for on-boarding, which is often bolted-on afterwards in the form of patronizing tutorials, but then Super Mario is used as the example that you can teach gameplay much better without explicit prompts and just by guiding players through the experience, gradually exposing them to new mechanics. I haven’t seen that done for tools yet that wasn’t either a condescending tutorial or an exploitation of “gamification” for retention. I wonder why we abstain from experiments with that in our field, although I can see various reasons why we do: (a) it’s hard to do well even in games and only few do it well, (b) there is something about not wanting tools to appear as a game; just appearing like a game turns some people off. Slightly related: I have tons of friends who “are not gamers” and “never play games” and you would be surprised how much time they spend on their smartphones matching gems or candy… I think we need to embrace gaming more, clearly everyone likes it, even if we’re culturally not supposed to after a certain age or whatever. The key to enabling people to do more interesting things with computers is to teach them how without them noticing because they’re having too much fun. Somehow so far only a dubious part of the Free-to-Play gaming industry has figured that part out but then weaponized it for retention and monetization instead. What if we “weaponized” it for teaching people how to use our tools?
o
All this, and your hope for the discussion to move towards learning, make me think of a personnal example about fun in progressively use/learn a tool. It is about Vue.js. I have started to use it because a girl I know, when asked for Vue drawbacks answered me she can't find any. So I decided to give Vue a try. I first started to read its documentation which was very pleasant, there is a french translation, is very clear and reads like a novel. Things are introduced progressively with the right timing. And developping with it can also be very progressive. You don't have to have a global vision of everything to start creating nice things. I even started with an plain old index.html file. When you feel it, you introduce other concepts and everything fit nicely. So my experience in learning and creating with Vue is really fun. And I am pretty sure that the fun will continue with the incomming new composition API (I can't wait to start using it :-) ). And all this is not by accident. The community (and first of all Evan You) is very very commited in making the developpers and learners experience very smooth and progressive. They try a lot to remove any accidental complexity. For me, Vue is definetly a very inspiring example for building fun and engaging tools.
👍 2
z
@ogadaki Yeah I agree with these comments on Vue. I was into React heavily and then one day I made a small Vue example on a web page, and it progressively gre from there. Same with AFrame for VR, it allows you to start easily. I guess any tool that people make has to make it easy to start building within minutes, without a huge learning curve, which is something I am guilty of myself!@