You are viewing archived messages.
Go here to search the history.

Mariano Guerra 2022-05-10 08:28:26
Chris Knott 2022-05-12 16:12:32

The "Dataspace / Those Memex Dreams Again" series is worth reading

Christopher Galtenberg 2022-05-10 15:04:41

Threads like this are invaluable, but it's not fun reading – "modern programming" is a borderline nightmare for the uninitiated https://twitter.com/Aella_Girl/status/1522633160483385345

🐦 Aella: Learning Python has been really hard so far. Here's a thread of me breaking down my process of learning it from 100% scratch so far (day 2)

Fabian Iwand 2022-05-10 15:34:22

and a cacophony of explanations barrage my face like a bukkake of knowledge

I'll have to remember that phrase

Fabian Iwand 2022-05-10 15:47:20

I have a strong sense of what I need to know

This part felt a bit "off" to me (would have loved more context), and interestingly the two quoted retweets seem contrary to each other (one agreeing, the other noting the problems that arise from mismatched expectations): https://twitter.com/Aella_Girl/status/1522633193660239876/retweets/with_comments

🐦 AJ Kerrigan: Interesting thread in general, this bit sticks out though. It's pretty tricky to find the sweet spot for level of detail as an asker or answerer. And when there's a recurring mismatch it gets frustrating for everybody.

(Even if you assume the best intent on all sides) https://twitter.com/Aella_Girl/status/1522633193660239876

🐦 Aella: I have a strong sense of what I need to know, and I'm curious if others do too - it felt like I had a god of curiosity possessing me, that honed beeping in around questions like a metal detector. I had strong senses of "no, explain that to me deeper" and "don't care let's move on

Fabian Iwand 2022-05-10 15:51:42

Overall a good summary of the parts that should be "skippable" for a beginner. Since I'm not familiar with Python: Would Jupyter have helped here to lower the barrier? (edit: it certainly came up a few times)

Fabian Iwand 2022-05-10 15:56:01

🐦 Jens Fiederer: @Aella_Girl From a programmer's perspective, that is not a "python question", that is a "development environment question"...the answer depends not on Python but on how you are using it. Hence the questions about your operating system, "jupyter", "visual studio code", etc.

Personal Dynamic Media 2022-05-10 16:29:48

I could write a long essay on everything I think is wrong with Python, but I have trouble thinking that fixing all of it would help with this part: "I don't wanna learn how programming building blocks work as I use them to build a lil rando pile, I want to learn how they work as I use them to build the actual house I want. If what I'm learning isn't connected to a payoff, then I lose the stamina to wade through the problems."

I struggle to translate that into any other discipline and have it still make sense. It sounds like wanting to learn how to write a novel in French without any interest in learning to conjugate verbs, or wanting to race horses without learning how to ride them or care for them or even saddle them, or wanting to become an MMA champion without wasting time on all those pesky punches and kicks.

At the risk of sounding like a grumpy old fart, I remember when pop culture encouraged dedication and patience and learning to crawl before you run with things like "You must complete the training" and "Wax on. Wax off."

Fabian Iwand 2022-05-10 16:41:31

From what I gathered she started down that road to solve a specific problem. If the solution is not in sight, and the steps one needs to take are too abstract to even understand why they need to be taken, then it's fair to question wether you're still on the right path.

Fabian Iwand 2022-05-10 16:42:57

Getting bombarded with all kinds of advice from the swarm surely won't have helped (imagine trying to weed out the ones that aren't helpful without any background), but it seems there's been a happy end: https://twitter.com/Aella_Girl/status/1523756696711344128

🐦 Aella: Update, day 4, probably spent 12 hours in chat total getting answers done, have figured out how to do a lot more stuff with columns and correctly save/replace/export csvs and generate a correlation chart. i am starting to get extremely excited about all this, had trouble sleeping

Fabian Iwand 2022-05-10 16:50:59

A better analogy than "writing a novel" would likely be "being able to communicate on a basic level", like asking for directions. You don't need to learn the entire vocabulary or grammar for that.

Fabian Iwand 2022-05-10 16:53:51

Likewise, a beginner isn't interested in all the intricacies of a programming language, or best practices, or how to implement something in the most maintainable or efficient manner. They just want to "make stuff work".

Fabian Iwand 2022-05-10 17:04:47

@Personal Dynamic Media I do get where you're coming from. But as I understand it one of the key ideas of this community is to allow others to "stand on the shoulders of giants", and not have to wade through the same mud that we've been through.

