Not just young people. As in other creative arts, if the tooling is over-complex or high-friction it can simply kill the creative flow. We should aim to make things pleasant to use for experts as well as beginners. There is a great deal of philosophical resistance to this idea hiding just under the surface, driven perhaps by a sense that difficult interfaces are a test of worthiness. Consider the barrier to entry to create a 'hello world' mobile app - it seems awesomely, perversely difficult compared to the intrinsic simplicity of the task. I would argue that this is deliberate gatekeeping - if ordinary people could create content, this would threaten an awful lot of business models, including and especially the business models of people who run app stores and take a cut of the profits. Can't have the techno-serfs programming, can we?
I don't think it's gatekeeping. I think it's because experts need different tools to beginners, and have louder voices when a tool doesn't meet their needs.
Consider Ruby on Rails. It was the most beginner-friendly way to create a web app when it was popular, but the very things that made it that way - opinionated design, sacrificing speed/correctness/scale by using Ruby, "batteries included", and a cultish fanbase that drew new users to it - made it the target of justified criticism from experts who wanted flexibility, type safety, speed, lightweight design, fewer CVEs, and fewer annoying fanboys. Flash came under fire for similar things: performance issues, poor UX when used in the wrong place, constant security vulnerabilities, being a proprietary standard.
These are actually good criticisms! There's no shadowy cabal who arranged feigned outrage over flash vulnerabilities, people were genuinely upset that a proprietary piece of software was turning their browser security into a sieve and stopping screenreaders from working. The criticisms just failed to ask why it was so popular with beginners anyway.
I agree with much of what you say, but I disagree that RoR was "beginner friendly". It had/has a steep learning curve.
From personal experience, and from the (continuing) weekly HN "Hiring" posts that are looking for Rails devs, Rails is popular because it allows you to build an MVP for an entire product or company over a week. It gets rid of all the distractions when it comes to assembling the perfect stack and just works. It's not perfect by far, but, like Flash, it allows you to shortcut the technical work and get right to the creative work.
Of all of the areas where there is legitimate gatekeeping, like with the AMA and residency limits, software is one of the worst examples you could have picked.
Software is one of those spaces where there is an incredible amount of capital invested in making things easy for the lowest common denominator.
There are so many resources for people of any age and background to learn practical skills in this field. There are summer camps where 7 year old kids learn to program.
Not exactly. Such camps certainly exist, but they're not for everyone. I was tinkering with Linux at 7, but only because I had a technical parent who put it on the family computer. I'd say the important part here was that I wasn't given a coding bootcamp course to go through, I just got to play. Eventually, I figured out how to use single-user to re-set the root password and play as much supertux as I wanted. This probably shaped my passion for technology and "solving puzzles" of a technical nature more than anything else.
I'd say if you really want youth interested in technology, you basically need a "montessori model" for computers. I don't believe that's likely to happen in school; you need funding, which requires measurable results. There's also too much bad stuff on the internet for schools to run that risk at that scale.
There are two rough classes into which I would break "tech guys". The first is the sort who enjoys it for what it is. Shaves yaks configuring his system, tries out new languages for the heck of it, that sort. The second has a perfectly respectable career in software, and enjoys other things when he comes home at five p.m. I'm not saying one is better or worse, but at seven years of age, you'll only have the few of the first type _really_ interested. Type two will often switch to a different toy once frustrated (i.e. upon a serious bug). You can't expect everyone to derive the same level of marginal benefit from just playing with tech.
Type twos necessarily better or worse, but we don't put kids into "plumbing boot-camp" at seven expecting them to develop life-long passions. Maybe a few will, but not many. To put it another way, you'll get a lot more kids into architecture letting them play with legos free-form than handing them a kit and saying, "Build this model by following the instructions."
I had similar experiences to you and definitely fit into the yak-shaving variety (or at least I did before work destroyed my soul).
There's no question to me that early exposure and encouragement makes all the difference in educating kids. I can't understand why we're not engineering experiences in all these different fields for kids to build real stuff that can eventually turn into a trade. If you're a kid, even today, and you want to learn an adult trade young, your options are still pretty much just artist or programmer.
If there was a way to start doctors or lawyers young, maybe it'd make a difference. As a kid, I knew one girl that was a hospital volunteer, and she ended up going to Africa as an adult to try and make the world a better place by helping others. People don't realize how activities in formative years really stick with kids.
Instead of giving kids meaningful work, we're raising a generation that's going to be great at self-promotion and fortnite.
There is a way to start children young to become lawyers and doctors. Lawyers need perfect English. Doctors need perfect English and biology.
Our entire school system is wrong. :)
I am working on it. We force parents to go to school and that is wrong.
The key to rapid education is teaching the correct subjects. All science is functionally math. Physics is math and chemistry is math. Music is math. All written homework is functionally English. Art is functionally understanding of light and shadows, which is best taught through photography. Photography decouples ability to render (drawing) from ability to compose. Until the child is fluent at algebra and written English, teaching other subjects except for athletics relies on the child's innate talent or, more likely, their parents.
There's _at least_ one more critical component you're missing, logic and analysis. It will also be harder to keep a pupil's attention on two subjects for half a day than on a multitude of subjects for forty-five minutes apiece. After three hours being lectured on the same subject, I would get tired even in college; how do you plan to force eight-year-olds to pay attention in such a manner?
In other words, you cannot swap all time for study of english and mathematics and expect to simply achieve twice as much in english and mathematics.
> The first is the sort who enjoys it for what it is. Shaves yaks configuring his system, tries out new languages for the heck of it, that sort. The second has a perfectly respectable career in software, and enjoys other things when he comes home at five p.m.
I have found out that these are not in opposition at all. In fact, workplace that holds you in 80 hours a week largely prevents trying out new tech. People dont stay long because trying out new toys. If they do, then they are being dishonest with employer, honestly. They stay long because of stress, pressure, disorganization, etc.
The conflation of the two really not logical, it does not even makes sense. Why cant you go home at 5 and "try out new languages for the heck of it" wherever you feel like? Should you even try out that new language production project? (you should not)
You're misinterpreting the OP, he's saying that some people do non computer things after 5, not that they work 80 hour weeks. And it's not really the time spent, it's the intellectual approach to computing, where tinkering is an end in itself, vs a more transactional approach.
>Software is one of those spaces where there is an incredible amount of capital invested in making things easy for the lowest common denominator.
This is true for _education_, however the design of the tooling itself, as well as the purely code-based interface with which we like to rely on (no WYSIWYG or visual creative tools) is what makes it creatively difficult
Compare the experience of making some HTML5 canvas game to making a song in modern day DAWs. In the latter there has been so much investment into improving the workflow and the quality of the software to make the creative experience smoother. In programming, almost no effort is put into the creative experience, outside of niche fantasy terminals (e.g. PICO-8)
Actually, if you use Processing with Android mode, it's pretty easy to create a simple app. I made something with circles falling down the screen that you have to tap and they explode in a nice satisfying particle explosion (it was mainly to test and demonstrate the surprising addictiveness of even such a simple game feature). This took about an hour, starting from a clean Processing install, including having to select and install (checkbox + button) the Android mode and writing about 50 lines of code. In all fairness, I'm already quite familiar with graphics programming with Processing, but even that is super easy, I teach it to kids starting from age 10-11 (if they're clever and curious enough).
But these kids, the clever and curious ones, they'll find this on their own too, and truly many more cool and free things to create stuff with online. A few years back, they were all over these free github student developer packs, especially the credits for a Digital Ocean droplet server, which they used to host sites, minecraft servers (IIRC) or Discord bots.
In my experience Flutter does make getting a simple mobile app running quickly easy. It's not a drag and drop experience but the programming model is such that it doesn't take much code to get something interesting.
As an older programmer, Flutter is the closest thing I’ve felt to programming as a kid. It’s given me some hope that the JavaScript era will fade as a dark night of the programming soul. Kudos to the development team that put Flutter together.
ah yes, the famous "intrinsic simplicity" of writing, compiling, and deploying an app to an embedded device...
...perhaps you mean the countless drag-and-drop code-free frameworks that enable people to create apps without writing code? Or that a basic Swift tutorial to do just that takes about 15 minutes, including downloading Xcode? I just can't understand this confused nostalgia.
Ironically, actual embedded devices are far easier to program, with Arduino. You type your code in a window (with all boilerplate and build system abstracted away) and click a button, and boom it's compiled and uploaded and running. This is because it was designed to be easy to use - ostensibly to teach young people, but in practice it means lots of hackers use it too.
It's not the default, but you can have that kind of experience with various toolkits for mobile devices too. I've seen workshops which kids left after an afternoon with their own simple "game" deployed to their phones.
> the famous "intrinsic simplicity" of writing, compiling, and deploying an app to an embedded device.
90% of apps can be replicated as web pages, which are far, far easier to program and deploy. Frameworks do add a lot needless of complexity for little benefit. The reason is not a "test of worthiness" though - the purpose is developer lock-in and make it as much difficult as possible to switch to the competing platform. The only way to win this game is not to play
Why designing most mobile apps should be harder than slamming together VB6 form applications is something that is not entirely clear to me.
Although when people start arguing that programming a web page is easy, it really brings home how awful modern programming is, and how long it has been since there was widespread usage of really decent and simple RAD tooling.
My company has been using expo for mobile development because you can build a React app and expo does all the work to make it work on Android and iOS. It's not perfect but since we're doing React for the web app, it's allowed web devs to become mobile devs with almost no additional training.