The reality is that the amount of people who actually owned a computer, and knew basic or c or assembly or whatever, in 1979 was so monumentally low, that comparing it to the modern era is apples...
The reality is that the amount of people who actually owned a computer, and knew basic or c or assembly or whatever, in 1979 was so monumentally low, that comparing it to the modern era is apples and oranges. The amount of people who know how to code, who tinker with their computer, in the current time is much, much higher on an absolute level than in 1979. It just went from being 100% of 100,000 to 0.01% of 1 billion.
And there's nothing wrong with that. Today, we have options for all. The vast majority of people have no interest nor need to know how their computer works, and certainly not to write applications in it. For the people that do want that experience, there is both a myriad of options in both hardware and software, and a very large community to engage with.
I disagree a bit. I think one of the tragedies of our time is that people have been, at the very least, disincentivized from learning to properly use and maintain the tools around them. I'm not...
I disagree a bit. I think one of the tragedies of our time is that people have been, at the very least, disincentivized from learning to properly use and maintain the tools around them.
I'm not saying we shouldn't make things accessible...but it's just a bit tragic that so many people consider something so simple as writing a 'hello world' to be some feat of wizardry and not just a fundamental part of using a computer.
When calculators first hit the scene in schools, there was a concerted effort to delay their use until such time that they weren't being used to substitute for learning how to do arithmetic.
No such delay was instituted for computers, nor a solid curriculum established, and the rush to deploy them as rapidly as possible in all sectors everywhere has resulted in a bit of a situation like if we had handed a bunch of first graders calculators and assumed they'd figure out arithmetic on their own. Then act surprised if you take the calculator away in 6th grade and they can't multiply 5x5.
The modern computing curriculum mostly teaches kids to be consumers of computer output. Not creators of it.
It's a bit difficult to assess this kind of opinion in environments that are overwhelmingly STEM or STEM related, which is the case of Tildes. That is typically an audience with a natural...
It's a bit difficult to assess this kind of opinion in environments that are overwhelmingly STEM or STEM related, which is the case of Tildes. That is typically an audience with a natural inclination towards mathematics.
You're not wrong. But even more than math, programming is about being able to make a list of instructions, to get from A to B. You don't really need more than a 3rd grade level of math to be able...
You're not wrong. But even more than math, programming is about being able to make a list of instructions, to get from A to B. You don't really need more than a 3rd grade level of math to be able to do a fair bit of programming. But you do need to be able to write a list of how to do what you want to do....and enough reading comprehension to be able to translate that to syntax.
If it helps, I feel the education system has failed us just as much by cutting Home Economics, Electronics, Woodworking, and Metal Shop from schools. Nobody should feel that replacing a light switch or electrical outlet in their home is a daunting task.
This attitude of not knowing their tools extends way beyond computers.
I completely disagree, especially if we're talking the 90s. There's a TON of programming that's just boilerplate or knowledge of unrelated systems. A LOT of effort and tooling has gone into...
Exemplary
I completely disagree, especially if we're talking the 90s.
There's a TON of programming that's just boilerplate or knowledge of unrelated systems. A LOT of effort and tooling has gone into languages and editors to make it that easy, and it's still often filled with "gotchas". Very very often new programmers know exactly what they want to do, and just don't know how to properly tell the system to do it.
Better, but also not what a beginner would type into a blank editor. What's a class? Does my class need to match my output? What the hell is a public static void main (String[] args)? Why are there "s around the text? Why is there a semicolon on one line but not the others?
Javascript
console.log('Hello World');
Ok this looks pretty good. console.log is a little unituitive, but JS's issues stem much more from the tooling around the environment to make up for the languages poor design.
Python
print('Hello, world!')
Awesome, now we're actually at just a few rules needed to explain to get someone working. I think python falls apart the higher you go, but clearly this is a MUCH easier onboarding process than so many other options.
and for my personal lang of choice, F#
printfn"Hello from F#"
Oh neat, almost as easy as python. Too bad in order to get this mocked up you probably need to use console commands and it may not compile without a Main function depending on what you're doing.
as a bonus for another popular coder onboarding spot, VBA in excel
Sub sbHello()
MsgBox "Hello World!"
End Sub
So so so much of what stops people from being coders has nothing to do with them not knowing how to do basic instruction sets. It has a lot more to do with the system, and the community, expecting them to have already climbed the knowledge hurdle and just internalize it, and it's not nearly as easy as people make it out to be, especially given how hostile the entire coding community is to "dumb questions".
Very often, people new into wood working know exactly what they want (smooth wooden surface) and just don't know what tool to use to achieve that. File Hand Wood Planer Sand Paper Wood Grinder ......
Very very often new programmers know exactly what they want to do, and just don't know how to properly tell the system to do it.
Very often, people new into wood working know exactly what they want (smooth wooden surface) and just don't know what tool to use to achieve that.
File
Hand Wood Planer
Sand Paper
Wood Grinder
...
So so so much of what stops people from working the wood themselves has nothing to do with them not knowing how to use the available tools. It has a lot more to do with the system, and the community, expecting them to have already climbed the knowledge hurdle and just internalize it, and it's not nearly as easy as people make it out to be, especially given how hostile the entire handiwork community is to "dumb questions".
It's everywhere, actually. People are scared of seeming incompetent to the point they actively derogate others who are into learning new skills and lash out whenever they are found to be out of their depth. The cause is obvious; inescapable competition of the ever accelerating capitalism rat race that's driving everybody crazy.
There's a lot to life that's just boilerplate or knowledge of unrelated systems. We should be helping each other figure the stuff out, not verbally (also financially and often physically) abusing each other just because that was the status quo when we were born.
Tech community is actually pretty nice to newcomers, compared to everywhere else. Just look at this for example. Some of the comments are over 20 years old. People were helping each other like that for ages. And then Stack Overflow made it even better.
Imagine if schools and public sector were like that. Oh my, we would be halfway into an utopia.
I once saw programming described as chain problem solving, and I think the description is apt. It’s all about breaking large problems into smaller problems and solving them and thinking in terms...
I once saw programming described as chain problem solving, and I think the description is apt. It’s all about breaking large problems into smaller problems and solving them and thinking in terms of systems.
I mean, I already know the syntax and punctuation of English and (to a much lesser degree) German. Most programming languages are just english with weird grammar. And yes, dyslexia is a...
I mean, I already know the syntax and punctuation of English and (to a much lesser degree) German. Most programming languages are just english with weird grammar.
And yes, dyslexia is a bitch...half of my git commits are 'whoops typo fix'. Turns out most everyone is at least a little bit. And font choice surprisingly helps substantially
Yeah... I'm glad you say that. I wasn't even thinking about crafts, but that's awesome. I feel that some environments overvalue programming while ignoring that many skills they associate with...
Yeah... I'm glad you say that. I wasn't even thinking about crafts, but that's awesome. I feel that some environments overvalue programming while ignoring that many skills they associate with programming are also integral to other fields and activities. There is sometimes a "programming absolutism" that bothers me.
I think that an often underestimated component of this is friction and barriers to entry. Windows has long ruled the roost in desktop computing (though its power is beginning to wane), and as you...
I disagree a bit. I think one of the tragedies of our time is that people have been, at the very least, disincentivized from learning to properly use and maintain the tools around them.
I'm not saying we shouldn't make things accessible...but it's just a bit tragic that so many people consider something so simple as writing a 'hello world' to be some feat of wizardry and not just a fundamental part of using a computer.
I think that an often underestimated component of this is friction and barriers to entry.
Windows has long ruled the roost in desktop computing (though its power is beginning to wane), and as you may know, getting Windows set up for any kind of development isn’t great. Without knowing beforehand or being told, nothing in the Windows experience would ever clue you in that writing software is something you can do with it. None of the tools for any type of programming past basic HTML+JS are bundled and even Microsoft’s own Visual Studio (the IDE) is not straightforward to set up. If you want to write Ruby or Python or other more *NIX-inclined languages it’s even worse. So right off the bat, the majority of computer users are disadvantaged here.
On the other hand, one of the reasons I now work as a software dev is thanks to the iMacs I used as a teenager. Underneath the glossy exterior of OS X was a real *nix command line and bundled dev goodies like bash, Ruby, and Python, plus those machines and OS X upgrade boxes came with a dev tools disc that included Project Builder/Xcode and a full GCC toolchain. It was all there ready and waiting for my interest to be piqued, with tools for whatever level I might want to engage at.
I have to imagine that a lot more kids would’ve developed some rudimentary programming skills had Windows been similarly pre-loaded with tooling all these years.
I think this is where the true "power" of early computers was. When you plugged in a Commodore 64 or Atari 400 (with the BASIC cart in), you were immediately dumped into a programming environment....
I think this is where the true "power" of early computers was. When you plugged in a Commodore 64 or Atari 400 (with the BASIC cart in), you were immediately dumped into a programming environment. Sure, not a great one, but you could start writing code with 0 setup.
Later on I began developing software for Palm Pilot, and a big reason for that was I could run an entire C++ IDE and UI form design program on the Palm Pilot itself. Just Hotsync a few PRC files and I was off and running, able to develop and even compile binaries on the go. It was that low barrier of entry that got a high school kid like myself writing C++ in the back of the car during trips.
These days, even though I work as a software engineer, that massive barrier of entry to any side project typically keeps me from getting past the scaffolding stage.
I know there are people who use javascript for this reason, just press f12 and you get into a javascript REPL, same with being able to modify HTML and CSS.
I know there are people who use javascript for this reason, just press f12 and you get into a javascript REPL, same with being able to modify HTML and CSS.
My first computer was running Windows 98, and that mindset was already entrenched: software is made by corporations and you just use what you're given. It was arguably even more bleak, because...
My first computer was running Windows 98, and that mindset was already entrenched: software is made by corporations and you just use what you're given. It was arguably even more bleak, because compilers/IDEs/etc still tended to cost money and there were few internet resources.
My pathway into programming was finding old books on 80s microcomputers at the library and learning how simple BASIC was, and it planted the idea that programming was something you could just learn to do. The Windows environment very much discouraged that sort of realization.
Within a decade, I moved to OS X and never looked back, for similar reasons.
This idea makes some sense to me, but at the same time -- I only do the most basic arithmetic without a calculator myself, despite having a master's degree and working in software dev, because by...
This idea makes some sense to me, but at the same time -- I only do the most basic arithmetic without a calculator myself, despite having a master's degree and working in software dev, because by and large it's faster and more accurate. Not being allowed to use a calculator in my middle school algebra classes didn't prevent me from relying on it when I grew up. And honestly? Most of my mistakes on math tests in high school were sloppy arithmetic errors that would've been avoided if I'd relied on my calculator more.
It's normal (and to an extent inevitable) for people to start relying on new technology when using it is easier than the previous alternatives. I'm certainly not against teaching more computer literacy in schools, I think it's good to do so. But not every user needs to be a programmer. That's fine. Division of labor is a thing. You probably wear clothes you didn't sew yourself made out of cloth you didn't weave yourself.
That said, it is a good skill to know your way around a needle if you need to mend a tear. You don't need to create the entire shirt (or recreate Microsoft Word), but it is useful to know how to...
You probably wear clothes you didn't sew yourself made out of cloth you didn't weave yourself.
That said, it is a good skill to know your way around a needle if you need to mend a tear. You don't need to create the entire shirt (or recreate Microsoft Word), but it is useful to know how to use tools to accomplish smaller tasks (ie writing a script that automates at tedious task).
I'm not sure what school curriculums look like these days (my son has many years before I find out), but I would love to see some introductory programming classes in schools. I do know there's been a raise of businesses that provide after school programming classes for high school and below kids (see Code Ninjas or The Coding School), which is a great first step.
Genuinely interested: what kind of computing knowledge do you want them to teach your kid? What kind of computing knowledge do you want him to know? There are indeed a lot out there and every...
Genuinely interested: what kind of computing knowledge do you want them to teach your kid? What kind of computing knowledge do you want him to know?
There are indeed a lot out there and every school is trying to teach at least some coding (from what I hear). Is coding really helpful for the next generation with regards to (1) job prospects and (2) feeling empowered to handle computers and tech on their own?
I think it's more of teaching a way of thinking and problem solving. Not only does it improve your technical proficiency (which I believe is extremely important), but you learn a way of designing...
I think it's more of teaching a way of thinking and problem solving. Not only does it improve your technical proficiency (which I believe is extremely important), but you learn a way of designing solutions, logically implementing your solution, and patiently debugging it. These skills are important regardless of future profession!
Oh this is an excellent way of putting it, 100% agree, I think the metaphor works better in that way than I thought.
That said, it is a good skill to know your way around a needle if you need to mend a tear. You don't need to create the entire shirt (or recreate Microsoft Word), but it is useful to know how to use tools to accomplish smaller tasks (ie writing a script that automates at tedious task).
Oh this is an excellent way of putting it, 100% agree, I think the metaphor works better in that way than I thought.
I agree...this is kind of what I was getting at. I don't expect everyone to be able to pump out Firefox. But in the world I'm envisioning...most people would be able to churn out a small script...
I agree...this is kind of what I was getting at. I don't expect everyone to be able to pump out Firefox.
But in the world I'm envisioning...most people would be able to churn out a small script for string or number manipulation. And at least have a better conceptual idea of what the bigger stuff is doing. Maybe write a bug report with more detail than "Broken Down!"
Maybe even create a Gemini client with a few key libraries. We expect high schoolers to write 5 pages of garbage on an old book...I'd say learning to make a Gemini client (with a few key imports) is a lower lift than that.
I work in tech and I couldn't make a Gemini client quickly or easily -- I don't even know offhand what it entails. There's also, of course, the question of usefulness to the user. Why should the...
I work in tech and I couldn't make a Gemini client quickly or easily -- I don't even know offhand what it entails. There's also, of course, the question of usefulness to the user. Why should the average user learn something to create a Gemini client that's 100% useles to them going forward? Would they even learn skills from doing that which would be useful to them as someone who is never going to need to program in their lives?
I think learning some very basic command line prompts for navigating folders and directories, plus basic string and number manipulation in an easy high-level language that's suited for that task, is about all I'd expect "the basics" to entail. Maaaybe how to create chronjobs or something.
But honestly I think non-programing computer literacy is more important - explaining how a computer works on a high level, what memory/RAM is, how to navigate and move/copy files and folders within a file explorer GUI. How to avoid accidentally downloading a virus or clicking a phishing link. Teaching good password management principles. This type of computer literacy is FAR FAR FAR more important and relevant to most people's lives than being able to write a single line of code -- and furthermore is probably the bigger prerequisite to writing a bug report that isn't just "Broken Down!"
I agree, but that's the kind of literacy that should be taught to like 5th graders, at the latest. Certainly before they turn 13. What I'm thinking is like high-school senior project. A...
I agree, but that's the kind of literacy that should be taught to like 5th graders, at the latest. Certainly before they turn 13.
What I'm thinking is like high-school senior project.
A bare-bones, but usable Gemini client in 100 lines of Python. And when you look through it, I don't see anything there that couldn't reasonably be taught in a Programming 101 or 102. I chose Gemini specifically because it strides the nice barrier between simple and complex in a tangible way.
The reason is to make a thing that isn't just little more than a math problem, ala Advent of Code. But to demonstrate that you, being every highschooler in the world, are capable of making a program that does something. Heck, the tooling is good enough now it probably wouldn't be that hard to have them create a LAN-only chatroom.
Much how you don't learn to sew by just repeatedly practicing the stitches of two squares together, eventually you make something.
Scratch is good like that, and part of why I like that good schools are leveraging it in their curriculum.
I don't think thr vast majority of people need to know how to write something like that, and even in a 101 or 102 class in highschool I would focus on other more relevant peogramming projects. A...
I don't think thr vast majority of people need to know how to write something like that, and even in a 101 or 102 class in highschool I would focus on other more relevant peogramming projects.
A world in which everyone knows computer literacy like that before age 13 is a fantasy compared to the world we live in. Maybe in some hypothetical future we get to a place where those things are such fundamental knowledge that they're widely incorporated into elementary school curricula. But given how many adults today don't know that stuff, we should prioritize in teaching adults and teens that stuff before even glancing in the direction of teaching them coding, and we absolutely cannot assume it's something they should already know.
To an extent, I think more people need to make an effort to learn how to self-help, and that would include being knowledgeable operators of their computer. But I don't think they need to be able...
To an extent, I think more people need to make an effort to learn how to self-help, and that would include being knowledgeable operators of their computer. But I don't think they need to be able to write a program to do that, even though it is far easier today than it once was.
But most folks don't know the basics of how to change their OS font size, organize their files, control their peripherals, etc. Simply googling an error message.
But I also think it is easy for people to believe that their interests are under appreciated. As a mathematician, I think everyone should know the basics of calculus. Economists probably wish people knew more about their discipline, history teachers feel the same about history, and so on. The reality is very few people have both the inclination and opportunity to spend any time learning things not directly asked for in their day to day life.
So I don't mind that people don't know how to use the command line or compile a program but for gods sakes I wish they would spend the time to figure out their mics on zoom calls and other similar operational tasks.
Your example of calculators sticks out to me, because this was another area where coding was an accepted part of culture. In school, nearly everyone I knew would write small programs for their...
Your example of calculators sticks out to me, because this was another area where coding was an accepted part of culture. In school, nearly everyone I knew would write small programs for their graphing calculators. Sure, some used it to cheat on tests by writing a program that solved certain equations and showed each step, but they were still exercising that logical thinking approach to problem solving.
As a (somewhat) aside...MIT Scratch reminded me tremendously of the older Lego Mindstorms programming interface. After some diving, turns out it's because it was a collaboration between LEGO and...
As a (somewhat) aside...MIT Scratch reminded me tremendously of the older Lego Mindstorms programming interface.
After some diving, turns out it's because it was a collaboration between LEGO and the MIT Media Lab, both projects headed by Mitchel Resnick.
The old Mindstorms was even simpler for young kids to pick up, given it was oriented for just for controlling a robot based on sensor input and motor output....much easier than the game/animation oriented Scratch.
I was wearing used clothes from cousins with holes in them, and eating periodically spoiled food, but STEM/computing stuff was always top-priority on christmas/birthday list stuff. My childhood...
I was wearing used clothes from cousins with holes in them, and eating periodically spoiled food, but STEM/computing stuff was always top-priority on christmas/birthday list stuff.
I wrote this article about the shift of computing from “personal” to app based and thought this would be a good place to share. Would be interested to hear how the community views this shift, and...
I wrote this article about the shift of computing from “personal” to app based and thought this would be a good place to share. Would be interested to hear how the community views this shift, and if others agree it has come with disadvantages.
I have more thoughts than I have time for at the moment so this is going to be a bit of a list of fragments I'll flesh out later. One thing that struck me was the markdown blog concept (which I...
I have more thoughts than I have time for at the moment so this is going to be a bit of a list of fragments I'll flesh out later. One thing that struck me was the markdown blog concept (which I love) but that it still steered towards (needs supabase?) a 3rd party service to render even when run locally.
The original Celeste (whose anniversary game recently made the rounds here) was written on PICO-8.
I think you have an automistake of 'relieve' instead of 'relive'.
Programming in Excel (even without VBA) is many corporate workers molding of their computer to their needs.
Microsoft's Power platform does allow for low- to no-code automation but not generally local.
Looking forward to hearing more of your thoughts! Really happy with the discussion this article has generated. First off, thanks for the positive feedback on mdJournal! I built it a few days ago...
Looking forward to hearing more of your thoughts! Really happy with the discussion this article has generated.
First off, thanks for the positive feedback on mdJournal! I built it a few days ago to solve my own needs and have been pretty happy with it. I 100% agree though, something so simple shouldn't need a 3rd party service like Supabase, and to be honest, that was laziness on my part. Using a service like Supabase let me prove my idea to myself in a day, whereas something more homebuilt would have taken longer.
I am tempted to move it over to a self-hosted Laravel backend in the near future. Until then, you can actually run it locally without network, the Supabase CLI can spin up a local Docker instance of Supabase! I just need to get the migrations committed to the repo...
I originally had an Excel example in the article, I should have kept it in! I once worked with a professor that wanted us to build a web application based on his prototype. I was shocked when his prototype was a fully interactive Excel sheet that honestly barely resembled a spreadsheet. It had buttons, fields, screens, states, etc. Wildly impressive.
EDIT:
I added migrations and seed data to the mdJournal project on Github, as well as instructions on local development!
Well it's been a little while and I haven't much fleshed out my points (and your Excel comments jibe with what I was going to have a longer post on so I think I'll skip rehashing the whole Excel...
Well it's been a little while and I haven't much fleshed out my points (and your Excel comments jibe with what I was going to have a longer post on so I think I'll skip rehashing the whole Excel is the #1 IDE in the world meme).
I thought of this post when I read https://plausiblydeniable.com/myths-of-the-modern-age/ as a result of clicking around from another post that's near the top of Tildes right now. It is definitely a tangent to your post but I think it reads well and contextualizes aptitude and understanding with computers (whether they are carried in a pocket, bag, or left next to a desk).
The reality is that the amount of people who actually owned a computer, and knew basic or c or assembly or whatever, in 1979 was so monumentally low, that comparing it to the modern era is apples and oranges. The amount of people who know how to code, who tinker with their computer, in the current time is much, much higher on an absolute level than in 1979. It just went from being 100% of 100,000 to 0.01% of 1 billion.
And there's nothing wrong with that. Today, we have options for all. The vast majority of people have no interest nor need to know how their computer works, and certainly not to write applications in it. For the people that do want that experience, there is both a myriad of options in both hardware and software, and a very large community to engage with.
I disagree a bit. I think one of the tragedies of our time is that people have been, at the very least, disincentivized from learning to properly use and maintain the tools around them.
I'm not saying we shouldn't make things accessible...but it's just a bit tragic that so many people consider something so simple as writing a 'hello world' to be some feat of wizardry and not just a fundamental part of using a computer.
When calculators first hit the scene in schools, there was a concerted effort to delay their use until such time that they weren't being used to substitute for learning how to do arithmetic.
No such delay was instituted for computers, nor a solid curriculum established, and the rush to deploy them as rapidly as possible in all sectors everywhere has resulted in a bit of a situation like if we had handed a bunch of first graders calculators and assumed they'd figure out arithmetic on their own. Then act surprised if you take the calculator away in 6th grade and they can't multiply 5x5.
The modern computing curriculum mostly teaches kids to be consumers of computer output. Not creators of it.
It's a bit difficult to assess this kind of opinion in environments that are overwhelmingly STEM or STEM related, which is the case of Tildes. That is typically an audience with a natural inclination towards mathematics.
You're not wrong. But even more than math, programming is about being able to make a list of instructions, to get from A to B. You don't really need more than a 3rd grade level of math to be able to do a fair bit of programming. But you do need to be able to write a list of how to do what you want to do....and enough reading comprehension to be able to translate that to syntax.
If it helps, I feel the education system has failed us just as much by cutting Home Economics, Electronics, Woodworking, and Metal Shop from schools. Nobody should feel that replacing a light switch or electrical outlet in their home is a daunting task.
This attitude of not knowing their tools extends way beyond computers.
I completely disagree, especially if we're talking the 90s.
There's a TON of programming that's just boilerplate or knowledge of unrelated systems. A LOT of effort and tooling has gone into languages and editors to make it that easy, and it's still often filled with "gotchas". Very very often new programmers know exactly what they want to do, and just don't know how to properly tell the system to do it.
For example, hello world in C++
This is NOT intuitive. I don't think i need to explain why.
Java (and essentially C#)
Better, but also not what a beginner would type into a blank editor. What's a class? Does my class need to match my output? What the hell is a public static void main (String[] args)? Why are there "s around the text? Why is there a semicolon on one line but not the others?
Javascript
Ok this looks pretty good. console.log is a little unituitive, but JS's issues stem much more from the tooling around the environment to make up for the languages poor design.
Python
Awesome, now we're actually at just a few rules needed to explain to get someone working. I think python falls apart the higher you go, but clearly this is a MUCH easier onboarding process than so many other options.
and for my personal lang of choice, F#
Oh neat, almost as easy as python. Too bad in order to get this mocked up you probably need to use console commands and it may not compile without a Main function depending on what you're doing.
as a bonus for another popular coder onboarding spot, VBA in excel
So so so much of what stops people from being coders has nothing to do with them not knowing how to do basic instruction sets. It has a lot more to do with the system, and the community, expecting them to have already climbed the knowledge hurdle and just internalize it, and it's not nearly as easy as people make it out to be, especially given how hostile the entire coding community is to "dumb questions".
Very often, people new into wood working know exactly what they want (smooth wooden surface) and just don't know what tool to use to achieve that.
So so so much of what stops people from working the wood themselves has nothing to do with them not knowing how to use the available tools. It has a lot more to do with the system, and the community, expecting them to have already climbed the knowledge hurdle and just internalize it, and it's not nearly as easy as people make it out to be, especially given how hostile the entire handiwork community is to "dumb questions".
It's everywhere, actually. People are scared of seeming incompetent to the point they actively derogate others who are into learning new skills and lash out whenever they are found to be out of their depth. The cause is obvious; inescapable competition of the ever accelerating capitalism rat race that's driving everybody crazy.
There's a lot to life that's just boilerplate or knowledge of unrelated systems. We should be helping each other figure the stuff out, not verbally (also financially and often physically) abusing each other just because that was the status quo when we were born.
Tech community is actually pretty nice to newcomers, compared to everywhere else. Just look at this for example. Some of the comments are over 20 years old. People were helping each other like that for ages. And then Stack Overflow made it even better.
Imagine if schools and public sector were like that. Oh my, we would be halfway into an utopia.
I once saw programming described as chain problem solving, and I think the description is apt. It’s all about breaking large problems into smaller problems and solving them and thinking in terms of systems.
But it's also about accurately reading and remembering syntax and punctuation.
Are there many dyslexic programers?
I would imagine so, but I can’t say to be certain. Modern IDEs and editors with fuzzy-matching autocomplete likely help quite a lot here.
I mean, I already know the syntax and punctuation of English and (to a much lesser degree) German. Most programming languages are just english with weird grammar.
And yes, dyslexia is a bitch...half of my git commits are 'whoops typo fix'. Turns out most everyone is at least a little bit. And font choice surprisingly helps substantially
Intellisense type predicative text things and debugging tools super help though, right?
Yeah... I'm glad you say that. I wasn't even thinking about crafts, but that's awesome. I feel that some environments overvalue programming while ignoring that many skills they associate with programming are also integral to other fields and activities. There is sometimes a "programming absolutism" that bothers me.
I think that an often underestimated component of this is friction and barriers to entry.
Windows has long ruled the roost in desktop computing (though its power is beginning to wane), and as you may know, getting Windows set up for any kind of development isn’t great. Without knowing beforehand or being told, nothing in the Windows experience would ever clue you in that writing software is something you can do with it. None of the tools for any type of programming past basic HTML+JS are bundled and even Microsoft’s own Visual Studio (the IDE) is not straightforward to set up. If you want to write Ruby or Python or other more *NIX-inclined languages it’s even worse. So right off the bat, the majority of computer users are disadvantaged here.
On the other hand, one of the reasons I now work as a software dev is thanks to the iMacs I used as a teenager. Underneath the glossy exterior of OS X was a real *nix command line and bundled dev goodies like bash, Ruby, and Python, plus those machines and OS X upgrade boxes came with a dev tools disc that included Project Builder/Xcode and a full GCC toolchain. It was all there ready and waiting for my interest to be piqued, with tools for whatever level I might want to engage at.
I have to imagine that a lot more kids would’ve developed some rudimentary programming skills had Windows been similarly pre-loaded with tooling all these years.
I think this is where the true "power" of early computers was. When you plugged in a Commodore 64 or Atari 400 (with the BASIC cart in), you were immediately dumped into a programming environment. Sure, not a great one, but you could start writing code with 0 setup.
Later on I began developing software for Palm Pilot, and a big reason for that was I could run an entire C++ IDE and UI form design program on the Palm Pilot itself. Just Hotsync a few PRC files and I was off and running, able to develop and even compile binaries on the go. It was that low barrier of entry that got a high school kid like myself writing C++ in the back of the car during trips.
These days, even though I work as a software engineer, that massive barrier of entry to any side project typically keeps me from getting past the scaffolding stage.
I know there are people who use javascript for this reason, just press f12 and you get into a javascript REPL, same with being able to modify HTML and CSS.
My first computer was running Windows 98, and that mindset was already entrenched: software is made by corporations and you just use what you're given. It was arguably even more bleak, because compilers/IDEs/etc still tended to cost money and there were few internet resources.
My pathway into programming was finding old books on 80s microcomputers at the library and learning how simple BASIC was, and it planted the idea that programming was something you could just learn to do. The Windows environment very much discouraged that sort of realization.
Within a decade, I moved to OS X and never looked back, for similar reasons.
This idea makes some sense to me, but at the same time -- I only do the most basic arithmetic without a calculator myself, despite having a master's degree and working in software dev, because by and large it's faster and more accurate. Not being allowed to use a calculator in my middle school algebra classes didn't prevent me from relying on it when I grew up. And honestly? Most of my mistakes on math tests in high school were sloppy arithmetic errors that would've been avoided if I'd relied on my calculator more.
It's normal (and to an extent inevitable) for people to start relying on new technology when using it is easier than the previous alternatives. I'm certainly not against teaching more computer literacy in schools, I think it's good to do so. But not every user needs to be a programmer. That's fine. Division of labor is a thing. You probably wear clothes you didn't sew yourself made out of cloth you didn't weave yourself.
That said, it is a good skill to know your way around a needle if you need to mend a tear. You don't need to create the entire shirt (or recreate Microsoft Word), but it is useful to know how to use tools to accomplish smaller tasks (ie writing a script that automates at tedious task).
I'm not sure what school curriculums look like these days (my son has many years before I find out), but I would love to see some introductory programming classes in schools. I do know there's been a raise of businesses that provide after school programming classes for high school and below kids (see Code Ninjas or The Coding School), which is a great first step.
Genuinely interested: what kind of computing knowledge do you want them to teach your kid? What kind of computing knowledge do you want him to know?
There are indeed a lot out there and every school is trying to teach at least some coding (from what I hear). Is coding really helpful for the next generation with regards to (1) job prospects and (2) feeling empowered to handle computers and tech on their own?
I think it's more of teaching a way of thinking and problem solving. Not only does it improve your technical proficiency (which I believe is extremely important), but you learn a way of designing solutions, logically implementing your solution, and patiently debugging it. These skills are important regardless of future profession!
Oh this is an excellent way of putting it, 100% agree, I think the metaphor works better in that way than I thought.
I agree...this is kind of what I was getting at. I don't expect everyone to be able to pump out Firefox.
But in the world I'm envisioning...most people would be able to churn out a small script for string or number manipulation. And at least have a better conceptual idea of what the bigger stuff is doing. Maybe write a bug report with more detail than "Broken Down!"
Maybe even create a Gemini client with a few key libraries. We expect high schoolers to write 5 pages of garbage on an old book...I'd say learning to make a Gemini client (with a few key imports) is a lower lift than that.
I work in tech and I couldn't make a Gemini client quickly or easily -- I don't even know offhand what it entails. There's also, of course, the question of usefulness to the user. Why should the average user learn something to create a Gemini client that's 100% useles to them going forward? Would they even learn skills from doing that which would be useful to them as someone who is never going to need to program in their lives?
I think learning some very basic command line prompts for navigating folders and directories, plus basic string and number manipulation in an easy high-level language that's suited for that task, is about all I'd expect "the basics" to entail. Maaaybe how to create chronjobs or something.
But honestly I think non-programing computer literacy is more important - explaining how a computer works on a high level, what memory/RAM is, how to navigate and move/copy files and folders within a file explorer GUI. How to avoid accidentally downloading a virus or clicking a phishing link. Teaching good password management principles. This type of computer literacy is FAR FAR FAR more important and relevant to most people's lives than being able to write a single line of code -- and furthermore is probably the bigger prerequisite to writing a bug report that isn't just "Broken Down!"
I agree, but that's the kind of literacy that should be taught to like 5th graders, at the latest. Certainly before they turn 13.
What I'm thinking is like high-school senior project.
A bare-bones, but usable Gemini client in 100 lines of Python. And when you look through it, I don't see anything there that couldn't reasonably be taught in a Programming 101 or 102. I chose Gemini specifically because it strides the nice barrier between simple and complex in a tangible way.
The reason is to make a thing that isn't just little more than a math problem, ala Advent of Code. But to demonstrate that you, being every highschooler in the world, are capable of making a program that does something. Heck, the tooling is good enough now it probably wouldn't be that hard to have them create a LAN-only chatroom.
Much how you don't learn to sew by just repeatedly practicing the stitches of two squares together, eventually you make something.
Scratch is good like that, and part of why I like that good schools are leveraging it in their curriculum.
I don't think thr vast majority of people need to know how to write something like that, and even in a 101 or 102 class in highschool I would focus on other more relevant peogramming projects.
A world in which everyone knows computer literacy like that before age 13 is a fantasy compared to the world we live in. Maybe in some hypothetical future we get to a place where those things are such fundamental knowledge that they're widely incorporated into elementary school curricula. But given how many adults today don't know that stuff, we should prioritize in teaching adults and teens that stuff before even glancing in the direction of teaching them coding, and we absolutely cannot assume it's something they should already know.
To an extent, I think more people need to make an effort to learn how to self-help, and that would include being knowledgeable operators of their computer. But I don't think they need to be able to write a program to do that, even though it is far easier today than it once was.
But most folks don't know the basics of how to change their OS font size, organize their files, control their peripherals, etc. Simply googling an error message.
But I also think it is easy for people to believe that their interests are under appreciated. As a mathematician, I think everyone should know the basics of calculus. Economists probably wish people knew more about their discipline, history teachers feel the same about history, and so on. The reality is very few people have both the inclination and opportunity to spend any time learning things not directly asked for in their day to day life.
So I don't mind that people don't know how to use the command line or compile a program but for gods sakes I wish they would spend the time to figure out their mics on zoom calls and other similar operational tasks.
Your example of calculators sticks out to me, because this was another area where coding was an accepted part of culture. In school, nearly everyone I knew would write small programs for their graphing calculators. Sure, some used it to cheat on tests by writing a program that solved certain equations and showed each step, but they were still exercising that logical thinking approach to problem solving.
As a (somewhat) aside...MIT Scratch reminded me tremendously of the older Lego Mindstorms programming interface.
After some diving, turns out it's because it was a collaboration between LEGO and the MIT Media Lab, both projects headed by Mitchel Resnick.
The old Mindstorms was even simpler for young kids to pick up, given it was oriented for just for controlling a robot based on sensor input and motor output....much easier than the game/animation oriented Scratch.
Mindstorms brings back memories! I wanted those so much as a kid, but they were well out of budget for my parents.
I was wearing used clothes from cousins with holes in them, and eating periodically spoiled food, but STEM/computing stuff was always top-priority on christmas/birthday list stuff.
My childhood was weird.
I wrote this article about the shift of computing from “personal” to app based and thought this would be a good place to share. Would be interested to hear how the community views this shift, and if others agree it has come with disadvantages.
I have more thoughts than I have time for at the moment so this is going to be a bit of a list of fragments I'll flesh out later. One thing that struck me was the markdown blog concept (which I love) but that it still steered towards (needs supabase?) a 3rd party service to render even when run locally.
The original Celeste (whose anniversary game recently made the rounds here) was written on PICO-8.
I think you have an automistake of 'relieve' instead of 'relive'.
Programming in Excel (even without VBA) is many corporate workers molding of their computer to their needs.
Microsoft's Power platform does allow for low- to no-code automation but not generally local.
Looking forward to hearing more of your thoughts! Really happy with the discussion this article has generated.
First off, thanks for the positive feedback on mdJournal! I built it a few days ago to solve my own needs and have been pretty happy with it. I 100% agree though, something so simple shouldn't need a 3rd party service like Supabase, and to be honest, that was laziness on my part. Using a service like Supabase let me prove my idea to myself in a day, whereas something more homebuilt would have taken longer.
I am tempted to move it over to a self-hosted Laravel backend in the near future. Until then, you can actually run it locally without network, the Supabase CLI can spin up a local Docker instance of Supabase! I just need to get the migrations committed to the repo...
I originally had an Excel example in the article, I should have kept it in! I once worked with a professor that wanted us to build a web application based on his prototype. I was shocked when his prototype was a fully interactive Excel sheet that honestly barely resembled a spreadsheet. It had buttons, fields, screens, states, etc. Wildly impressive.
EDIT:
I added migrations and seed data to the mdJournal project on Github, as well as instructions on local development!
Well it's been a little while and I haven't much fleshed out my points (and your Excel comments jibe with what I was going to have a longer post on so I think I'll skip rehashing the whole Excel is the #1 IDE in the world meme).
I thought of this post when I read https://plausiblydeniable.com/myths-of-the-modern-age/ as a result of clicking around from another post that's near the top of Tildes right now. It is definitely a tangent to your post but I think it reads well and contextualizes aptitude and understanding with computers (whether they are carried in a pocket, bag, or left next to a desk).