Personal Dynamic Media 2022-05-10 17:30:00

@Fabian Iwand I agree with what I think you are saying about the need for programming environments that are easier to get started with and in which it is easier to focus on your goals than how the computer works.

I also agree that we need environments with a more shallow and continuous learning curve and with more discoverable capabilities.

I struggle with what I perceive to be an implication (not sure if you meant to imply this or not, but I feel like it is in the air in this thread) that somehow it should be possible to write interesting programs without learning the building blocks necessary to do so. Logo and Smalltalk and Scratch can make it easy to do simple things, and easy to combine simple things into more interesting things, but at the end of the day figuring out how you want to combine those things into something interesting still requires knowledge of the building blocks and skill that takes time and effort to learn.

And, I would argue, some time spent building a little rando pile instead of a house so that you can get a feeling for how those blocks are shaped and what they do.

In designing a system, I think it's important to acknowledge what the system can provide versus what will still be needed from the user.

Christopher Galtenberg 2022-05-10 18:11:05

Maybe the resolution is: pick the tool/approach correctly. If you need to parse csv, there are many options, some easier, some harder. And people need help picking the right tool/approach. Python isn't the right tool for many people at most experience levels. Once you have a certain experience level, then it's an option.

If I want light in my house, one option is to pull off an outlet from the wall, experiment with the wiring, and try to run wire to a fixture I bought online. For most possible experience levels I likely possess, this is not the option I should choose.

If there's something this community can provide, maybe it's not more technology – maybe it's a map between experience levels and approaches+tools to try.

Jason Morris 2022-05-11 16:52:51

I think there's an important insight, here, about the difference between the inherent need to learn fundamentals first, and whether or not the person learning the fundamentals in the abstract can envision how those fundamentals are combined to do something that they want.

Jason Morris 2022-05-11 16:57:18

The problem may actually be that we are not going fundamental enough? I remember one educator saying that when teaching programming, they start with the concept that "code" is (usually) text in a file. And build up from there about compilers, assembly languages, modules, packages, package managers, etc. Maybe do that first. THEN tell them what pip is and have them install it. If they can see the path from this step to the thing they want, they gain context, and the "thing they want to do" becomes a motivation to learn how to install pip. If they can't, it's random nonsense until you accidentally learn what it is, and what it's for.

Personal Dynamic Media 2022-05-11 23:51:43

Christopher Galtenberg regarding picking the correct tool, when I read that the author can "get specific info from various columns (count x in a column conditional to y in another column), how to filter columns, delete empty columns, and delete targeted columns" it did occur to me that a spreadsheet can do all of those things. Some spreadsheets can "generate a correlation chart" for some values of "correlation chart."

However, I have no idea how much data is in play or how advanced of an analysis the author is attempting to perform, so I don't know if a spreadsheet could be made to solve the actual problems at hand.

I see the value of creating a map of what tools to use when, but contemplating the number of dimensions in play and how to represent them makes my head hurt.

It seems to me that "experience level" should be split into at least two variables, "computer or programming experience level" and "domain experience level."

Other relevant dimensions I can think of include the size of the problem, the complexity of the problem, which form of efficiency is your priority (examples from the camel book include runtime efficiency, space efficiency, programmer efficiency, maintainer efficiency, porter efficiency, and user efficiency), other software you need to integrate with, and restrictions on acceptable licenses (for example, "no GPL allowed" or "all parts must be open source").

I'm sure I missed more than I thought of, so maybe we need a data model with an arbitrary number of arbitrary attributes to describe the user's needs? At which point this starts sounding more like a library catalog than a map. Or am I overthinking this?

Personal Dynamic Media 2022-05-12 00:02:55

Jason Morris putting your two posts together, it seems like the question you are posing might be something like "how do we draw a person into learning about the fundamentals of their environment and tools by drawing clear connections between those fundamentals and what the person wants to achieve?"

Am I close?

If so, I think it's an interesting question, but I currently lack the imagination to answer it. If someone were to ask me something like "how do if statements and while loops help me write a video game?" I can only think of answers that are unintelligible until after a person has learned the necessary concepts that are bigger than "if"and smaller than "video game."

If they don't have a mental map from the bottom of the mountain to the top of the mountain, how can I show them that the first step actually takes them up a path that will get to the top of the mountain?

Jason Morris 2022-05-12 00:26:17

Very close, yes, @Personal Dynamic Media. To strain the analogy a bit, the answer to your last question is you draw them an actual map, on paper. For your while loop to video games example, you say "video games show video. video is a series of pictures. to create video, the computer creates pictures, over and over again, really fast. Loops are used to get a computer to do the same thing over and over again." Loops -> do stuff over and over -> make pictures over and over -> video -> video game. It is entirely doable, just not usually done. Probably because the training materials are written by and for experts, who suffer from the curse of expertise and are unaware of what they understand that their audience doesn't, and/or because they are written outside of any context so as to be of general use, or use the context only to motivate examples, not the concepts themselves.

Jason Morris 2022-05-12 00:29:14

So I guess the question is why do we not have "Learn Python By Building X" as a typical type of training document, instead of just "Learn Python"? Why do we not use motivational context to our advantage? And how can we better overcome the curse of expertise, so that we can connect that context to the thing we recognize they don't already know.

Jason Morris 2022-05-12 00:36:32

The answer is probably "learning is UX". Use all the same tools and techniques for your user manual and tutorials that you use for the interface. Prototype, observe users, note points of friction, refactor, repeat.

Mariano Guerra 2022-05-12 08:43:26

The Envision project aims to develop an IDE for object-oriented languages that features a visual structured code editor and is used for large-scale software development.

http://dimitar-asenov.github.io/Envision/

Intro video here: https://www.youtube.com/watch?v=5YMaCQEoPe0

Kartik Agaram 2022-05-12 23:18:22
Mariano Guerra 2022-05-13 08:44:21
Chris Knott 2022-05-14 09:23:18

Why I Left the FBI to Start a Software Company

I love this story. Basically some programmers packed it in to join the FBI. They worked as operational special agents for several years, until their frustrations with agency IT forced them to just build their own tools guerrilla-style, so they could fight crime better.

What drove us was our rejection of the status quo for law enforcement and security solutions, as well as the painstakingly slow pace of the government bureaucracy. > Every single day, we followed the mantra of > “build high quality software faster than people can say no.”

Their solution eventually replaced a failed top-down $450m outsourced megaproject.

They left the FBI to sell their case management software full time. The whole company is basically former operational law enforcement. When they realised they couldn't pull the same trick for beat cops as they did for federal investigators, what did they do? Extensive research around these new user needs?? No, one of the founders got a job as a traffic cop.

Before we turned the > Sentinel> project around, I saw first-hand how user needs were consistently not met by the software engineers. It wasn’t because the engineers didn’t want to meet their needs. On the contrary, non-technical users frequently had trouble communicating their needs to the engineers. Likewise, the engineers frequently misunderstood how the users actually did their jobs, and made inaccurate assumptions about what would and would not work for the end users. One of the keys to our success with the > Sentinel> project was > our unique dual roles as both end users and software engineers> . There was nothing “lost in translation” between the end users and the engineers, since they were one and the same. > Not wanting to repeat the same mistakes, there was only one thing to do — one of us needed to become a local law enforcement officer> .

Chris Knott 2022-05-14 09:25:34

There is no comparison between "Requirements Gathering" and "Requirements Having". Requirements Having is like 100x more efficient/higher bandwidth.

Chris Knott 2022-05-14 09:29:01

The most expensive failed IT project in UK history was a £12bn system for the NHS. It never shipped.

It goes without saying, it was built by programmers, not by doctors.

Konrad Hinsen 2022-05-15 06:04:42

One of my long-time claims is that one the main reasons for all the problems we complain about in computing is software developers considering themselves as possessing an abstract universal competence about software. Much like managers believe that they can manage anything that looks manageable. The application domain is not important, and domain experts are clients, not collaborators. That's mostly an attitude problem, not a competence problem. And the attitude can only survive because the victims tend to share the same belief.

Chris Knott 2022-05-15 09:52:07

Yes, the job of the programmer, manager, consultant, is basically to systemise something that might actually be beyond human ability to systemise, but they back themselves to do it. They are insulated from the consequences in a way practitioners aren't.

This blog has some great articles around this https://desystemize.substack.com/

Chris Knott 2022-05-15 09:54:02

Unfortunately we have to systemise, in order to leverage the microchips to do our work... So it's a constant struggle/balancing act.

Konrad Hinsen 2022-05-16 05:12:14

Chris Knott The Desystemize site reminds me a lot of James Scott's "Seeing like a state". Which I think points to the priblem is systemizing. It's not the fact that we do it, because we have to, but that there are few big systems rather then many small ones. It's "the state", "the tech industry", etc. The implicit idea of universality. It was a big idea of the last century ("universal human rights" "universal truth through science", ...) but I think it's time is over.